05-19
腾讯面试经验分享
腾讯的实习生招聘真是声势浩大啊。从最开始的5月5号宣讲到最后的5月19号得到offer,历时半个月,下面我慢慢道来,跟大家分享一下我的经历。填简历报名什么的就不说了,宣讲会也没去听,就从笔试开始说吧。
5.9笔试
腾讯的笔试相对来说还是比较基础的,题目主体包括选择题和填空题,除了这些题目还有附加题。选择题主要就是一些基础题,包括数据结构和算法,网络通信,机组原理,操作系统等方面的题目。填空题主要就是两个c++程序,空缺了一些代码,要你填上。附加题比较有难度,分多个方向,c++,java,js,php等方向。由于和腾讯签了不透露题目的协议,这里就不透露题目了。不过我想说的就是确实基础,我提前半个小时交卷了。
5.9一面
一面是在东南大学的榴园宾馆进行的。坐地铁转公交花了一个多小时终于到了东南大学,负责面试流程的那位同学居然认识我,询问以后才知道原来是我们院大四的学长,拿到了腾讯的offer,将在腾讯工作。
到我面试的时候,走进面试官的房间,发现桌子上一张纸和一支笔。和面试官GG打了招呼以后就坐了下来。
第一题
面试官GG:先出一道题目给你做吧。(于是拿出一样纸,指着其中一题)先想想,然后把代码写下来。
题目是这样的,写一个函数,将一个字符串整体循环右移N位,最后面的N位移到前面去。
我想了想,很快写下代码:
void f(char* str, int n){
char str1[maxSize];
int size = strlen(str);
for(int i=0;i
str1[(i+n)%size]=str[i];
}
strcpy(str,str1);
}
面试官GG:能不能不用额外空间呢?
我又很快写下另一段代码:
void f(char* str, int n){
int size = strlen(str);
for(int i=0;i
char temp=str[size];
for(int j=0;j
str[i+1]=str[i];
}
str[0]=temp;
}
}
面试官GG:嗯,行,这个方法没有用额外空间,但是时间复杂度高一点哦!
我不知道面试官GG想说什么,就点点头。
(后来回学校以后我上网搜了一下这道题目,原来是《编程之美》中的一道题目,最好的解法是将字符串分为两个部分,后N个字符组成的字符串B,和前面的字符串A,这个题目的意思就是将A和B交换。将A左右倒置,再将B左右倒置,最后将整个字符串左右倒置。这样的话不需要额外的空间,而且时间复杂度只有2×size。)
第二题
做完第一题,面试官GG跟我说:再做一题吧,不过这次不要写代码,你说说思路就可以了。
第二题是这样的,一个长度为N的数组,每个元素为整数,可正可负,求拥有最大和的子数组。(取数组中连续的几个数为一个子数组)。
面试官GG看着我,我看着窗外,脑中急速旋转。大约5分钟,我向面试官GG提供了一个极为复杂的动态规划方法。(后来想想这个方法存在一点缺陷)。我花了10分钟向面试官GG解释了我的方法,他点点头,表示理解了我的方法,但我感觉到的是他也不是很确定我的方法是不是正确的。但是对于我的思路,他还是挺满意的。
(回学校以后我也在网上查了一下这道题目,也是《编程之美》中的一道题,最好的解法是,首先设置一个标量sum,从前往后遍历,每遇到一个数就将这个数加到sum中去,如果sum小于0,则将sum清空为0,舍弃之前的数组。遍历过程中记录下sun出现过的最大值,这个值就是所求值,得到这个和的子数组就是所求子数组)
第三题
在我想第二题的过程中,面试官GG问了我关于工作地点的问题。他问我为什么填报工作地点是上海,我说不愿意去深圳,他就问,那北京如何?我想了想说,北京还是可以的。于是,我的第三题就跟搜索挂上钩,后来做完第三题面试官GG告诉我将我转到了北京的搜索部门,也就是传说中的腾讯SOSO。
第三题是这样的,在一个文本里记录了几百万个搜索的关键字,请你找出其中热门的10个关键字。(就是出现次数最多的关键字)。
这道题目我想可很久,大约有10分钟,我发现自己不能够给出很完美的方案,于是我开始发挥我所知道的一些知识来解决它,我先给出一个初步方案,用到了hash表散列和堆排序以及一些字符串匹配的算法。但是面试官GG的紧接着问了这种问题来指出我的不足,我就顺着面试官GG的思路一步步的改进了我的方案,最后得到了面试官GG的认可。
项目经历
终于说到了我的项目经历,我很开心的介绍起自己做过的项目。根据面试官GG的问题可以看出,他比较看重的是项目的性质,项目的内容,和我在项目中做了什么,对,特别是我在项目中做了什么。
一面结束了,总的感觉来说,面试官比较看重的是你的思维方式,你并不一定要给出最优的解,但是你需要能够有解决方法的思维与能力,能够根据自己的知识去解决问题,这是他们很看重的,还有就是项目经历中你的角色和你做了些什么事情。
5.12二面
接到通知说一面过了,在11号和12号会有一次电话面试。于是在12号的中午,手机响了,是来自北京的号码。
电话面试和一面相比要轻松很多。首先面试官GG问了我关于做过的项目方面的一些东西。和一面一样,他很看重我在项目中的角色和我做了哪部分的工作。因为我填报的是c/c++后台开发的部门,而我的项目大多都是做的java和前台的一些项目,他就问我为什么要填报后台,我说,我在大三的选课方向是Linux系统方向,所以对Linux编程和C还是比较了解的,所以填报了后台方向。他问我Linux编程有没有做过什么东西,我就告诉他做过一个简单的HTTP服务器,以及这个服务器包含的功能。他重点问了我网络模块的实现,我如实的回答,是通过fork子进程,然后dup等一系列操作完成等等。他便围绕这一块问了我很多问题,比如除了通过子进程方式还可以有什么方式,同步通信和异步通信有什么不同,如果是异步通信要怎么实现等等问题。他的问题我都很好的回答了。最后他跟我商量了一下实习的具体时间,和过去实习将让我做的一些工作,便结束了愉快的二面。
5.13HR面
接到通知,二面顺利通过,5月13号9:20在东南大学进行HR面试,因为之前听说HR面试基本不刷人,于是感觉离胜利不远了。
很早就起床乘了一个多小时的车来到东南大学的时候已经快到9:20了,慌乱之中做了一件囧事,让我这天一直感叹到,今天真是黑色星期五啊!
面试还挺顺利的,面试官是位年轻的姐姐,问了我各种问题,诸如是什么星座啊,有没有女朋友啊,有哪些兴趣爱好啊,为什么不打算读研啊,父母是做什么之类的。就像聊天一样,聊得挺开心,不知不觉20分钟就过去了,原路返回,回到学校的时候已经是中午了。
5.19接到offer
接到offer,要求5月23号之前给答复。
沙发
[回复]
赞哦!
[回复]
第二题,数据结构书上也有吧,就是mark allen的那本
[回复]
godfrey 回复:
5月 28th, 2011 at 10:24 上午
没有仔细看书啊~后来想想这道题挺简单的
[回复]
学习了,偶去腾讯当分母了
[回复]
godfrey 回复:
5月 31st, 2011 at 8:37 上午
再接再厉啊!不知道你是哪位?
[回复]
shanxing 回复:
6月 1st, 2011 at 9:09 上午
偶的高中童鞋 哦!
[回复]
相当牛*哦,赞一个
[回复]
godfrey 回复:
7月 3rd, 2011 at 9:15 下午
谢谢!你也努力啊!
[回复]