4月18日早上去清华参加了腾讯的笔试,总体感觉题目难度适中,但覆盖面很广,并且选择题全是不定项选择,因此要想得分却非常困难。花了一个小时二十分钟,不会的直接放弃,然后轻松的离开了,很多概念名词自己要么已经忘记要么就是根本没有听说过,因此没有必要费时间去思考。

4月20日下午7点过接到腾讯的短信通知参加21日下午三点半的面试。

4月21日到达面试地点,人数众多,当时心里着实惊讶了一番:能招这么多人吗?笔试真的过了这么多人吗?疑问 + 无奈 = 等待HR叫自己的名字。快到三点半时叫到我的名字了,既是高兴有略带紧张。来到面试官面前,先是自我介绍了一番,然后针对简历的内容聊了大概十来分钟,似乎他对我自己写的Pico语言和Fish微型操作系统较为感兴趣,问了些细节问题,如系统调用、BNF文法等。然后就是出题给我做:

  • 第一题是给定一个单链表,编写代码将其节点反序排列。这个问题以前见过,但并不记得具体实现了,我在纸上画了画草图,顺利的写出来了;
  • 第二题是给一个已排好序的整数数组,问怎样从其中找出重复次数超过1000次的元素?我思考了一会儿,先后给出了三种方法,但均不是最优的,他让我继续思考,又过了两三分钟,我没有想出来。

整个面试结束,大概花了20到25分钟。最后面试官似乎对我的表现还算满意,问我是否已经拿到了其他公司的offer,以及什么时候能去实习,感觉希望挺大的。面试官挺和善的,很好交流。总结:当面试官问我对后台开发什么内容或职位感兴趣时,自己回答不上来,因为没有去了解什么是后台开发,这会给人一种目标不明确或不够积极的印象,以后自己要做好相应问题的准备。

晚上11点收到短信通知第二天下午两点再去面试。不知是好是坏。

4月22日,1点41分到达面试地点,今天人数少了很多,很多面试官对面都是空位,没有人去面试?同样的等了大概20分钟,叫到了我的名字。见到面试官,微笑了一下,首先递给他自己的简历,他问我能实习多长时间以及与昨天同样的问题,即对哪些职位或方向感兴趣,我依然没有答上来,他说那就是就职兴趣不是很大,当时心里面似乎叮咚了一下,自己不是这个意思,但也无法反驳他,因为我的确说不上来对什么职位感兴趣,只好说了如果有搜索方向的,自己蛮有兴趣。接着开始做题:

  • 第一题是两个人抽奖,问第一个抽奖的人中奖的概率与第二个抽奖的人中奖的概率一样吗?并在纸上推导出你给出的答案。这个题答案很明显,推导也不难,不要紧张即可,自己顺利过关;
  • 第二题是给一个二叉树,问如何将其写入文件然后又从文件中读取并重建原来的二叉树?即序列化和反序列化问题。对于这个问题,我思考了会儿,给出了一个答案。面试官看了后让我继续想另外的方法,说有几种方法可以做,但是我没有想出另外的办法。问是否可以提示一下,但他笑着说没有提示。此问题便过去;
  • 第三题是给一个二叉树,如何依次对每一层按照从左向右、从右向左的交替顺序进行遍历?同样的,不要慌张,思考了一会儿,给出了一个自己的答案,对传统的层序遍历进行了细小的改动。他听完我的解释,说明白了,然后此题过去;
  • 第四题是在讨论我的Fish微型操作系统时提出的,针对内存管理。大概是这样的:C++中的newdelete用于分配内存,对于某些程序,频繁的进行这样的操作可能会导致内存碎片,问我如果需要频繁的分配不同大小的数据类型元素,会如何设计内存管理方案?我先是给出了一个以前看见的Sun公司工程师发表的论文里提出的一种方案,说完他似乎不太明白,说我说的太抽象了,我心里估计这不是他想要的答案。然后马上换了一种思路,大意是先开辟很大一块内存,根据分配元素的大小维护一系列相应的空闲链表,进行分配缓存。经过一番询问解释,他明白了我的意思,似乎想再追问tricky的细节,又发现我给出的方法避免了他想问的tricky细节,便作罢。唔,纯属幸运……

问题结束后,针对我的简历,问了我的本科学校在哪里?是不是最近才改名称的?我想:西南科技大学又怎么了?发现我是读的北航软件工程专业,以为我是软件学院的学生(注:我从不偏见看待任何学校学院的学生),我不想解释,但还是声明自己是计算机学院软件工程专业,并不是自己想报考这个专业。不想做更多的说明,如果他很看重学校或专业学院,我没有办法,I don’t care.

结束后我问了一下自己的笔试成绩,56分,不比预想的差也不比预想的好,谁知道呢?这个面试官比昨天的那位要更严肃,似乎资历要老些,但偶尔还是会有一丝笑容。总结:与昨天的总结一样。另外,面试的任何时刻不要紧张,放松做题。

傍晚7点过收到短信通知,明天中午12点再去面试。终面?

4月23日早上11点30分到达面试地点,已经有了熟悉的感觉。现场人数相比昨天又少了很多,只见大厅里坐着稀稀拉拉的十几个人,我也坐下等。等到12点半终于叫到我的名字,一看面试官是女的,我想应该是HR了吧。果不其然,问的问题已经与技术无关,我总结为“四个最”:

  • 你最开心的事情
  • 过去三年最有成就感的事情
  • 你最不能忍受的事情
  • 学过的科目中自我感觉最难的

根据回答的情况,HR会追问的更细,或者设置相应的情景问你会怎么应对。面试时长20-30分钟,除了“四个最”,其它的问题还有:自我介绍、业余兴趣、对腾讯的了解、自己的缺点以及是否投了其它公司的简历。所有问题自己都是如实回答的,结果如何,等待吧。

最后HR问我有什么问题没有,我问了两个问题:一是实习生进入公司后的安排流程及任务分配;二是请HR对自己的面试表现做个简短的评价,bad? 总结:要有礼貌;回答问题不要急,有条理的说出来;微笑。

后记

文章中所有提到的面试问题自己都没有写下当时给出的答案,目的是以后自己回过头来看这篇文章时,或许又有另外的思考或解法了。如果你对上面提到的问题的答案感兴趣,欢迎给我发送邮件联系,不过有个前提是你得告诉我你对题目的思考或答案(不一定正确,但的确是自己思考的结果),然后我才会回复并告诉你当时我给出的答案(尽管不一定正确或高效),这样才是真正的讨论与交流。