腾讯前端面经

关键词: 二本、应届

这篇文章总结了一下我从投递简历到拿到 Offer 的全过程,希望能给大家提供一点点的帮助和参考

时间线

首先说一下自己面试投简历的时间线吧。( 2019年3月,腾讯春招应届补录 )

  • 3号: 开始投递简历。
  • 4号: 中午发现 CSIG 事业群有应届补招名额,遂发邮件自荐。当天晚上收到一面预约电话。
  • 5号: 下午 2 点,一面,初试。初试完,官网状态变为 复试。
  • 6号: 收到二面预约电话。
  • 7号: 下午 4 点,二面,复试。当天晚上,状态变为 HR面试。再晚一点,收到了 HR面试 的时间确认( 未提前电话联系预约时间 )。
  • 8号: 上午 10 点,按照前一天的通知的时间进行了 HR面试。当天晚上状态变为 “已完成所有面试”。
  • 14号: 下午,收到了Offer Call 和 Offer Mail。

一面(40分钟)

面试题

  1. 结合你做过的项目自我介绍一下吧(我没听清前半句,直接简单自我介绍了一下)
  2. 最近的项目(继续上一问,想让说一下项目相关的)
  3. 项目用的前端框架、使用了哪些框架
  4. 前端页面路由的权限实现
  5. 后端怎么做鉴权的 ( 水平鉴权?这个名词没听清 )
  6. 每一次访问的时候在 KOA 里面是怎么实现 (后端鉴权) 的
  7. 有考虑使用中间件的方式来做 (后端鉴权) 吗
  8. CSRF 是怎么来做的
  9. CSRF 的原因是什么 (这部分他想问的是 CSRF 的攻击过程和原理)
  10. 防御 CSRF 的 Token,是从哪个地方获得的( 我前两问回答的防御方法是在 header 里面放自定义 Token )
  11. 登录是否是通过 Cookies 来做的
  12. 如果浏览器不支持Cookie,想要做登录验证的话通过什么方式?(这边他想问的是 SESSIONID 的传递方法)
  13. 做这个系统的时候有考虑性能上的问题吗
  14. 发一个ajax请求到后台,那么会经过哪些阶段才会重新回到前端(这个问题应该是经典问题“输入 url 之后发生的事情”的变种)
  15. 追问,从服务器端返回回来的时候会经过哪些阶段
  16. KOA 有哪些特性,Express 有用过吗
  17. KOA 有什么特点(这边想要问的是对 KOA 的了解)
  18. Vue,组件相应的封装有做过吗
  19. Vue、ElementUI 从 input 选一个非常大的组织机构(树形)怎么做(这边想要问的是层次选择器、异步搜索补全)
  20. Vue 父子组件通信的方法
  21. Vue 里面 computed、watch、data 的各自适用范围
  22. 追问, watch 和 computed 的区别(因为我上一问没有解释清楚 watch 和 computed ,这边其实想问的应该是 watch可以用来异步操作,但是我只是解释了一下 computed 本身可以作为数据来使用而 watch 一般用来做回调)
  23. 如果要用 watch 来做一个双向绑定的话怎么做
  24. 前端跨域有相关了解吗
  25. 追问,Nginx配置来进行处理跨域(这边是因为我上一问没有讲到后端代理的跨域方式)
  26. webpack 做了哪些工作 (这边应该是问的webpack的原理和做的事情,我有点紧张,没答到点子上)
  27. 追问,webpack 做代码混淆是怎么做的(这边应该是继续考察 webpack 流程)
  28. 追问,webpack 压缩代码时遵循的原则(这边应该是要考察 CommonJS、CMD、AMD 等模块打包规范,我还沉浸在上一问的压缩打包里面,没答到点子上)
  29. ES6 方面有相应的涉及吗(考察对新规范的了解,我本身了解和使用都比较多,但是比较紧张,只说了一下 let 和 class、promise、async 之类的,没提 对象和数组 的 解构和字面量表达式)。
  30. 你有什么问题要问我的吗。(标准流程)

总结

