本文总结了一些常见前端面试(多数源于网络),希望阅后也要用心钻研其中的原理,重要知识需要系统学习,透彻学习,形成自己的知识链。
面试有几点需要注意:(来源程劭非老师 Github:@wintercn | Weibo:寒冬winter)
-
面试题目: 根据你的等级和职位变化,入门级到专家级:范围↑、深度↑、方向↑。
-
题目类型: 技术视野、项目细节、理论知识型题,算法题,开放性题,案例题。
-
进行追问: 可以确保问到你开始不懂或者面试官开始不懂为止,这样可以大大延展题目的区分度和深度,知道你的实际能力。因为这种关联知识是长时期的学习,绝对不是临时记得住。
-
回答问题再棒,面试官(一般是你的直接领导面试),会考虑我要不要这个人做我的同事?所以态度很重要。(感觉像是相亲一样)
-
资深的工程师能把absolute和relative弄混,这样的人不要也罢,因为团队需要的你这个人具有可以依靠的才能(靠谱)。
另外:
资料刚刚收集,覆盖面比较广,包括了web端、移动端的知识点,根据你自己的需要选择性阅读即可。
再次提一下: 看 或 背 面试题不像学校考试,死记硬背是没什么用的,看面试题是对理论知识的总结让自己表达的时候知道怎么说。
答案有些不够正确和全面,问题问的不够好,欢迎补充你所知道的答案、技巧、题目;最好是现在网上找不到的。
格式不断修改更新中。
1.Doctype作用? 严格模式与混杂模式-如何触发这两种模式,区分它们有何意义?
2.行内元素有哪些?块级元素有哪些? 空(void)元素有那些?
3.CSS的盒子模型?
4.link 和@import 的区别是?
5.CSS 选择符有哪些?哪些属性可以继承?优先级算法如何计算? CSS3新增伪类有那些?
优先级为:
CSS3新增伪类举例:
6.如何居中div,如何居中一个浮动元素?
-
给div设置一个宽度,然后添加margin:0 auto属性
-
居中一个浮动元素
7.浏览器的内核分别是什么?经常遇到的浏览器的兼容性有哪些?原因,解决方法是什么,常用hack的技巧 ?
8.html5CSS3有哪些新特性、移除了那些元素?如何处理HTML5新标签的浏览器兼容问题?如何区分 HTML 和 HTML5?
-
HTML5 现在已经不是 SGML 的子集,主要是关于图像,位置,存储,地理定位等功能的增加。
-
移除的元素
9.你怎么来实现页面设计图,你认为前端应该如何高质量完成工作? 一个满屏 品 字布局 如何设计?
10.常使用的库有哪些?常用的前端开发工具?开发过什么应用或组件?
-
Javascript原型,原型链 ? 有什么特点?
12.列出display的值,说明他们的作用。position的值, relative和absolute定位原点是?
13.页面重构怎么操作?
14.语义化的理解?
15.HTML5的离线储存?
16.为什么要初始化CSS样式。
-
因为浏览器的兼容问题,不同浏览器对有些标签的默认值是不同的,如果没对CSS初始化往往会出现浏览器之间的页面显示差异。
-
当然,初始化样式会对SEO有一定的影响,但鱼和熊掌不可兼得,但力求影响最小的情况下初始化。
*最简单的初始化方法就是: * {padding: 0; margin: 0;} (不建议)
17.(写)描述一段语义的html代码吧。
-
语义 HTML 具有以下特性:
18.absolute的containing block计算方式跟正常流有什么不同?
19.position跟display、margin collapse、overflow、float这些特性相互叠加后会怎么样?
20.对BFC规范的理解?(W3C CSS 2.1 规范中的一个概念,它决定了元素如何对其内容进行定位,以及与其他元素的关 系和相互作用。)
21.iframe有那些缺点?
22.css定义的权重
23.eval是做什么的?
23.写一个通用的事件侦听器函数
24.99%的网站都需要被重构是那本书上写的?
25.什么叫优雅降级和渐进增强?
26.Node.js的适用场景
27.WEB应用从服务器主动推送Data到客户端有那些方式?
-
通常可以做一些小练习来判断TA的水平,js 虽然很灵活,但是具体的代码和实现方式能体现出一个人的全局观,随着代码规模的增长,复杂度增加,如何合理划分模块实现功能和接口的能力比较重要。(下面例题)
1.创建一个对象
2.谈谈This对象的理解。
3.事件、IE与火狐的事件机制有什么区别? 如何阻止冒泡?
4.什么是闭包(closure),为什么要用?
-
待完善
-
执行say667()后,say667()闭包内 部变量会存在,而闭包内部函数的内部变量不会存在.使得Javascript的垃圾回收机制GC不会收回say667()所占用的资源,因为 say667()的内部函数的执行需要依赖say667()中的变量。这是对闭包作用的非常直白的描述.
5.如何判断一个对象是否属于某个类?
使用instanceof (待完善)
6.new操作符具体干了什么呢?
7.JSON 的了解
8.js延迟加载的方式有哪些
- defer和async、动态创建DOM方式(用得最多)、按需异步载入js
9.ajax 是什么?ajax 的交互模型?同步和异步的区别?如何解决跨域问题?
-
待完善
-
ajax的缺点
- 跨域: jsonp、 iframe、window.name、window.postMessage、服务器上设置代理页面
10.模块化怎么做?
立即执行函数,不暴露私有成员
11.对Node的优点和缺点提出了自己的看法:
12.异步加载的方式
13.告诉我答案是多少?
14.JS中的call()和apply()方法的区别?
例子中用 add 来替换 sub,add.call(sub,3,1) == add(3,1) ,所以运行结果为:alert(4);
注意:js 中的函数其实是对象,函数名是对 Function 对象的引用。
15.Jquery与jQuery UI 有啥区别?
16.jquery 中如何将数组转化为json字符串,然后再转化回来?
jQuery中没有提供这个功能,所以你需要先编写两个jQuery的扩展:
17.Javascript中的作用域与变量声明提升?
-
前端开发的优化问题(看雅虎14条性能优化原则)。
http状态码有那些?分别代表是什么意思?
一个页面从输入 URL 到页面加载显示完成,这个过程中都发生了什么?(流程说的越详细越好)
你所知道的页面性能优化方法有那些?
除了前端以外还了解什么其它技术么?你最最厉害的技能是什么?
AMD(Modules/Asynchronous-Definition)、CMD(Common Module Definition)规范区别?
18.谈谈你认为怎样做能是项目做的更好?
19.你对前端界面工程师这个职位是怎么样理解的?它的前景会怎么样?
20.加班的看法
21.平时如何管理你的项目,如何设计突发大规模并发架构?
-
那些操作会造成内存泄漏?
23.你说你热爱前端,那么应该WEB行业的发展很关注吧? 说说最近最流行的一些东西吧?
24.你有了解我们公司吗?说说你的认识?
25.移动端(比如:Android IOS)怎么做好用户体验?
作为一名前端工程师,无论工作年头长短都应该必须掌握的知识点有: