腾讯实习生招聘归来

前情回顾

上周六腾讯实习生招聘广州场拉开了序幕,本着打酱油的心态、抱着看完笔试题目就回来好好为秋招聘做准备的想法,去华工参加了笔试,从此开始了一周的奔波。说来也是挺幸运的,竟然能一路过关斩将到达第三面,接下来只等周二出结果。这里就简要记录下这次参与招聘的过程吧。

笔试:4月12日 14:30

笔试安排在周六的下午两点半,接到短信通知的时候是周五早上八点多,那时候还背完单词,昏昏沉沉的在南馆补觉。收到短信的时候吓了一跳。毫无准备的我看来只能去充当炮灰了。简历截至投递那天跟海彬(华工)聊天,才发现实习招聘在广州那边已经开始有一段时间了。网易、华为、阿里、腾讯广研院笔试都已经考过了,甚至淘宝的网申都截至了。深圳这边还一点风声都没有,实在是后之后觉。

下午在实验室边给解决Server2003不兼容的问题,一边看网上找到的历届笔试题。一点一点的看,效率很低其实,但好歹对笔试题型有了一点了解,对考试的范围也有点底。但…感觉太多东西,复习不过来了。晚上回去又看了一阵网上的腾讯2014校园招聘笔试试题,针对常见的排序算法请教了搞ACM的海哥(海哥第二天参加校ACM比赛还得奖了)。

第二天七点多起,背上小包就搭车去了广州。到华工的时候十一点,海彬作为地主请我吃了饭,然后在图书馆一起刷笔试题。中间小睡了一下,然后就起来准备去考场了。

腾讯把这次笔试的工作包给了51JOB,华工A1-A3三栋教学楼都拿来当考场了。每间教室里,人跟人挨着做,也不怕作弊什么的。在考场里还遇到了吖米,他报了前端(虽然他的专业是电子信息)。

两点半笔试开始,题目分不定项选择题和填空题,外加两道附加题。

考试的内容主要集中在数据结构与算法、C++/C语言编程、计算机基础、计算机网络、操作系统,以及一点点的设计模式、数据库、编译原理、概率论和JavaScript。

数据结构与算法占差不多50%,主要涉及算法复杂度的计算、算法性能的比较、二叉树的概念和高度计算、霍夫曼编码、链表等。

C++/C语言则考察了对这两个语言的掌握程度,像是对指针、数组、结构体使用sizeof运算符得到的值是多少、类的继承、析构函数的调用次序、程序运行时,变量、常量存储在内存的哪些区域里。

计算机网络是网段的划分和TCP/IP协议。

操作系统是磁盘寻轨、程序在不同调度方式下的执行效率的计算。

计算机基础比较杂,有冯·诺依曼体系结构的概念、进制转换之类的。

设计模式是选择题,给出一个概念,选择对应的模式。

数据库是数据库规范化、以及求哪些SQL语句等价。

编译原理问了某个语法属于那种语言。

概率论和JavaScript也是一道简单的选择题。

附加题不记入总分,第一题是:一个宝石鉴定师要去鉴别一批41克以下的宝石,他只能带一个天平和四个砝码,问带重量是多少的砝码合适。这道题想了一会都没有思路,就放弃了。第二题是Unicode转UTF8,给了一张全英文的资料,下面给了三个字符,将它们在Unicode和UTF8码之间互转。一开始看不懂,后来耐心看了下,有了一个猜想,验证了一下,对了,然后就高高兴兴的做出来了。

考完之后觉得还挺简单的,就是不能确定,考虑到那么多人,还是华工、中大、暨大、华师各种牛逼学校的学生,看来没机会了。吃完饭就去广州东站搭车回学校了。

一面:4月15日 14:30

周一那天奶奶和大伯和几个国际友人过来深圳,没课就过去罗湖那边陪他们了。晚上七点多吃饭的时候收到短信,让我周二下午去参加面试,内心是又惊又喜。喜的是竟然能过,惊的是完全没准备,内心非常忐忑。晚上看了面经,问了哥哥、师兄,取了点经验,把基本算法简单过了一遍,第二天在车上的时候还在看面试题。由于需要自己带简历过去,问了同进面试的阿米,他发给我的简历让我觉得打印官方的模板实在是太敷衍了,匆忙连夜赶出了简历。

周二下午两点左右,抵达华工中心酒店,海彬上午面完了,熟门熟路的带我去三楼会议厅签到,又跟指出怎么去客房面试,多亏了他,才不至于手忙脚乱的。进了房间,面试官很和善,也就27、28岁左右吧,互相道了声好,然后开始了面试。