这个面试官给我的感觉是很专业,虽然提问基本是按照标准法来的,但是比较有章法,从我的回答一点一点展开出其他的问题。

其实现在总结的时候才发现有很多的问题,因为紧张或者其他原因,没能一下子回答到点子上,但是还好面试官人比较 nice,后面都通过追问,帮我补上了。

二面(40分钟)

面试题

  1. 你先做一个自我介绍吧
  2. 讲一个你最近负责的项目,有用到过哪些知识点
  3. CSRF Token是怎么实现的(一面问过,我这里干脆直接展开把前后端全讲了)
  4. 追问,客户端从哪里拿到拿到 Token 的 (我回答的是服务器端直接公开一个接口来给CSRF Token)
  5. 追问,这个接口是怎么防止 CSRF 的呢(感觉是一个陷阱问题,我回答的是由于浏览器有同源策略,所以 js 拿不到Token 数据,退一万步,也可以在服务器上对这个接口进行referer检验)
  6. 追问,为什么其他接口需要 CSRF_token 呢(这边其实也像是一个陷阱问题,我主要回答了 CSRF 的原理,是利用了访问 url 可以直接执行操作)
  7. Vue 的实现源码有看过吗(我答的是没有特别研究过,只看了 definePrototype 的实现响应式数据的部分)
  8. Vue 的虚拟 Dom(考察对 VNode 的了解)
  9. VNode 是个什么样的形式 (我答的是 大概就是一个树形递归的数据结构,保存了特定 tagName 和 attributes )
  10. 打开浏览器,输入 URL ,按回车,到页面展现完成,发生了哪些事情(我这边直说我看过相关的面试题,然后根据自己的知识大概回答了一下)
  11. 追问,你刚才说的协商缓存的具体过程(说真的,上一个问题之所以历久弥新,不是因为这问题简单,而是你不管怎么回答,总会抓住你的回答的东西来继续深问,比如我上一问炫技地多说了一句浏览器的协商缓存环节)
  12. 追问,浏览器拿到页面之后,后面的渲染呢(这是上上问的打开页面的后半部分的问题)
  13. TCP 的三次握手是哪三次(三次握手中的 SYN 和 ACK 的状态)
  14. 追问,为什么需要第三次握手,没有第三次握手会有什么问题吗(这边考察的是为什么握手次数是三次,网上的原理说是,如果没有第三次握手,服务器端不能确保对方的信息能够正常接收。我回答的略有些偏题,我回答的是,如果需要确保消息的绝对有效传输,会递归的无限回复上一条消息的状态,三次是一个性能和效率折衷的选择)
  15. 实现 ajax 跨域有那些方案(这次我直接把后端代理说了)
  16. 如果有用户反馈说网页打不开,你要怎么定位(开放性问题,考察你对解决问题的时候的想法是否全面)
  17. 页面上面展示一个实时刷新新闻列表,怎么实现(主要考察服务器向客户端发送消息,轮询、长连接、websocket之类的)
  18. 追问,然后点击新闻标题,弹出一个水平垂直居中的浮层(我这边直接说了可以用绝对定位或者 flex布局 )
  19. 追问,点击事件怎么绑定呢(考察事件委托)
  20. 追问,怎么取到那个对应的元素(click event 的 target 属性 )
  21. 追问,事件委托利用了事件的什么特性(事件的捕获和冒泡过程)
  22. 你最近有在哪里实习过吗(我没有实习经验,如果有知名公司实习经验的话应该会比较加分)
  23. 追问,那你前端是怎么学的,之前的那个项目是怎样去做的
  24. 你是哪里人
  25. 优化网页性能的话,你知道哪些方案?(开放性问题,我从服务器端静态文件到客户端首屏渲染都说了一些)
  26. 追问,为什么需要合并请求(上一问我提到了合并请求来加快加载速度,这里我回答的是浏览器对单个域名的并发数是有限的,另外合并请求也可以加速文件下载,没有频繁的建立连接过程)
  27. 追问,HTTP2 呢( 我上一问提到了 HTTP 1.1 不支持链路复用 )
  28. HTTP2 支持链路复用那还需要合并吗(我这边头铁,直接回答的需要合并,事实上应该也是需要的,这个问题可以转化成 下载一个 100K 的文件快还是下载 10 个 10K 的文件快,在 TCP 有固定帧长度的情况下,其实合并的话,TCP的数据帧应该会少一点,但是 HTTP2 毕竟支持链路复用,应该也就是 1 秒和 1.2 秒的差距。不合并也有好处,比如更新某一个模块不需要重建整个打包文件的缓存,只需要更新对应模块的缓存就好了)
  29. 你平常做项目都是一个人做吗
  30. 智力题,我们现在玩一个游戏,在一个大的圆桌上,吃饭的那种,在上面摆象棋,每个人每轮摆一个,直到某一个人不能在空白的地方继续放下,就算输,那么你有必胜的方法吗(网上有方法,第一个人摆在正中心,同心圆,然后不管第二个人怎么摆,第一个人都和他玩中心对称。但是我当时比较紧张,直接头铁的说第一个人必赢,理由是如果有一个必胜的方案的话,那么第一个人就可以完成这个方案,实际上这样解释比较勉强)
  31. 你是19年毕业吗,本科还是?
  32. 之前怎么没有出去实习?(这些问题一定要好好说,HR 面也会问到)
  33. 你现在的想法是怎么样?(我这边是如实回答了。建议各位别想着说考研了,有哪家的HR会喜欢一个随时弃坑去考研的)
  34. 你有没有什么问题想问的。(标准流程)

