腾讯一面
- 闭包的产生,弊端及使用场景
- 跨域解决方案以及 JSONP 的具体使用
- 盒模型
- 块级盒子和行内盒子的差别?
- HTTP 和 HTTPS 的差别?HTTPS 什么场景下就会不安全?HTTPS 有什么弊端?如何改进这种弊端?
- COMMONJS 和 ES6 的模块之间有什么不同
- REM 的使用场景,如何设置 font-size 的值
- HTTP 请求方式有哪些?说一下 GET 和 POST 请求的差别
- Web 安全接触过哪些?XSS/SQL注入/CSRF,每一个都深入的问了出现的场景以及该如何防御?(比如 SQL 注入,会问到需要检验的字符有哪些?XSS 会问到攻击脚本里大概需要写什么样的代码?CSRF 问到 token 应该如何生成,如何传递?)
- HTTP 状态码有哪些?其中 400 和 500 分别什么场景下会出现?301 和 302有什么差别?如果要做 SEO 的话,301 好还是 302 好?
- 浏览器中的事件流模型?以及冒泡一般在什么场景下用到(事件委托)?事件委托有什么优点?
- ES6 中的箭头函数的特点?
- Set 结构和 Map 结构?他们之间的区别?
- 介绍自己在项目中遇到的比较棘手的问题,以及如何解决他们的?
腾讯二面
- HTTPS 和 HTTP 有什么差别?
- HTTP2 了解多少?多路复用和 HTTP1.1 的 Keep-Alive 有什么区别?
- 浏览器的性能优化有哪些点?哪些操作能够触发浏览器的回流和重绘?回流和重绘的差别是什么?
- 状态码有没有了解?304 是做什么用的?HTTP 的缓存过程?哪个头部字段才能导致 304 请求(头部字段优先级)?Expires 和 Cache-Control 的区别是什么?Last-Modified 和 E-Tag 的区别是什么?
- Node 中的事件循环机制
- 进程间通信有哪些方式?在 Node 中是如何实现的?
- Node 中是如何管理多进程的?child_process.fork 和 cluster.fork 有什么差别?
- 如何进行组件的版本管理?(可以参考jQuery)
- CDN 的原理?
- 常用的 node 里面的库?如何拿到当前的环境变量?
- 如果 a.com 要迁移到 b.com,如何不修改代码而完成这个替换(不考虑全局替换)
- 如何理解模块化?以及自己平时的模块化实践
- 证书是用来干嘛的?有没有被窃取的可能性?
- 平时自己用的代理工具是什么?如何配置使其能够看到 HTTPS 请求?
- Cookie 和 Session 的区别?Session 必须要靠 Cookie 实现吗?如果不是,还有什么方式可以实现?document.cookie 总是能访问到的吗?
- 如果有 a,b,c 三个 tab 页面,共用同一个 body,很快的依次点击,最终展示的可能是 a 页面。如何解决这个问题?
腾讯三面
整体的问题还是以项目为背景,这里列出一些跟项目关系不太大的问题。
- Node 和 Java 的区别?
- Node 中的多进程是如何实现的?如何监控 Node 中的异常?(pm2)pm2 是如何进行异常监控的?
- Vue 的渲染过程是怎么样的?
- Vue 和 React 的区别?
- Node 为什么是异步的?(事件循环)说一下事件循环的过程?
面试总结
刚过去的三轮面试中,一面主要是基础面试,二面主要是基础 + 实践面试,三面主要是项目面试和其它软实力。在跟面试官对话的过程中,自己也学到了很多东西。以下是一些自己得出的感想:
- 基础知识。其实在校招面试的过程中,主要还是以考验基础知识为主,但是基础并不是死记硬背出来的,而是要学会变通,举一反三。不能够应用到实践中的基础知识不是好的基础知识。
- 实践经历。很多时候,可能从理论到自己真正掌握的知识之间的距离就是实践。很多时候,实践能够给你带来底气,当面试官问你问题的时候,你能够更加笃定的回答。
- 技术深度。往往深度的东西是我们平时很难企及到的地方,但是如果你充满好奇心,想要理解技术原理,不妨去看看源码,仔细思考行为背后的本质,抓住精髓,以后实践的过程中加以运用,可以到达另一层境界。
- 技术热情。热情能够从某个角度反映出你是否愿意花出更多时间来在这个领域深入,越是有热情的人,越有前途。
哈,上面的四点从上到下的难度其实是越来越大的,希望能与广大的秋招生共勉。
最后
腾讯的面试从前到后主要是从基础到实践再到软实力,是有一条非常清晰的路线的,能够考察到一个面试者的方方面面,是一次非常全面的面试体验。
最后想要提的是,三轮面试的面试官人都非常的 nice。与其说是面试,不如说是我在向面试官不断的探讨和请教。在有些问题我的思路可能跑偏或者没什么思路的时候,也都会给我一些引导,打破自己的思维限制,使我可以思考的更加深入。