首先是自我介绍。我简要的介绍了自己,突出自己对计算机感兴趣、经常使用计算机、大学时候使用计算机技能参与项目工作的经历。面试官听了我的介绍,根据兴趣,开始问我问题。

首先问我项目方面的,如:软件通过哪种协议跟服务器联系(考计算机网络)。我老实回答http。面试官就开始问我这种方式要是网络出了问题怎么办?我想这是想让我回答TCP和UDP相关的知识吧。由于我对这方面的了解不多,所以我就从网络可能问题的原因来分析,看面试官的样子应该对回答也挺满意的。

然后又问我传输过程中有没有对数据进行加密(信息安全),我就把项目中用到的RSA加密解密说了一遍,还拓展了一下,说数据存储在服务器的时候也是有对关键信息进行加密的,能公开的数据就没有加密,减少服务器的负担。

面试官之后又问了一些项目相关的小问题,然后开始对基础知识进行考察。问题有如下几个:

  1. C++相关知识:如:如何将一长串字符串里的小写字母转换成大写的。我的回答是循环一次,对每个字符进行判断,将小写的加上一个值,变成大写。面试官又问,能不能不通过比较?进过短暂的思考,给出了我的想法,但还是需要判断,还好这个时候面试官给了个提示:空间换时间。马上想到了哈希的方法。还有就是给出一个数据结构,问这个数据结构在内存里占多大的空间,这个很简单,然后面试官又问了,那么采用四字节对齐呢?这个概念其实不熟悉,但还是根据自觉给了答案,回头查了下,还真说对了。
  2. 基本算法的考察:这里问了我几个排序算法的运作原理和算法复杂度,快速排序和插入排序的实现原理,二分查找的时间复杂度。由于这几个问题之前有补过,所以基本上能马上反应过来,给出答案。在二分查找这题,面试官听了答案之后还装作很疑惑的问我,你确定?害我又思考了一段时间,后来还是坚持答案不改,差点怀疑自己了。
  3. 现场笔试题:第一题目是实现strlen方法;第二题是写快速排序的算法。前一题很简单,我觉得考察的是编码的时候对特殊情况的处理,比如传进来一个空指针,所以我对这种情况进行了处理,返回了0,又注释说抛出异常更合适。第二题其实内心没有把握, 对快排的印象就是维基上看到的那张图片了,根据这点那张图,在草稿纸上写了一段,又想了一段时间才做出来。

交完卷就面试官又问了几个问题,还重点问了有没有接触过网络编程。我说计算机网络还在学,但是学Java的时候有Socket编程的经验(计算机网络还是逃不了)。然后面试官就针对这个又问了一些问题。然后就结束了。走的时候又问了面试官什么时候出结果,解释说想着今晚要不要回深圳,面试官说,还是留一天吧。出来的时候看了看表,发现面了41分钟,竟然能这么久,真不可思议。

回来跟阿米说了这事,他说你这有戏。五点多的时候,阿米查出结果,挂了。我查到九点,还是没结果,海彬那时候也查出结果,挂了,想着自己也是这种命运,就失望的回了深圳。11点多到科苑的时候,收到短信,通知周四11点半去二面,猛地就满血复活了。

二面:4月17日 11:30

周三的时候在宿舍改着程序,想着抓紧时间把工作做完,晚上就去广州候着。四点多的时候接到面试官电话,问我有没有时间去那边复试。OMG!我只能老实说我在深圳,然后面试官听了之后表示理解,让我明天按通知的时间去面试就好。

当天晚上搭了8点的车去了,晚上借住在中大的同学宿舍,第二天八点半出门去大学城。到华工的时候已经十点了。找海彬寄放了书包就奔赴华工中心酒店。之前看面经说第二面虽然还是技术面,但问的主要是项目上的问题,比一面基础面要简单。但当我看到前面那哥们进去那么久还没出来,我就知道这次面试不会那么简单了。

果然,一开始依旧是简短的自我介绍,然后面试官问了个问题:你觉得大学的课程里,哪些课程你学得最好?我当时唯一想到的竟然是操作系统。面试官就和蔼的说:那好,我们来交流下操作系统。然后开始问了一堆操作系统的问题。比如:用户态和系统态在什么时候进行切换?平时用的都是64位系统吧,那它和32位系统相比,有什么区别和优点?当时我感觉面试官已经两枪把我打死了。硬着头皮把脑袋里仅有的东西倒出来了。

