[腾讯面试] 2016届腾讯实习生招聘笔试+面试(技术岗)

本人是重庆大学计算机学院的一枚弱菜,有幸获得腾讯2015实习生面试机会,在此把面试经历分享出来,让大家参考参考


笔试

我报的后台研发岗位,网上笔试的日期是4月8号,当天由于外出学车,回来的时候比较晚,到寝室的时候笔试已经开始一个小时了,才突然想起来腾讯有笔试,然后就草草打开电脑,登陆主页进行笔试。题目分为两部分,第一部分为40道不定项选择题,其内容包含计算机网络,操作系统,概率论,数据结构,和C++的内容,考得十分的细,对于我这种基础不扎实的人来说这简直就是灾难,没办法,看见哪个有点印象的就多想一会,没印象的就直接看哪个舒服就选哪个,那感觉忒爽。选择题做完看下时间用了30分钟不到,其中只对几道数据结构和操作系统的题目有点把握外其他都是乱选的,然后就看大题了,大题一共有8题(貌似),大部分都是主观题,这种题你懂的,对于我们这种没见过世面的大学生来说几乎没一道会做,本来想能有几题算法或者数据结构题的话还能试一试(本人搞过ACM,感觉笔试的算法题应该能水个大概),再看看时间,还剩20分左右了,我眼尖发现了一道编程题,我想不管了,剩下的时间就给你了,题目大意是:

在不利用sizeof的情况下如何判断你的机器上的int型是16位,32位还是64位,请编程实现。


看到题目我就想到了32位int型的范围-2^32~2^32-1,既然如此那何不利用整型溢出来判断大小呢?然后定义了几个常量 INT1=0x7fffINT2=0x7fffffff INT3=0x7fffffffffffffff 这三个分别是16位,32位,64位 int型能代表的最大范围,只要令一个int型的变量分别给其赋值INT1 INT2 INT3 然后让其+1来判断是否溢出即可,由于对数的补码表示形式已经生疏,溢出后值为多少不是很清楚,就打开了一个IDE来试一试,结果就坑了,0,-1,1什么的试了N次都不行,无奈只好随便填了个0来应付,希望能给点"过程"分吧(后面才知道溢出后应该为最小的负数。。。打死我也想不到)。


笔试就这样水过去了,我觉得鹅厂已经无望了,就不再去想,专心准备阿里的面试(阿里笔试在腾讯之前,一不小心也过了笔试)。


一面:


然而就在4月13号晚上,腾讯发来短信,要我4月14号早上10点去丽苑大酒店面试,我一看到短信,我心里一万只草泥马在奔腾,我去你妹啊,鹅厂你TM在逗我吗,笔试这么水你都让过,而且你让过也行,好歹也要提前个一两天通知吧,这么就要我去面试,人家第一次还没奉献出去呢,让我怎么准备。没办法赶紧找同伴,问下周围的人,结果都表示没有收到短信,我想完蛋了,这次得单刀赴会了,赶紧看面试经验,自己写了一个简短的自我介绍。当天晚上过于激动。。。凌晨3点左右才睡着。。第二天不到7点就醒了,头昏脑涨。草草起床刷牙洗脸,心想不能以一种萎靡的状态去面试,精心打扮一下就出门了。路上一直在背昨天写的自我介绍,心里想特么的这样的笔试都能过面试的人应该很多吧,人多的话不会是群面吧,群面的话以自己这种 “腼腆”的性格会不会当场就被刷掉了,那样得多丢脸啊。想着想着就到了酒店楼下,看着酒店门口一些保安心想不会来给腾讯面试治安的吧,然后就各种意淫以后进腾讯的情况了,然后越想越紧张,期间我也通过QQ得到家里人和朋友的祝福和鼓励,感觉信心满满,天下仿佛就在我手中了。心想如果肚子饿了发挥不好那多吃亏啊,然后随便找一家面馆点了一份重庆小面,吃完后看看时间差不多了就上去了,到了15楼,一层很窄的过道就被几十个人塞得满满的,我想通过的人也蛮多的啊,估计此行凶多吉少,然后看见有一间类似教室的大房间,上面坐着一排人,下面坐着几个人,我想TM的不会真的是群面吧,我就跑到旁边的一个服务台去咨询了一下,才发现这层楼这么多人都是来霸面的,台上面堆着很多简历,随便看了看,感觉随便一个都能秒杀我。。然后服务台MM(长得还不错)叫我进里面去报到,我就释然了(通过的人也挺少的嘛^.^),到房间里和工作人员报了手机号就给我写了一张票子,然后就叫我去9楼910等待面试。。我想还9楼。。难道不在这一层吗,技术人员待遇还确实不一样。。哈哈。。


