# 前端开发面试题 ## 前言 ## [只看问题点这里 ](http://markyun.github.io/2015/Front-end-Developer-Questions/ "Questions") [看全部问题和答案点这里](https://github.com/markyun/My-blog/tree/master/Front-end-Developer-Questions/Questions-and-Answers "Questions-and-Answers") 本文由我收集总结了一些前端面试题,初学者阅后也要用心钻研其中的原理,重要知识需要系统学习、透彻学习,形成自己的知识链。万不可投机取巧,临时抱佛脚只求面试侥幸混过关是错误的!也是不可能的!不可能的!不可能的! 前端还是一个年轻的行业,新的行业标准, 框架, 库都不断在更新和新增,正如赫门在2015深JS大会上的《前端服务化之路》主题演讲中说的一句话:“每18至24个月,前端都会难一倍”,这些变化使前端的能力更加丰富、创造的应用也会更加完美。所以关注各种前端技术,跟上快速变化的节奏,也是身为一个前端程序员必备的技能之一。 最近也收到许多微博私信的鼓励和更正题目信息,后面会经常更新题目和答案到[github博客](http://markyun.github.io/)。希望前端er达到既能使用也会表达,对理论知识有自己的理解。可根据下面的知识点一个一个去进阶学习,形成自己的职业技能链。 **面试有几点需注意:(来源[寒冬winter](http://weibo.com/wintercn "微博:寒冬winter") 老师,github:@wintercn)** 1. 面试题目: 根据你的等级和职位的变化,入门级到专家级,广度和深度都会有所增加。 1. 题目类型: 理论知识、算法、项目细节、技术视野、开放性题、工作案例。 1. 细节追问: 可以确保问到你开始不懂或面试官开始不懂为止,这样可以大大延展题目的区分度和深度,知道你的实际能力。因为这种知识关联是长时期的学习,临时抱佛脚绝对是记不住的。 1. 回答问题再棒,面试官(可能是你面试职位的直接领导),会考虑我要不要这个人做我的同事?所以态度很重要、除了能做事,还要会做人。(感觉更像是相亲( •̣̣̣̣̣̥́௰•̣̣̣̣̣̥̀ )) 1. 资深的前端开发能把absolute和relative弄混,这样的人不要也罢,因为团队需要的是:你这个人具有可以依靠的才能(靠谱)。 **前端开发所需掌握知识点概要:** HTML&CSS: 对Web标准的理解(结构、表现、行为)、浏览器内核、渲染原理、依赖管理、兼容性、CSS语法、层次关系,常用属性、布局、选择器、权重、盒模型、Hack、CSS预处理器、 CSS3、Flexbox、CSS Modules、Document flow、BFC、HTML5(离线 & 存储、Histoy,多媒体、WebGL\SVG\Canvas); JavaScript: 数据类型、运算、对象、Function、继承、闭包、作用域、事件、Prototype、RegExp、JSON、Ajax、DOM、BOM、 内存泄漏、跨域、异步请求、模板引擎、模块化、Flux、同构、算法、ECMAScript6、Nodejs、HTTP、 其他: 主流MVVM框架(React\Vue\Angular)、Hybrid App\React Native\Weex、TypeScript、RESTFul、WEB安全、前端工程化、依赖管理、性能优化、 重构、团队协作、可维护、易用性、SEO、UED、前端技术选型、快速学习能力等; 作为一名前端工程师,**无论工作年头长短都应该掌握的知识点**: 此条由 王子墨 发表在 [攻城师的实验室](http://lab.yuanwai.wang/) 1、DOM结构 —— 两个节点之间可能存在哪些关系以及如何在节点之间任意移动。 2、DOM操作 ——如何添加、移除、移动、复制、创建和查找节点等。 3、事件 —— 如何使用事件,以及IE和标准DOM事件模型之间存在的差别。 4、XMLHttpRequest —— 这是什么、怎样完整地执行一次GET请求、怎样检测错误。 5、严格模式与混杂模式 —— 如何触发这两种模式,区分它们有何意义。 6、盒模型 —— 外边距、内边距和边框之间的关系,及IE8以下版本的浏览器中的盒模型 7、块级元素与行内元素 —— 怎么用CSS控制它们、以及如何合理的使用它们 8、浮动元素 ——怎么使用它们、它们有什么问题以及怎么解决这些问题。 9、HTML与XHTML ——二者有什么区别,你觉得应该使用哪一个并说出理由。 10、JSON —— 作用、用途、设计结构。 **备注:** 根据自己需要选择性阅读,面试题是对理论知识的总结,让自己学会应该如何表达。 资料答案不够正确和全面,欢迎欢迎Star和提交issues。 格式不断修改更新中。 在 github 项目的右上角,有三个按钮,分别是 watch、star、fork,新来的同学注意不要用错了,无休止的邮件提醒会给你造成不必要的信息干扰。 当你选择Watching,表示你以后会关注这个项目的全部动态,以后只要这个项目发生变动,被别人提交了pull request、被发起了issue等情况你都会收到邮件通知。 star相当于是点赞或收藏,方便以后查找。 fork表示你想要补充完善这个项目的内容。 更新记录: 2018-01-14: 公司在招聘前端,使用react技术栈;借此机会更新一波前端框架相关的题目; 2016-10-20: 更新一些已被发现的问题。 2016-03-25: 新增ECMAScript6 相关问题 ### 更新时间: 2018-01-14 爱机车、爱骑行、爱旅行、爱摄影、爱阅读的前端开发攻城师。微博:http://weibo.com/920802999