腾讯面试经验

签了腾讯有段时间了,一直想给学弟学妹们写个offer经验,懒于动笔,拖至今日 呵呵 记得几个月前自己也苦苦找寻那些笔经面经,为找工作做好准备。很多师兄师姐们写得很好,给了我很大帮助,真的很感谢他们!我觉得应该一直这样传承下去,希 望后来的你们也都能找到中意的好工作。
首先大概讲一下我自己的offer情况,第一个是华赛的offer,成绩是全校第一名吧,然后是华为也拿到了,成绩也不错。第三个是腾讯。我总结找工作的 三句话:扎实的学习、充分的准备、绝对的自信!下面从我的学习经历、找工作的准备以及过程三方面来讲!我希望自己说的足够详细,能给你们最大的帮助!
我学的计算机网络方向,自己也很喜欢。当时选择重邮,报的导师是唐红,就是基于自己的兴趣考虑的,也听说我们实验室确实有项目,能学到些东西。复试的时候 导师就说希望你们提前过来,开始进入项目组,提前熟悉开发环境和培养动手能力。然后本科一毕业,暑假就提前过来了,后来慢慢的才知道这是一个非常明智的选 择。提前过来的有三个人,在一个研三师兄的带领下,开始做一个项目。当时啥都不会,压力很大,立马熟悉VC,然后边学边写代码,人是被逼出来的,呵呵,进 步很快!(等一下,偷个菜~~)其实这个机会很好,不是你提前过来就一定有项目做。当然我始终相信,机会只会留给那些做好准备的人!研一一个项目做下来, 我们的能力得到导师的认可,基本就重点培养了。后来才知道,虽然我们实验室有项目做,每年招二三十人,但真正能有机会做项目的就那么几个人。进入研二,进 入实验室核心项目组,继续做新的项目。有时候项目没什么事就自己看技术知识 经常google 要热爱技术!研二过去了,感觉自己的开发能力基本没问题了 接下来要好好准备,找工作目标自然提高,刚进这个学校的时候,目标是华为(这是我最尊敬的公司),现在目标定在百度腾讯,因为目标应该定高一点,你或许就 实现了,就算实现不了,起码华为中兴应该没有问题。

进入研二暑假,开始着手准备,天天上自习了,天确实很热,大家都喜欢缩在实验室吹空调。呵呵,吃的苦中苦,方为人上人。
复习基本知识。
《LC C++ 数据结构与算法》、《操作系统原理》、《计算机网络》、《Linux程序设计》(因为我自己做的就是Linux和网络方面的东西);
C推荐大家看三本书:《C陷阱与缺陷》、《C专家编程》、《C/C++高质量编程》。对于C,你这样准备就足够了。我的项目主要是C,自己也很喜欢。另外 我C++也还可以,就看了钱能的那本。如果一些公司考C++,你最好看一下《C++ Primer》,主要看一下里面的STL。
数据结构也是重中之中,链表、栈、队列,主要是里面的算法、查找(折半、平衡树、红黑树、哈希);排序(快排、shell、堆排,还有外部排序),对这些 算法要完全掌握,包括具体的代码。我最喜欢哈希和堆排,真的很经典!数据结构很多大公司喜欢考,比如百度、华为也考一点。如果你搜百度的面经就知道了,数 据结构和算法有多重要。多看看百度面经,了解怎么运用这些算法解决大量数据的处理。如果想让自己的水平提升一个档次的话,建议把微软的《编程之美》看一 遍,非常好的一本书!
Linux操作系统我推荐陈莉君老师的《Linux操作系统原理与应用》。
计算机网络,这是我的研究方向,要掌握的最好,最重要的就是TCP,对TCP的连接管理、流量控制、窗口 其原理、算法完全理解透彻!面试一般会问TCP、UDP、IP的头部结构、TCP实现原理等,主要是谢希仁的那本书,看了无数遍了,现在再复习加深理解。
另外我还把Linux内核协议栈代码也看了几遍。最后一个,《Linux程序设计》,这本书是自己买的,主要是shell、多线程、多进程、IPC、 Socket方面的编程知识,这是为腾讯准备的,因为腾讯做的东西就是这块,虽然我的项目不涉及这些,但我知道一定要准备一下,但《Linux程序设计》 讲的不是很深,算入门级。九月份的时候看到腾讯面经,突然醒悟,看了一些较深的socket编程,把《UNIX网络编程》里面的select、poll、 线程池等看了,还有在网上搜一下较新的epoll,看了几遍。果然腾讯二面有问道select与epoll的区别。首先声明自己没做过这方面的东西,但喜 欢Linux编程,也就看了一些这方面的知识,然后就说了一下他们的区别 嘻嘻~~ 在准备阶段,不仅要看这些基本知识方面的书,还要大量阅读笔经面经,比如百度、腾讯、阿里巴巴。这里说明一下,我看的都是自己研究方向和项目相关的东西, 还有最重要的,我说的是做开发,技术方面的。每个人根据自己情况不同,做出调整。比如有人做数据库的,有人不搞开发,做测试等。

