• 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? 

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

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

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

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

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

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

  • 相关阅读:
    javaIO流之 字节与字符流认识
    Servlet容器理解(生命周期、servletContext作用域、servlet装载方式)
    是否改变原数组的常用方法
    时间空间复杂度的初步理解---后续补充
    java集合框架之 Set
    【原】SQLPLUS支持上下翻页
    【转】shell脚本写的俄罗斯方块游戏
    【原】Oracle 11.2.0.1 64bit for RHEL6.0 Server x86_64 静默安装
    【原】RHEL6.0企业版安装
    【原】记录一句话
  • 原文地址:https://www.cnblogs.com/avril/p/1721472.html
Copyright © 2020-2023  润新知