去年参加的这场面试,当然现在早已有了结果,我没有通过面试,但整个过程我觉得很值得记录,同事推荐了卧龙阁,写了两天,今天在卧龙阁上发表,希望大家去面试腾讯的时候能有一些参考。
4月23号,笔试
由于笔试签了保密协议,所以具体题目我就不能细说了。我投的位子是软件开发——网络安全方向的。之前见有同班同学投了淘宝的网络安全很水,就过了,所以腾讯这次就想着腾讯的网络安全应该也很水,可以混过去。结果笔试前看了一下往年的题目,发现没有一题会,整个人都囧掉了。没办法,考前就只能将《密码学与网络安全》看了一遍就上阵了。不得不说,网络安全的笔试卷子真的没多少会做的,学校里学到的知识在卷子里最多之占10%,考得最多的是Web安全,各种脚本攻击都不会(其实我脚本语言一个都不会,随便猜了);其次是操作系统安全的也占了相当大的一部分。最后的大题和劫持攻击有关,这个在腾讯往年的卷子中出现过,具体什么题不便多说。幸好之前看过,随便写了点交上去了。
4月24号,一面
腾讯效率还是很高的,当年晚上就收到了面试通知,让我明天早上过去。早上过去了,发现腾讯包下了华工中心酒店来面试,有钱啊,笔试的时候是包下一栋教学楼啊!一面面试我的是以为华工的师兄,人不错。一开始的第一个问题就是“你有女朋友吗?”(也不知道是不是个人习惯,我后面的面试者是一个女生,他问她的第一个问题也是“你有男朋友吗?”)聊了一会,其实他是趁这个时候看我简历,他就开始问我问题了。由于我简历上写了一个开发教学辅助平台的项目经历,他就问我这个项目是干什么的?我回答了,他又让我写出这套软件的架构。幸好学了软件工程,用一个MVC模式蒙混过关了。完了之后,他看我项目上说我设计了一个安全的身份验证协议,可以抵抗重放攻击、中间人攻击、伪造服务器攻击等,要我写一下。我就写了,他质疑了一下,这个可以抵抗中间人攻击吗?我说可以啊,会话过程都加密了,而且最后还是用商量好的对称密钥加密,中间人根本解不开;有质疑,可以抵抗重放攻击吗?我说当然,都挑战应答了,如何重放?他就没问我项目了。之后,他问了一个我觉得最无语的问题:请你把腾讯网给黑了。其实我真的不会,想到的是找有漏洞的端口,但他说只有80端口,我只好说不会。他解释说,其实很简单,假冒自己是马化腾发邮件给某管理员要后台密码就可以了。我大囧,这也行?(其实后来查了,这种攻击叫社交工程攻击)又各种小问题说了下,他突然问我的特长在哪?其实我很回答不上来,因为不是面产品经理,我技术方面没有丝毫特长,我就只能说密码学、身份验证。估计他也不是很懂,就说C++还行吧。为了安全,我说C++博大精深,我只是略懂。他就要我谈谈C++的继承。我说继承很大程度是为了代码重用。他让我举个例子,我就举了User类被Student类、Teacher类继承的例子。他又问假如一个类和Teacher类很像,那是否继承与Teacher类呢?我说,不一定,假如有个教务员类那还是得继承于User类,但如果是叫兽类就可以继承与Teacher类。他原本不想再问了,结果我自己冒了句“不过如果使用接口就另一回事了……”他就要我介绍一下接口。可是C++没有接口啊!只有抽象类啊!他说有!我说这个真没有,就是抽象类啊!我也没和他争,简单说下接口啥的就下一题了。他让我写个快速排序的算法。我又囧了,原理我会,可以要我一时写我还真写不出来,就老实说了,他也没继续为难我。他又要我介绍一下红黑树。红黑树是啥?其实我当时真不知道红黑树是啥,只知道AVL树,我只能说这个没学过。他说,数据结构没学?我说,没有。他说,怎么都没学?(估计前一个面试者也被问到这个问题说不会)问我会啥树,我直接冒一句二叉树,他让我写一下,我就写了下。基本技术问题就这些了,也不深,都是基础的数据结构问题。后面就是聊天了。
4月25号,二面
二面是技术总监面我,全程很像压力面试,就是不断要求你说,好像全程他就会说五个字:“OK!还有吗?”真的可以叫他OK哥啊!我狂汗!看起来简历还是很重要的,可以引导面试官问你的问题。和一面一样,他们都问了我那个项目是什么、架构怎样、安全的身份验证协议是怎样的问题,我都回答了。以为OK了,他冒了句,你觉得你的项目有什么优势?我说,需求,同学老师都需要这个。他说,不是,我要的是技术方面的优势。我顿了下,他又问,和版本控制系统相比,你这个和它有什么差别。版本控制系统,我压根就没用过,我只能说我没用过,不了解,但是我想象地说一下吧,像什么存储的文件大小不一样、可靠性要求不一样等等。完了,他接着问,和版本控制系统相比,有什么技术优势?这个我只能乱答了,只能说易于实现,充分利用了Linux的系统功能。因为本身就没啥技术含量,何来优势?他也没问项目了,但其实这里就花掉了很多的时间。下一个问题是“给你30分钟,如何找出大学城有多少红绿灯?”我说,找同学帮忙。“OK!还有吗?”“用Google Map!”“OK!还有吗?”“打电话问各学校的朋友”“OK!还有吗?”“打电话给公安局!”“OK!还有吗?”……!&¥%@!我都想骂人了,不行,得转移话题,我说,但是如果要我对可行性排序的话,我会怎样怎样。他也没再“OK!还有吗?”了。貌似记得他插了句“你是计算机系的学生吗?”我说是,然后马上问我,“请你说说Hash表和B树的差别。”B树是神马?我听过,但没了解过,你为啥不考我快速排序和堆啊?我说:“B树没学过。”“你不是学过数据结构嘛?”“数据结构没讲。”“好吧,你说说Hash表的优缺点。”我就说了,他觉得还可以。接着问C++的多态性。我就说了虚函数啥的,他经典的五个字又出现了“OK!还有吗?”还有吗?还真有,之前说的那个是运行时多态性,还有编译时多态性,就是重载。他也没问下去了。估计觉得问下去我也不会了。还有就问了线程安全。线程安全是啥?不会,干脆从进程讲起,对比一下线程好了,忽悠一通。他听完,觉得也没啥可问了,再问我就真不会了,就说“OK!就到这里,有消息我们会通知你的。”干嘛不问我密码学的东西啊!我听了好怕~走之前还想套套近乎,但是后面有人等着了。顺便问了下笔试成绩,78分。其实问题都还好,都是很基础很基础的数据结构和操作系统的题目。
4月26号,HR面(三面)
三面是HR面,就是谈人生谈理想。如果要读研的同学请注意,HR第一个问题一定是你读研吗?我说不读,因为现在就业形势一片大好,读研浪费啊!不过HR还真是很会挑毛病,说话要小心,想省麻烦就要严谨,并且不要冗余。如我说我上大学以来,觉得自己最大的优点就是有责任心。他就问,这样说,难道你以前就没有责任心了吗?这个问题够尖锐,我说也不是没有,就是从小到大,自己的路都是学校和家长安排好的,只要学习考试就好了,怎么能看出责任心呢?HR面算是最简单的,各种技术问题HR根本就不会,连Sicily Online Judge我都要用一个小明的背包问题做例子解释一下。又问了下我进来后想做开发还是运维,我也没直接回答,其实我也不是很懂,就说说职业规划什么的。HR面还算轻松,毕竟有大一大二的社会活动做基础,各种性格问题还是能轻松应付。
走之前问了下腾讯实习生的情况。工作时间7月~8月,可以延长。转正概率70%!工资每月2800+1400住房补贴。也就是说要自己租房子。深圳的房子各位懂的。有班车。Offer要28号以后才会以邮件的形式通知,之前有电话确认。
总结
这是我第一次面试,而且还走到了HR面,80%靠运气吧。其实腾讯刷人是很狠的。据说投简历的在广州有8000人,技术岗我就算他占一半吧,4000人。笔试之后就剩1000人了,过了一面的就剩200人了,过二面的人数占时还不知道,也不知道说腾讯招300人是指广东省还是广州市。总结一下,我能通过二面的原因有这几点。第一:网络安全方向真的很缺人,一面的时候面试官还要我找人过来霸王面;我也看了,笔试网络安全的不超过40人,真的缺人。第二:网络安全要求不高,我有同学面试后台和搜索的,那个题目真的不是一般的难,还有一个同学在后台二面的时候被连续问了三个IT界悬而未决的问题,估计是面试官在他身上看到了图灵奖获得者的光芒。第三:写了一个安全的身份验证协议可以忽悠一下,这个如果没有,我实在就没有任何亮点了,其实这个协议真的很水,上课的时候随便写的,估计面试官大多数对密码学的这一块了解不多吧,没深问,要深问我也会悲剧。总之,“笔试看运气,面试看基础!面向对象你得懂,排序树图少不了;操作系统要扎实,海量存储会更妙;计网不会考太深,TCP状态你要懂;项目经验是重点,优秀简历有加分。”