进入九月份了,基础知识基本就这样了,除了看之前那些书的第N+1遍,就是做简历、投简历、复习项目。这里说一下简历,第一,一页就好;第二,投简历时很 重要的一项,就是当前所在城市,如果这家公司不来重庆,那你就填成都,千万别填重庆!切记!我们当时不知道情况,深受其害!复习项目主要是突出你做了哪些 东西,这个项目有哪些重要的问题或瓶颈,你为其解决做了哪些贡献。还有很重要的一个,现在九月份了,要开始动手编一些小程序,字符串方面的,快速排序、折 半查找啊。放心,笔试或面试肯定会考。这个阶段可以关注电子科大的BBS了,成都比我们重庆早。而且好公司基本不来重庆。

今年大公司的招聘都是国庆之后立马开始,我们实验室几个一起去成都。这时候重庆是一点动静没有,而成都是热火朝天了。电子科大清水河校区条件是相当艰苦, 如果想冲一下知名公司,建议大家去成都,我们先冲百度,当做练兵吧 处女笔就给了他。无果,郁闷~~ 百度效率很高,当天晚上笔试,第二天就有人一面了。接下来有点痛苦了,阿里巴巴一直没收到通知,无助、迷茫、浮躁,这时收到华赛面试通知,在重大科苑酒 店。杀回重庆,下火车直奔酒店,顺利进行四面。从下午一直到晚上,那叫一个疲惫啊,知道基本没问题,本来是打算明天立马杀回成都的,因为我的目标腾讯是后 天18号,在成都,我投简历时选择笔试地点是成都,因为成都招的人多 100多,而重庆呢,往年情况是10人以下,建议大家去成都冲腾讯,机会好很多。哪知道在面完华赛回学校的路上 收到迈瑞的笔试通知,19号,在重大笔,冲突了,郁闷了。迈瑞也很牛叉的,待遇很好,环境更好。然后选择留在重庆笔迈瑞,因为腾讯后面还是会来重庆的。我 相信虽然腾讯只招10人以下,自己还是有机会的,后来才发现这是一个错误的决定。因为迈瑞19号笔完后,月底30号才给一面通知,那叫一个郁闷至极啊 。等你面试,黄花菜都凉了。听说留在成都那边的同学,又是笔试腾讯,又是强笔阿里巴巴成功,那叫一个后悔啊 收到华赛offer ,第一份offer,做的东西又是自己喜欢的,网络安全,纠结了几天,签了就一了百了了。想想是不是太容易了啊,第一次面试就offer,想想还是没签。 相信自己能签更好的。哎,不管了,破罐破摔了。在学校冲腾讯,不行就华为了。在学校看网络编程方面的东西,学校是一片平静,成都电子科大是热火朝天, 已经静不下心来了。坚持!收到成都那边阿里巴巴研发院的笔试通知,想想放弃了,知道难度很高。另外主要重庆这边公司要来了,时间和华为冲突了,不能重庆成 都来回跑,而且华为完了第二天立马腾讯又笔试。华为来了,过程比较轻松,不出意外,offer到手,后面冲腾讯也有个底,说一下,华为华赛没有笔试,直接 面试,只有第一面是技术面,也是最重要的。一面表现好,基本就OK了。会有关于项目、编程等,华为招的人多,五星级酒店,场面相当壮观啊!

腾讯宣讲,知道今年在重庆要扩招,要招35个。呵呵,高兴啊,越来越有戏了。后来加上川美的一共要了27个。想一想,还是印证那句话,机会只留给那些有准 备的人。华为面完第二天就是腾讯笔试,绿盟和腾讯笔试时间冲突,放弃。绿盟也是一家非常好的公司!腾讯研发岗位是一笔三面,前两面是纯技术面,也是最重要 的,最后的HR面对开发的来说,基本没关系。之前看了很多腾讯笔经,都是考C和数据结构,加一点点C++,基本没有问题 笔试之前我都直接准备面试的东西了,包括之前成都笔试过的同学传回来的信息。笔试题很正常,但我看到卷子一发下来,傻了。两大题:一、选择60分,二、程 序填空40分。题目结构没有问题,和往年一样,但问题是选择题部分,完全不着边。往年就是考考C和数据结构,而这次基本没有,有hash加密,操作系统也 考了很多,而且比较偏。直接把会做的快速做完,主要做后面的程序填空,这个比较难。但我知道他们肯定看重程序这块。程序填空两道题,一题是四则混合运算, 相当于计算器吧;另一题是背包算法。苦思冥想,基本做好,时间根本不够 两道附加题都没做。笔完后,也无所谓了,听天由命吧。后来进入一面了,大家基本都进了。呵呵,看样子腾讯知道错了,要海面了。后来一面我才知道,我的选择 是对啊。主攻程序填空,笔试成绩他们也基本认可,而且没让我写程序,很多人都要求写了。一面是一个和我们年纪差不多的小伙子,很友善,完全就是项目。我就 讲了一下自己的那个核心项目,也是最有技术含量的。呵呵,主要问了自己做了哪些东西,项目的瓶颈,以及你为解决这些瓶颈做的工作。还问了额外的两个问题: 怎样用宏把多条语句括在一起?脑子里没啥想法,立马先说一个,用两个大括号括起来就行了。他说再想想。想了几秒,他提示说用while什么的可以不?我想 起来了,用while(0)语句。Linux内核黑客很经典的一个东西,然后他又说这样做的好处是什么?以前看过,想了一会儿,说就是多一个分号和少一个 分号的区别。他没有追究下去。第二个问题,全局变量、静态变量、局部变量在虚拟地址空间中怎么存放?这个小case了。最后面试官问了我有什么问题问他。 我说你怎么不问问我socket方面的东西呢?他说我知道你掌握的很好了,不用问了。嘿嘿,看样子对我比较满意,基本过关了,回去准备二面。

