2010暑期腾讯实习生一面全记录

第一次自己动手写技术博客。。。

 

我是2010年4月25号的面试,面试方向是腾讯的软件开发--客户端开发方向。

下午下着小雨,由于前些天冰岛的火山爆发,大家一度认为那雨是酸雨。。。下午四点的面试,三点才和几位技术大牛一起

踏上去珞珈山酒店的面试征程。几位大牛里有ACM比赛到处拿奖的算法高手,有创新杯全球第二的技术牛人,还有。。。。

还有我这个无名小卒。。。我也没多想,反正我就是去体验下面试啦~

 

到达后,先签到,然后就到741房间外面等着了。里边的同学出来后,我就开始进去面。面试官操一口广东口音,不知道为啥,

我就觉得面试官人很好的样子,完全没有想象中的任何紧张,任何窘迫,甚至整个过程我都太过随意。。。

 

先自我介绍一下。好,那就自我介绍,顺带介绍了一下做过的项目。他问了问做的项目大概是啥,然后让我选一个来说,我在

里边遇到了什么重要的问题,然后找到什么solution解决了问题。似乎他面试前面的人拖延了一点时间,然后想在面我的时候

快一点。然后我就blahblah把准备好的一个问题给说了。

 

附:我介绍自己项目的时候,觉得说话很不利索,爆出一句:我好渴呀……然后面试官去给我找水……囧,我错了……

 

然后就开始问所谓的技术问题,其实问了很多,但总感觉什么也没问。大概有一下几点吧:

1. 排序算法。各种排序。快速排序,堆排序,归并,等等。问了很多,我把我知道的都全盘托出,应该还行吧回答的,毕竟

数据结构考了90多,我还有小复习一下呀~总是问,如果有一亿个数排序用什么,一百万个又用什么,一百万个里边选出最大

的10个又用什么。我本来听广东普通话就觉得很别扭, 和面试官的交流反正不那么顺畅,我又一点不紧张,那个气氛啊,只能

用搞笑来形容。

我的理解就是,如果是让按顺序排序,数量很大的话,当然是用快排,如果有其他要求,比如选出最大十个,还是用堆排序效率

比较高,据大牛说建堆的复杂度只有O(n)。如果还有存储方面的要求,那还要另当别论。我虽然明白,但是和面试官交流不太好

,也不知他清楚没,好,作罢。

 

 2.查找。他一直问我查找的问题,弄的我很烦。我除了知道二分检索,二叉树查找,哈希表什么的,其他的搜索方面的东西我

真的没有复习,印象也不深了。他有问一个问题,有十万册书,你会怎么安排他们的存储查找等等东西,使得他能按书名检索。

 我很纳闷,腾讯你就是仗着自己用户多,然后数据量奇大,然后就出这种很大的题目。。。我第一反映是:干嘛不用现成的数

据库?建个索引来查找就得了嘛。他说看我能不能自己实现。然后我就想要怎么快速查找,于是乎我想到了用二叉树,分级来查。

是他又说事先不知道分类,就只用书名来检索。然后我就懒得想了,说查找我懂的不多,为什么一直问我查找。他说他们部门是

做XXXX,主要做的就是查找。好吧。。。。没仔细看看查找是我的一大损失。

 

3.象征性的问了下C++。也就让我解释下多态。啊,太简单了。说了些多态包括重载和虚函数云云。虚函数是动态调用的。他又

问我在编程时有没有体会到多态的好处。我说虚函数挺好用的,可以根据对象的实际类型来动态调用函数。顺带又说我们的项目里边

全局变量太多,更偏向于使用C,没有用到这些很好的特性 。

 

 4.然后他又问全局变量在哪里。哎,太简单了。我又自信的像背书一样的说了,存储空间大概有三种,像static的静态变量就在

静态存储空间里,像函数里的局部变量以及参数是在栈上,而其他的比如局部变量是在堆上,就是通常说的内存里。

然后他又问了new和malloc的区别,这个呀,前两天早就弄清楚了,还和大牛讨论了的。。。

我说了new是先调用malloc分配空间,再调构造函数。他又问那如果我new char[256]呢?广东普通话里char我真没听出来,他

还很认真的在纸上写。那一瞬间我觉得仿佛是我在面他。。。然后我就说,先调malloc,因为char是基本类型,所以就不调构造

函数啦。 然后他微笑了。看来我第一面的印象就没错,这是一个很和蔼的面试官,呵呵。

似乎是笑里藏刀?他又问如果在一个函数里new一个东西,那它在什么存储空间上。局部变量,莫非在栈上?他不语,啊,莫非在

堆上?啊,他还是没说啥,就是笑。好吧好吧,你笑吧,我觉得不是在栈上就是在堆里。我想让他告诉我答案他也不说,只是说好

那我们问别的吧。

***后来查了下,具体如下:

一个由c/C++编译的程序占用的内存分为以下几个部分 
1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。 

2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分

配方式倒是类似于链表,呵呵。 

3、全局区(静态区)(static)—,全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域, 未初始化

的全局变量和未初始化的静态变量在相邻的另一块区域。 - 程序结束后有系统释放  

4、文字常量区—常量字符串就是放在这里的。 程序结束后由系统释放 

5、程序代码区—存放函数体的二进制代码。 

 然后new和malloc申请的区域应该都在堆上。

为了纪念,我决定下一篇日志好好把堆和栈写写。 

 

5. 还问了蛮多的,不记得了。。。大概也就免了30分钟左右吧。最后让写一程序,字符串翻转,啊,很老的题目了。都不玩点新花样。

我在写题的时候,他不忘记把我喝过的小瓶的水给我,也许担心时间又过了,就把后面面试的也叫进来面了。

写完reverse,我就告别了这位人很好的面试官,找大牛去了。

 

总结:

 第一次面试,本来以为我会很紧张的,加上打的来的路上,几位大牛又谈了下STL,我都没听说过的东西。进考场前小邱又给我说了几

句我原先完全都没考虑过的技巧,害得我又以为我会紧张的,没想到,我的第一次面试竟然是如此的随和,都没有压抑的感觉,我是真的

当在聊天,只不过面试官可不是那样想啊。。。如果他不喜欢这样的,那我就挂啦~~~

我是默念着小邱教我的“要和面试官交流”,“要交流,要交流,要交流……”进去的。很感谢小邱,你让我很有安全感,嘿嘿。

你的原话是这样说的,对我可能没用上,希望对其他的后来人有用: 如果面试官问你STL,你又不懂,你可以这样回答:我没有研究过STL,

但是我知道它是Standard Template Library,可以使编程变的更方便快捷云云。STL我了解的不是很清楚,我做过的项目里边用到的MFC比较

多,我可以给您讲讲MFC? 

当时在面试官酒店住处外面听到这句标答的时候,我一时间觉得自己什么都没准备一样的(事实上就是啥也没准备。。。),连回答不上来

问题该怎么办都没想过的。。。

 

还要明天晚上才能知道结果,能过就过,不能过我就去别的实验室,嘿嘿~~~ 

 

后来得知,腾讯一面挂了。。。

我杯具了,看来这样太过放松是会出问题的。可不能把面试官当朋友,人家可是在考验你,决定着你的生杀大权呢。

以后一定多努力,祝大家都顺利~! 

 

 

 

 

posted @ 2010-04-26 19:22  Avril  阅读(699)  评论(0编辑  收藏  举报