——虽然我的offer很少,但是拒绝的却很多。这几天终于有时间做一点工作了,整理一下之前几家公司的一些前端面试题和个人心得,可以给想做前端的学弟学妹们参考,以及欢迎各位小伙伴指教~(以下问题排名不分先后,时间长了难免会有遗漏;很多问题面试官都会给一个具体场景记不清了,以及只列出考察的知识点)CVTE侧:http1.0、1.1、2的区别,tcp三次握手,四次握手浏览器缓存机制跨域方法闭包作用域链原型链CSS选择器优先级IE框model和standardboxmodel浏览器兼容性CSShack回调陷阱的理解,你了解promise实现的原理了吗?,每秒一次实现tab点击切换页面和双向数据库优化(糟糕,数据库基本还给老师)如果你的网站服务器1000个请求中有一个请求服务器响应时间为800ms,返回一个502状态码,如何定位问题出在哪里(我不知道背景有什么问题)我熟悉那些技术并介绍相关技术。手写代码:未来生活的简单算法唯品会:介绍自己的一个项目ClosurePrototypeChainCross-domainflexboxHTML5ES6用过什么webpack用过(gulp用的比较多)AngularJS用过什么你了解吗原理(回答了数据绑定、服务、指令、单页路由等,并讲了单页路由的实现原理)浏览器缓存网站性能优化CDN理解的两个方面:浏览器缓存(没错,我又问了一遍)chromeconsole的http状态码用了哪些函数如何计算跳转网页后的渲染时间Angular和JQuery你熟悉哪些JS框架?为什么要来唯品会,投资了哪些公司?你是从哪里拿到了解唯品会的offer的?职业规划和百度聊聊:HTML5运用了哪些新元素和新技术?101-100之间的随机数有哪些排序算法比较熟悉,写一个最熟悉的(回答了八大排序算法,然后厚着脸皮写了一个冒泡...)实现一个简单的Array原型方法(函数很简单,关键是测试对原型的理解)居中未知宽高的元素,使用各种方法(position+translate,flex)jsonp原生实现了常见的http状态码。jsDOM操作有原生的insertBefore函数,但是没有insertAfter函数。实现insertAfter函数的开发环境是什么?linux常用的两方面:如何设置多个window.onload事件(类似jquery,多个$(document).ready()事件可以同时存在)数组的常用操作有哪些,如何删除指定的subscriptelementfromanarray(写完一个方法,面试官问还有没有别的方法,最后写了三个方法,面试官又加了一个)原型(面试官写了一段代码让我说最后输出什么是,是什么原因,很自信的回答了这个问题,回来的路上发现自己写错了。。。)闭包,闭包在前端代码层面的性能密集型操作有哪些在项目中使用,以及如何优化它们(回答频繁的DOM操作可以先缓存元素,算法优化,缓存AJAX,使用更高效的ID选择器,少用通配符或复杂的选择器,少用css表达式,避免重排和重绘,等)了解哪些排序算法,写一个插入排序终端:项目,兴趣爱好,职业规划等,感知的基础很重要。从上面的面试题中我们可以看出,大部分的问题都是非常基础的。另外,在回答一些问题时要冷静。即使您不理解某些问题,也不要惊慌。你应该和面试官愉快地聊天,然后试着回到你理解的内容上。像百度这样的大公司给我的感觉就是很重视基础,重视思想,重视潜力。百度面试官问的每一个问题,回答完基本上都要执行(手写代码比较费时间,所以百度一般不会问很多)。认识到基础的重要性。即使你不知道如何实现一些手写代码题,你也可以和面试官谈谈你的想法。如果你能抓住问题的重点,有条不紊地一步步分析问题,面试官也会赞赏地微笑。面试官会顺着你的思路问很多问题,比如算法为什么要这样实现。这个时候最好回答“我之前考虑过XXX问题,这个方法可以更好的解决XXXX等等”等等,我觉得面试能不能过很多时间和是否契合面试官的问题有关眼睛……所以即使没通过,也不要轻易否定自己。虽然我什么都不懂,但我很自信,我很喜欢。”……采访最后,面试官会问有没有什么想知道的,能问一些进阶的问题可以加分很多,感觉每次问的不是很好的问题就不贴了,欢迎关注跟我讨论一下。。。想到了再补充。我要去学习了。学习使我快乐