总结

这一面和第一面的感觉不太一样,因为进到复试了,其实自己也蛮紧张,有几个问题答得都不是很好。这一面的话面试官会追问的比较深,主要考察你是不是真的做过这个项目,是不是真的能够解决这些问题。

面试官也很 nice,最后也坦白跟我说了,我的自学能力还不错的,虽然没有合作开发的经验,但是这些都可以后面慢慢学习。

另外就是面试的时候,最后提问可以有一点意思,不要简单的就问一下面试官是什么部门的,这就放弃了一个深入交流或者让面试官对你耳目一新的机会;也不要问对 xxxx产品/事件怎么看,很容易被揪住你的观点反问你一波,这些地方其他面经都会有一定的指导,我就不献丑了。

HR面(30分钟)

总结

HR 的问题没什么好写的,基本就是询问家庭情况,对于工作城市、事业群 家人是否支持。

另外会着重考察你的性格和生活,比如让你说说自己的缺点和优点,说说大学期间给你压力最大的一件事,然后根据这些,展开细问,考察你的性格,做事风格之类的。

这个地方没有什么面经可以分享,大家如果自身道德素质过关,问心无愧的话,如实讲就好。

最后总结

我的经历可能很难重现,投简历的时候也没有内推,机缘巧合看到了有事业部说有补招名额,于是主动发邮件自荐的,当天晚上就被那个事业部的面试官捞起来了。

身为一个本二学历的学生,其实进大厂还是一个蛮高的目标,一开始也对自己信心满满。虽然只用了10天左右就拿到了腾讯的 Offer,但是这 10 天里面天天都很煎熬,毕竟春招是最后一个进大厂的机会了,而今年寒冬各个公司又都开始缩招,压力非常大。每一轮面完都会在网上到处搜被刷掉的几率有多大,尤其是 HR 面结束以后,非常紧张,生怕由于某些原因最终没能拿到 Offer,尤其是这期间阿里关闭了春招入口,投的其他公司又都杳无音讯。

如果是学弟学妹看到这篇文章,别犹豫,赶紧去参加暑期实习生招聘,据说技术岗暑期实习生转正率在 60% 以上。目前暑期实习转正据说占用了每年校招 50% 的名额。

如果你是应届生,不要放弃,有实力,鹅厂真的不怎么看重学历(我投的某些二三四线小公司直接笔试面试的资格都没给,就把我 PASS 掉了)

标签: 面经, 前端, 腾讯

添加新评论