本人IT屌丝一枚,毕业4年,5年经验(大四在腾讯实习一年,实习生工资,工作内容同正式员工一样)。非常幸运,先后收到过腾讯、百度和阿里的offer,在这里跟大家分享下腾讯面试经验,同诸君共勉。
本人职业生涯的起点开始于腾讯,能入职腾讯其实非常偶然。09年腾讯校招的时候,在本人的学校(学校是2本就不说名字了)开宣讲会,学院很多同学都去了,因为当时对腾讯兴趣不大所以没去,当时希望去中软金蝶这样的传统软件公司。一个宿舍的兄弟要去参加腾讯校招的笔试,我作为亲友团陪他一起去。腾讯的hr很nice给了我一张笔试题和意愿表让我填。本来我想从学校北门直接坐车回家,既然来了反正也没什么事就写了,算是为以后找工作热身。腾讯面试笔试内容主要是编程基础和排序查找算法之类的题,还有用程序实现递归这样的,具体的忘记了。
笔试题感觉很简单,附加题也答上了(本人专业课学霸、其他科学渣)。答完也没检查就坐车回家了,吃饭的时候收到腾讯叫我第二天去一面的短信,刚好我爸爸妈妈在南山的同学去我家做客,就乘阿姨的顺风车回学校准备第二天的面试。
腾讯一面的面试官非常的nice也是我后来的组长,非常有人格魅力的一个人,我去的时候还特意给我倒了一杯水。腾讯面试官员主要问我了解的技术,我就介绍了下在大学期间做的C++、.Net和J2EE项目,规则引擎、财务系统、学业预警系统、爬虫引擎这些。因为完全没准备所以回忆起来有点吃力,还好面试官没有刁难,发挥还可以。问了Java的内存机制,会不会导致内存泄漏,这个答的不太好;问了下hibernate的机制和作用都回答上了,让写了下爬虫程序的核心代码和正则表达式。
一面整整面了30分钟感觉有戏,就回去好好准备2面的内容,把当年工程代码翻出来复习以免再出现忘记的尴尬。很快第二天就通知去进行技术二面。技术二面就是传说中的压力面,被好一顿虐待。项目中的问题一个没问,问的全是操作系统、数据结构的问题。还好专业都是A+,大多数题都回答上了。问了下我树转二叉树,这个小意思。还问了Java内存机制和是否会有内存泄漏什么情况下会泄漏,good这个在一面回去之后就看了,回答的完美。最后一题是问的查找QQ号。小case,写了个二分查找;他说你认为我会满意吗,我想了想又写了一个哈希查找,他说还是不满意。这个时候我已经有点小不爽了,就说不知道。在有点尴尬的气氛中结束了面试。当时觉得没戏了,有点失落。回家看了下算法导论,原来有一个极为高效的算法是二叉查找,腾讯面试,唉,人家已经提示了,但是还没想到,有点小遗憾。
过了一周收到腾讯的hr面试邀请的时候,说实话非常的意外。听说我们学校本科生全军覆没,就我一个过了2面,研究生只有3个过了2面。hr面没问什么特别的,此处不表。一周后收到腾讯的正式offer,还是有点小激动的。薪水方面超过了我的预期,但最主要的是一面的面试官看起来很厉害的样子,感觉腾讯也是一家很厉害的公司。
在腾讯干了四年,正式三年,实习一年。后来开始负责招聘,我们部门在选择求职者的时候主要看聪明程度、视野、大局观、气场等软实力。当时我负责面了一个孩子,各方面挺不错的,组长觉得也还行,但是被总监毙掉了,原因是太软不够霸气。还有一个哥们技术和基础感觉都还行,但是被组长毙掉了,原因是视野和聪明度不够。
所以准备面试腾讯的同学,建议多留意近期的互联网的最新动态,多练练表达。如果能在面试中批判一下近期腾讯的决策失误和产品缺陷,无论对错都会认为这个孩子不错,那么一定会加分的;但是也不能过了,完全说的不对还侃侃而谈会让人觉得你这个人很浮夸也是会被毙掉的。尺度的拿捏很重要。还有一点,语速快而且语气坚决目光坚毅自信的比语速慢表达不流畅的同学成功几率高。我面过一个哥们,后来他顶替了我领域负责人的位置,这是后话。他在面试的时候就非常的自信,如果问一些“弱智”问题会被他反讽,当时大家就觉得这个人很厉害,面试也很顺利,1天连续面了5面,当天就发了offer。腾讯面试,腾讯社招是电话面、技术一面、组长面、平台总监面、部门经理面、hr面。总共6面,面谈是5面。
面试的时候首先要自信,如果能做到不卑不亢其实就已经成功了一半。我感觉大多数程序员都不太自信,给人感觉有点文弱,如果你自己都对自己不自信,怎么能奢求公司对你自信呢。但是也不能太自信,自信心爆棚就是自大,面过一个2年开发经验的问他技术都不知道,就谈项目。腾讯面试,问他项目中做了什么就谈项目是什么。在我这就被毙掉了还问你们能不能开到30w,我只能让他回家等消息了。
腾讯面试题整理——并附有网友的解答,感兴趣的同学参考下
一不定项选择题(共25题,每题4分,共100分,少选、错选、多选均不得分)
1已知一棵二叉树,如果先序遍历的节点顺序是:ADCEFGHB,中序遍历是:CDFEGHAB,则后序遍历结果为:(D)
A.CFHGEBDAB.CDFEGHBAC.FGHCDEBAD.CFHGEDBA
根据先序遍历和中序遍历能唯一确定二叉树:
注意:要想唯一确定一颗二叉树,必须已知两种遍历,并且其中必须有中序,因为先序和后序不能确定左右子树,如下图所示:
从上图中我们可以看出,没有中序是不能确定一颗树的!
2下列哪两个数据结构,同时具有较高的查找和删除性能?(CD)
A.有序数组B.有序链表C.AVL树D.Hash表
数组的删除性能比较差,而链表的查找性能比较差!
3下列排序算法中,哪些时间复杂度不会超过nlogn?(BC)
A.快速排序B.堆排序C.归并排序D.冒泡排序
快排和冒泡排序在最坏情况下的时间复杂度是O(n^2);
4初始序列为18625473一组数采用堆排序,当建堆(小根堆)完毕时,堆所对应的二叉树中序遍历序列为:(A)
A.83251647
B.32851467
C.38251674
D.82351476
建立小根堆的过程如下图所示:
5当n=5时,下列函数的返回值是:(A)
intfoo(intn){
if(n<2){
returnn;
}
else
returnfoo(n-1)+foo(n-2);
}
A.5B.7C.8D.10
6S市A,B共有两个区,人口比例为3:5,据历史统计A的犯罪率为0.01%,B区为0.015%,现有一起新案件发生在S市,那么案件发生在A区的可能性有多大?(C)
A.37.5%B.32.5%C.28.6%D.26.1%
30.01%/(30.01%+50.015%)=28.6%
7Unix系统中,哪些可以用于进程间的通信?(ABCD)
进程间通信主要包括管道,系统IPC(包括消息队列,信号量,共享存储),SOCKET.
A.SocketB.共享内存C.消息队列D.信号量
8静态变量通常存储在进程哪个区?(C)
A.栈区B.堆区C.全局区D.代码区
栈区一般用于存储比较小的临时变量;
堆区一般用于存储比较大的临时变量;
代码区用于存储代码;
全局区用于存储全局变量,静态变量等。
9查询性能(B)
A.在Name字段上添加主键
B.在Name字段上添加索引
C.在Age字段上添加主键
D.在Age字段上添加索引
如果经常依据特定的字段搜索表或对表的记录进行排序,则可以通过创建该字段的索引来加快执行这些操作的
10IP地址131.153.12.71是一个(B)类IP地址。
A.AB.BC.CD.D
A类:0打头
B类:10打头
C类:110打头
D类:1110打头
11下推自动识别机的语言是:(C)
A.0型语言B.1型语言C.2型语言D.3型语言
参考:维基百科
12下列程序的输出是:(D)
#defineadd(a+b)a+b
intmain()
{
printf("%d\n",5add(3+4));
return0;
}
53+4=19
A.23B.35C.16D.19
13浏览器访问某页面,HTTP协议返回状态码为403时表示:(B)
A找不到该页面
B禁止访问
C内部服务器访问
D服务器繁忙
14如果某系统154=112成立,则系统采用的是(A)进制。
A.6B.7C.8D.9
逐个带入即可:
对于6进制而言:15的十进制就是11;112的十进制就是44,114=44。
15某段文本中各个字母出现的频率分别是{a:4,b:3,o:12,h:7,i:10},使用哈夫曼编码,则哪种是可能的编码:(A)
Aa(000)b(001)h(01)i(10)o(11)
Ba(0000)b(0001)h(001)o(01)i(1)
Ca(000)b(001)h(01)i(10)o(00)
Da(0000)b(0001)h(001)o(000)i(1)