进入二面,也是最关键最难的一面,过了offer就基本到手了。过去一看,是那个香港人,去年师兄就倒在他的枪下,长得像中国人,但说中文像老外,中间还 夹杂着一些英语单词。不管了,豁出去了。第一个问题:看了你的简历,TCP网络知识学的不错,那讲一下TCP和UDP的区别。(简单!)OK,那你讲一下 为什么TCP要三次握手?我说建立连接。他说其实没有什么连接这东西,都是虚的。他说的很对,所谓的连接确实很虚,人为的定义而已。以前没想过这个问题, 综合所有对TCP的理解,我想了一会儿,我说为了协商窗口大小和初始序列号。他说对,是协商,那怎样协商初始序列号呢?我倒!没想过这个。那就临时想,应 该是随机选取一个数,做为初始序列号。他说对,那为什么要随即选呢?我靠!!不整死我你不罢休啊 我想了半天,无果!他说随机选一个,就是第一个包的序列号一定是随机协商的那个数,其他的序列号的包就丢弃,也就是所谓的连接,可靠的传输。呵呵,问到这 里,我明白了。这家伙确实厉害,其实知识很简单,就是你有没有想过为什么TCP他要这样做呢?一直往下问,为什么?为什么??这才是对技术的追求,对技术 的热爱!他说OK,下一问题:如果有一个很大的程序,很 ci CPU。我说什么是ci CPU,他说就是很耗CPU。我说噢,心想很耗CPU就是很耗嘛,什么很ci啊。他继续说,你怎么找到那段很ci CPU的代码?我说主要看一下while循环、for循环的语句。他说code builder(没听清,好像是这两个单词)也是要做,但如果几十万行、几百万行的程序,有什么方法或工具去找呢?我说我们一般没这么大代码的程序,一般 就是查看一下while循环、for循环的语句什么的。他说噢,那下一问题:volitate有什么作用?我了解一点,好像是防止编译器优化。他说怎么防 止优化?我说不知道,只是了解这个东西,没具体用过。下一问题:函数栈空间里面有哪些东西?我说局部变量、参数、返回地址。他说嗯,返回地址是什么东西? 我看过,但不大清楚,只怪在自己知识掌握的不大扎实。后来在他的慢慢开导下,知道了函数栈的大概原理。下一问题:就是上面说的谈谈select和 epoll的区别。还有一个问题,记不起来了。想想整个面试过程他问的问题,都不难,刚开始都能回答,但他会一直往下问,一直问为什么?为什么要这样做? 就招架不住了,就是看你对知识的掌握是追根求源还是浅尝辄止。这个面试官大概30出头,是个技术高管,但整个过程他非常有激情,感觉比我们还有活力,心态 更年轻。他说的话比你多得多,对你有压倒性技术优势,别被他压倒。我心态很好,他跟我飚英语,我也加一些I see、OK之类的话,很淡定。对于技术面试,一定要放松,表现的比较牛,面试官更喜欢。呵呵,还有就是我能感受到他对技术的理解和追求的深度,虽然已经 是高管了,但心态还是那样的年轻、有活力。我能看出腾讯是个怎样的公司,技术人员的培养方式和工作环境,很喜欢!二面完了之后,没底啊。等结果,最后三面 就没啥了,提前看一下企业文化四个词,对于技术类的hr面,基本不会刷人。后来所有27个进HR面,都签约了。在等待二面结果的时候,华为让签三方,到了 最后通牒了,相当纠结啊。后面没什么好公司了,搞不好华为、腾讯两头空。后来一狠心,不签了,既然选择了腾讯,就相信自己!用《奋斗》里面徐志森跟陆涛说 的话:你这是在赌博,有个决心我一定要下,就是和你一起回到小巷中,在那里只有一条出路,你决不能回头,你只能往前冲,那是冒险冲出来的,这是一种生意 一种人生,那就叫做绝处逢生。

总结腾讯的面试经验,一定要实际动手做过项目,并为解决关键问题做出贡献!然后专业基本知识要扎实掌握,就问你简历上的东西,不要你什么都懂,就对你所掌握的那些知识要学的很深、很扎实,确实对技术执着、追求、热爱!

最后祝学弟学妹们都能找个好工作!

    推荐阅读