到9楼了,空空的一层楼一个人也没有。。和刚刚15楼形成鲜明的对比。。。往前走了一会就看到了此行的最终目的地,910和908两个单人房门都开着,里面分别两个人在接受面试。。看到这里很显然直接技术面了,后面接着来了一个人,问了一下原来是来等908面试的,看了一下简历,重庆邮电大学硕士。。然后下面就是一些看不懂的项目,看得懂的就一个图形处理。自己的简历都没法给别人看了,只好傻傻的和他表示我是个本科生。。。终于910里面人出来了,从他表情里就看得出估计是被鄙视了,问了下他的情况。。一个字,惨!。。。。我想算了到这里了只能硬着头皮上了。。走到门口敲了一下门,问是否可以进去(虽然没面试过,但是一些基本的面试礼仪还是了解),然后心里一直在想着自我介绍,他看了一下我,然后看了看电脑就问你不是韦忠汕啊,我连忙表示自己就是。。然后就进去坐下了,这个面试官40岁出头,穿着牛仔裤和T恤,看起来也没想象中这么可怕,心里也不是那么紧张了。我正准备等他要我自我介绍呢,我擦,结果一上来直接干正事。爽快!我喜欢,我还愁自我介绍背得不够好呢。


"你平时都是在什么环境下编程的啊?",

我想这难道是问我用什么IDE编程吗,"我一般用的是qt",我本来还想说java的话用eclipse,想想就算了,毕竟是来应聘C++的,扯其他的估计给他印象不好。


"qt?是什么。。。",

好吧我承认我确实比较奇葩,qt是当初诺基亚用来开发图形界面的一款软件,但是它支持c/c++的比较好,而且界面简洁,代码补全功能都不错,我就用了。我就回答说"qt是一款支持c和c++开发的IDE",


"哦,原来是这样","c++定义常量的方法有什么?",

"定义常量可以用const来修饰,还有。。static。。不对。define也可以定义常量",


"好,那么const和difine有什么区别呢?"

我想完了,当初只知道用不知道确切的区别是什么。。"这个我也不太清楚。。。",感觉自己的回答好弱,(实际上define是一个宏定义,需要的时候只要展开就行不需要分配内存,而用const修饰在编译阶段还需要为其分配内存),


"刚才我听见你提起过static,那你说说static关键字有什么作用?"

这个自己用过,但是解释不是我的强项。。"额。。static修饰的变量在堆中分配(不知道是脑抽了还是紧张了,只觉得内存就堆和栈了,就说成这个了,实际上是在静态存储区中分配的),然后比如你在一个类里定义用static修饰的变量,在这个类外面还可以使用。",不知道这样说是否有点牵强。。看他也没什么表示估计一般吧


"c++分配内存的方式有什么?",

我犹豫了一下就说:"在c++中分配内存用的是new,而在c中用的是malloc",


他反驳道:"c++中也可以使用malloc的,不是吗?",

我说:"噢,确实是这样的。。不好意思",


"那么new和malloc的区别是什么呢"他接着问道。

"malloc分配的是固定的内存大小,而new除了分配内存外还需要调用构造函数。"。


"好,那么申请了内存不用的话怎么办"

"不用的话当然是释放掉,如果不释放就会产生内存泄露"我感觉这个是我回答最有自信的问题了。


"那么在你编程的时候是否遇到过内存泄露?如何检测内存泄露?"

内存泄露。。。怎么检测?额滴神哦,"我在用java做雷电的时候曾经遇到过内存泄露,敌方飞机是一个个的对象,如果敌方飞机被消灭后,或者越出窗口边界的时候不释放,那么就会产生内存泄露,明显的感觉就是程序变得非常卡。。(无奈又得拿JAVA来说,我都怀疑我是不是应聘的C++),至于如何检测内存泄露。。。就是检查代码,看哪个没释放就释放了(最愚蠢的回答)。。",


"哦,这样啊"。。他看了看我的简历。然后问道:"你写着你做过socket网络编程,那么socket采用的是tcp协议还是udp协议?"

"socket就是通过端口连接,客户端通过socket发送连接请求,服务端有一个专门负责检查是否连接请求的serversocket,如果有就连接,这是一个面向连接的通讯,所以socket是采用tcp协议。。而udp是面向无连接"。。


