作为前端面试三部曲的最后一篇,腾讯前端面试经历姗姗来迟。本文主要记录了我参加腾讯2014校招(2013年10月进行)软件开发-WEB前端职位的笔试及面试过程。如果你有意加入腾讯前端组织,本文也许会对你有所帮助。相信我,说不定是非常有帮助。
我之所以特别肯定这篇文章能帮到想去腾讯的你,因为腾讯公司的前端招聘完全不同于其它公司(百度、阿里),无论是笔试还是面试,腾讯公司都很强调后端的技能。笔试及面试过程涉及的内容包括但不限于数据结构与算法、计算机网络、操作系统等知识。尤其是笔试,WEB前端的试卷和后端研发工程师是一样的,120分试卷和前端有关的内容一共有16分(还全是JavaScript相关)。大家可以随意感受下……
当然,腾讯公司在招聘前端时,给出了两个方向,一个是『软件开发-WEB前端方向』(也是我应聘的方向),一个是『页面重构』方向(笔试时试卷发错,扫了一眼页面重构的试卷,CSS内容偏多,涉及布局的知识占大部分,几乎不考数据结构算法类知识)。
前言说的足够多了,下面进入正文。
笔试
笔试是10月13日在清华大学进行的,当时印象深刻的除了前端的试卷(上文提及)外,还有腾讯公司强硬的不给霸笔的姿态。我在答题的过程中,教室外一直有同学在抱怨自己翘了A公司和B公司的面试专门来笔腾讯结果却拿不到机会。
具体涉及技术的笔试内容包括:
- String.prototype.split 的用法,尤其注重考传正则表达式(包括含捕获组)作参数时的用法
- JavaScript 操作符优先级,例 if(0<100<4) 为 true 还是 false
- 变量提升,即先判断一个变量是否存在,再声明这个变量 if(“a” in window) {…} var a = 3;
- 附加题:数组去重(利用Object的key不能重复特性,将数组的每个元素设为Object的key,若key已存在则抛弃即可)
- 附加题:HTTP状态码 200 和 302 的区别,已经获得这两个状态码时浏览器分别如何响应
一面
本来笔试完我就不抱任何幻想能进面试了,因为准备前端面试的这些日子里我几乎就没有看任何前端之外的知识。实际上一面时我看了一下自己的试卷,40分,根本就没有达到及格标准。后来跟面试官聊了一下,说是我附加题做的比较好,所以特别照顾了一下……
这里先奠定一个基调,基本上腾讯的面试官都非常 nice,不会咄咄逼人,也不会因为你答不出来某个问题就面露鄙夷等。
一面主要考的内容包括:
- 设计一个数据库表,包含三张表,然后各种联表查数据(我做的不是很好,只写出了两个SQL,最后一个没写出来)
- 用socket编程实现获取指定网页的title,这里主要考socket编程和正则表达式(我跟面试官说socket不太会,面试官说那你就用你会的方法写,我就来了个 file_get_content 然后 preg_replace 匹配了一下)
- 介绍自己做的项目,觉得最有难度的(这个问题基本上每次面试都被问到了,大家可以好好准备一下)
大概一面就是这些内容吧,然后跟面试官聊了一下腾讯对前端工程师的要求。虽然不知道是否代表了腾讯团队的主流观点,但是面试官表示他们团队的前端工程师不仅会写页面、写交互还要写PHP甚至socket,更有甚者还要涉及数据库设计。感觉这样的全端发展也不错。
二面
一面结束当然就接到了二面的通知,第二天到了一看是腾讯微博的团队。
二面聊的内容主要包括:
- 做的项目,逐个看,逐个介绍
- 响应式布局设计
- 移动端网页适配
- 跨平台事件绑定,包括事件冒泡的处理
- 跨平台固定位置弹窗的实现,解决 IE 6 不支持 position:fixed
三面(HR面)
三面没啥好说的,是HR面,但是之前没有说明,我以为还是技术面,结果傻兮兮的准备了一晚上。HR面是在知春路腾讯视频那个大楼,由于沟通失误,我在这个大楼里从11点20等到12点45(饭点啊……T_T)才有人出来接待我(感谢不知名的两位大哥帮忙联系HR)。
具体就聊了聊我期待的薪资和工作地点等。我希望能回深圳工作,HR大哥表示可以给推荐到深圳那边的团队,这就扯出了后来的四面。
四面
四面前,深圳那边的团队先跟我电话沟通了一下,主要和他们的前端负责大哥聊了聊团队的技术方向和氛围,顺便了解了一下加班的问题。整体沟通妥当后,安排我第二天再去参加一次技术面,由他们在北京的团队面试。
面试地点还是知春路的腾讯视频大厦(其实貌似叫希格玛大厦)。这次面试基本没有问技术细节问题,涉及的内容包括:
- 对新出的Node.js博客程序Ghost有啥看法
- 对CSS动画了解多少
- 响应式布局设计
- WordPress开发经历
- 做的开源项目有哪些,具体是干啥的
- 做的所有项目中印象最深刻的
基本上就是很融洽的聊天,没有太多可以分享的东西了。
目前四面结束,等深圳那边发offer。