然后面试官又问了两个问题:

  1. 第一个问题:给定两个数集,第一个有三千个元素,第二个有三千万个元素,求他们的交集。这题前不久跟森哥讨论过,当时想到一个方法,复杂度是是O(n),也就是先用哈希表或者数组,以前三千个元素的值作为键或下标,将值赋为0,之后再遍历一次三千万个元素的数组,若找到对应的值,则将值赋为1,最后将哈希表或数组内值为1的元素的键或下标输出即可。可惜面试官不满意,说使用哈希表性能不够,想要优化。我说先排序再二分查找,但是复杂度就变成O(nlogn)了,变差了。之后又想了很久,还是没想出来。面试官给了提示,说可以预处理一下,但依旧无解。
  2. 第二个问题:有一栋M层的写字楼,从第一层到第M层分别有N1、N2…Nm个员工,共N人。假定电梯只停在某一层楼,人们通过上下楼梯到达自己的楼层,问停在那层能让员工上下楼梯的总层数最少。这道题完全蒙掉。竟然还将它类比到哈夫曼编码上去了,又列了方程组,结果都没算出来。跟面试官说了思路,直觉跪掉。

最后面试官又问了几个问题,没怎么记住了。结束的时候又问了面试官对我今后的学习有什么建议。面试官说腾讯还是挺注重基础的…项目只是加分项…我感觉膝盖中了一箭。

面试出来后心情很down,跟初中高中同学吃了饭,去广东财经大学逛了一圈,又跟马总逛了他的大学——南方医科大学,见识了南医那气势澎湃的建筑,又见了妹妹。七点多去东站准备回深圳。不得不说高峰期的广州地铁真可怕,一车的人挤得不抓什么东西也不用担心摔倒。到了东站的时候不死心又查了一次,竟然发现状态变成了HR面了!!激动得在东站走来走去,不知道怎么表达才好。

三面:4月18日 12:00

晚上找海彬,在华工借宿。

第二天去208房面试,面试官很随和,也就是聊聊天,问了家庭基本情况,个人兴趣爱好什么的,我说我喜欢跑步,还提了深圳百公里的事,面试官眼睛就亮了,说本来也要去的,可惜出差了。了解完之后,问我有什么想问的,我就问了两个问题:一个是腾讯内部怎么看待QQ和微信之间的关系;另一个是,内部人员怎么看待别人对腾讯抄袭的指责。面试官都给了回答,尤其是第二个问题,符合我对腾讯的认识:走别人的路,但把路建设得更好。创意本无专利,也只有那些有道德洁癖的人,才会指责抄袭创意吧。在QQ邮箱上,我看到了腾讯很多体验上的创新,这个也是我对腾讯改观的原因。

至此整个面试就算结束了。面试官说结果会在周二通知,希望能过。这一路走来,其实挺坎坷的。虽然不知道每一轮的淘汰率有多高,但每轮参与面试的人越来越少,不免有种一将功成万骨枯的感觉。

总结

这次经历,我发现,平时学习学的都比较抽象,但到了笔试和面试,考察的确实具体的东西,所以在平时的学习中,不仅要适当抽象,也要记忆具体。

而在面试中,更要表现得自信,要敢于将自己的思维展露在面试官面前,这是面试官了解我们的唯一方法。也是我们展示自己优势的唯一途径。

最后,要知道面试官也是人,适当的表现出人的特点也是好的,三面的时候跟HR聊天聊得还挺开心的。

后记:2014-04-24

网上看到的面经里,常说到了HR面之后基本不刷人。也就是基本而已。周六周日还能轻松度过,但到了周一,大家就开始不淡定了。周一没发,等周二。然而周二还没发。为了等Offer手机都不敢关了。后来周三下午五点半,MIG的Offer第一个飞出,顿时等通知群炸开了窝。

而我,等到了晚上十点都没有通知,内心不能说不郁闷。好在此时发现,三面在同一个房间的人都没有收到通知,这才安心等到了周四。下午两点半,SNG的Offer终于发出,焦急地等待自己的Offer,上着课,随时准备夺门而出接电话。看着别人拿到Offer,嘴里说着恭喜,内心却焦躁得不行。好在三点左右,Offer来了。紧绷的心终于安定下来。

很能理解那些现在还没等到Offer的同学焦灼的心理。这才真正感受到一将功成万骨枯的感觉,就业竞争的压力实在是大。希望他们也能早点拿到心仪的Offer。

以上,就是我参加2014年腾讯实习生招聘的经历。

That's all, BUT NOT ALL.