"好的,那么如何构造一个基于tcp协议的服务器和基于udp的服务器?"...

"tcp是面向连接的,需要经过连接,socket就是一个例子,而udp服务器。。只需要客户端不断地向服务器发送信息,服务器接收就可以了吧。。(确实不知道具体要求是什么,就泛泛地回答了。。)",


"给服务器?不是服务器客户端吗?"

"呃。。。可能是我记错了(对象搞反了。。。天!)"


"照你这么说tcp一定是面向连接,而udp一定是面向无连接的吗?"

我靠,还问我网络方面的知识,我已经黔驴技穷了。。。"呃。。不好意思,由于我们这个学期才学计算机网络,我对这个也不太清楚(干脆老实交代,省得继续问下去。。)",


"这样啊。。好吧,在linux系统下,一个文件夹中有1000个子文件,你如何查找某个文件?"

这个。。难道是个算法题吗??我一直期待的啊,"不用考虑效率的问题吗?","不需要考虑。"。"可以通过罗列该文件的所有子文件,然后递归地查询所有子文件。。",


"递归?"

"是的,我用java做文件管理系统的时候(又是java!!没办法,c++的项目做得太少了)可以罗列单个文件所有的子文件,然后递归查询,就是深度优先搜索(递归都不知道,深度优先搜索应该知道吧?)",然后他就什么都不说了(事后我觉得这题我可能是回答得牛头不对马嘴了,可能他是想考我linux下某个命令吧,我把如何实现给他说了)。。。


"c++类成员函数的重载,覆盖和隐藏有什么区别?",

oh,god。这是个什么问题哦,怎么一点印象都没呢,除了函数覆盖知道点。。"函数覆盖就是虚函数继承。。函数重载。。类似于运算符重载吧(事后才想到平时常用的构造函数重载就是一个例子,当时怎么就想不到呢。。。)。。函数隐藏没用过。。"。。"哦?运算符重载。。","是的。。。",


"好吧。今天的面试就到此结束吧",说完他就把我的简历放到简历堆里去了


我想完蛋了,这么快就结束了。。好多问题都没答上,形式上的让应聘者提问的环节都没有。估计是被鄙视到家了。哎,算了,基础不扎实,回去再锻炼几年吧。然后我就默默地拿起书包走人了。也顾不上什么礼节= =,出来发现又有三个研究生来了,也是重邮的,我想TM的重邮都这么屌吗,怎么重大都没有,而且都是研究生。。。然后就问我一堆问题,考了什么,怎么样?,我的表情和在我之前那个应聘者一样,垂头丧气,"别提了,惨。。",然后就和他们说了一下考的东西,祝福他们几句就默默的走人了。。


回想当时提的问题确实不是很难,但是考得很细,问题也是根据你的回答来展开的,这次失败只能怪自己基础太差或者拼不过研究。。看看时间才10点2分,9.40这样开始面试,前后20分左右,自嘲了一下自己估计是面试最快的吧。。然后什么都没想滚回学校继续上课了。


晚上看自己的招聘状态,确实已经被刷了,心情很平静就当做一次经历吧,自己的处女面就这样了。接下来就是准备阿里面试吧。。加油!!!!!!


顺便说下我的简历写法,很多人都对我能去腾讯面试感到惊讶,我也对自己感到很惊讶,我觉得简历写的最主要的原则是"真实(诚实守信),突出重点(眼前一亮),别夸大(要不会死的很惨)",而其中我觉得突出重点尤为重要,我的简历上什么像样的项目都没有,也就是平时的一些小的课程项目,我也没有在这一部分重点阐述,而我最花笔墨阐述的就是我在大学参加ACM的经历,包括做了多少的题量,对算法和数据结构的熟练掌握,和自己个人博客的等等,我觉得大公司看重的就是个人的基础,首先题量如果做得多,那么代码量就有保证,其次,你有过ACM经历,而且又对数据结构和算法掌握很熟练,那么就保证了你个人的智商(ACM被誉为聪明人玩的游戏),最后把博客贴出来,那么他觉得你这个人平时有记录细节的习惯,是一个很细心的人而且能反思自己的过失),那么通过他的简历关就是自然而然的事了。当然这是在同等级的情况下有优势,如果去和研究生甚至更高的比那就另当别论了。

你可能感兴趣的:([腾讯面试] 2016届腾讯实习生招聘笔试+面试(技术岗))