本文编写于 224 天前,最后修改于 139 天前,其中某些信息可能已经过时。

问题集锦
年后回来到现在,大大小小的也去面了十几家公司。腾讯、京东、阿里、头条、shopee、百度、大丰收、深信服、平安科技等等,目前收到了其中5家的offer。在此分享一下经历。

自我介绍
要有套路。如何引导面试官问你擅长的领域就看自我介绍了。学历专业简述、项目细说、兴趣特长一句带过。

react和vue你都使用过,说说它们的区别?
推荐这篇文章

vue的源码看过没?说说基本的实现?实现双向绑定的原理?
即使没有实际地阅读过源码,也要找别人分享的博客去了解其中的原理。

推荐博文

说说你理解的虚拟dom?diff算法是怎么做的?
用JS对象模拟DOM树
比较两棵虚拟DOM树的差异
把差异应用到真正的DOM树上
推荐《深度剖析,如何实现一个Virtual Dom算法》

redux和vuex的区别?
摘取尤大的知乎回答:

Vuex 其实是一个针对 Vue 特化的 Flux,主要是为了配合 Vue 本身的响应式机制。当然吸取了一些 Redux 的特点,比如单状态树和便于测试和热重载的 API,但是也选择性的放弃了一些在 Vue 的场景下并不契合的特性,比如强制的 immutability(在保证了每一次状态变化都能追踪的情况下强制的 immutability 带来的收益就很有限了)、为了同构而设计得较为繁琐的 API、必须依赖第三方库才能相对高效率地获得状态树的局部状态等等(相比之下 Vuex 直接用 Vue 本身的计算属性就可以)

所以 Vue + Vuex 会更简洁,也不需要考虑性能问题,代价就是 Vuex 只能和 Vue 配合。Vue + Redux 也不是不可以,但是 Redux 作为一个泛用的实现和 Vue 的契合度肯定不如 Vuex。

说出你知道的所有选择器权重?
important > 内联 > ID > 类 > 标签 | 伪类 | 属性选择 > 伪对象 > 继承 > 通配符

说说你知道的所有伪类元素?(知道多少说多少)
LVHA(LV哈,简单明了)、focus、before、after、checked、disabled、last-child、first-child......很多,就不一一列举了。

你知道的父子选择器和兄弟选择器。
父子 > , 兄弟 +

行内元素和块级元素有哪些?区别是什么?
不知道的童鞋前往前方

你理解的盒子模型?
必问,无非就是围绕css3新属性 box-sizing 的两个值 content-box 和 border-box。

html5所有的新特性?以及对应属性的兼容性(知道多少说多少)
兼容浏览器这个问题,知道一些常用API的就好,也不可能全部记住。像canvas这个兼容性还是要知道的。

实现三列布局,左右固定宽度,中间响应式。兼容性尽量好。
常见的两列布局、三列布局实现要知道,知道2-3种实现方式为上策。而且兼容性方面也要知道,比如用了flex的话就兼容IE10+。

BFC的理解。什么情况会产生BFC。
必问。什么情况下会产生BFC,怎么处理等等。

你知道的ES6新特性?
这里有个注意的点是,常用的一些API要知道基本的实现。比如你常用promise,相关的库如bluebird是怎么实现的。

你知道的所有前端安全知识?怎么预防?怎么测试?
前端安全XSS、CSRF、SQL注入。什么场景会产生这些问题。预防和测试手段,测试手段比较少问。

你知道的http状态码?
必问。常见的状态码和说明必须知道。200、204、206、301、302、304、307、400、401、403、404、500、503

304是怎么产生的还是要知道的。

你理解的cookie?跟session有什么区别?http中设置cookie的头部字段有哪些?
前两个问题自行查阅哈,比较简单。头部字段的话有Cookie和Set-Cookie

你知道的http头部?
通用首部字段、请求首部字段、响应首部字段。这个太多了,平时用到的一些熟悉就好。

Date、Upgrade、Connection、Authorization、Accept、Accept-Charset、Host、From、Referer、Location......

建议阅读图解HTTP。

缓存相关的头部?
分为强缓存、协商缓存去记会简单点。

推荐博文

你知道的所有排序算法?手写快排算法。
前端对基础的数据结构和算法还是要非常熟悉的。这个也经常会问到。

写出所有你知道的git命令。
团队协作方面,版本管理工具。

用ES3实现bind函数。
类似这种API的原理,比如new的过程、Object.create的实现、curry函数的实现也会经常碰到。推荐冴羽的深入系列

js实现继承的方式。
原型链、js实现继承等类似基础的问题都是必考的。这个还是建议阅读冴羽的深入系列,整个系列阅读下来有一个比较深刻的概念。

使用promise模拟一个解决多级回调嵌套问题。
场景解决方案问题。这种方式出现的频率还是很高的。类似比如vue在不使用分页的前提下如何处理海量数据。

平时开发用的工具。
前端常用的一些工具,例如抓包wireshark、fiddler,编码工具vscode、sublime,调试工具浏览器控制台等,webpack、gulp等等。webpack的原理要了解下。

项目开发流程。项目中有什么比较复杂的难点。怎么解决的。还有没优化点。
自由发挥,针对性地突出自己擅长的领域。

平时开发中,有注意设计模式吗?说说你知道的设计模式。
跪!!!但是被问的概率还是蛮大的,需要了解一些基本的设计模式例如单例、工厂、迭代、装饰者、代理等等。

写在最后
还有其他一些的问题在这里就不一一列举了。针对岗位所需的一些技能去发散,这类问题根据岗位要求而定。比如说京东手Q微信业务,对性能方面要求就很高,对CDN相关的技术也要去了解下。同一份简历不要海投,针对每一个岗位要求,适当的改下关键字眼,能够提高面试机会哦,有面试机会就有了一切可能。

主要是想给正在找工作的小伙伴一个全局观。文章并没有详细地给出每道题的答案,但基本都给出了其他大神的参考文章啦。

找工作是一个煎熬的过程,有挫折,有打击,当然少不了收获。希望每个求职者都能斩获合心意的offer!

本文转载自:http://www.bslxx.com/a/mianshiti/tiku/2018/0410/1913.html