我在这里写下我腾讯实习生一面的经历,虽然结果由于我不是毕业生悲剧了,貌似他只收研二和大三这种能直接毕业的,而我研一,好蛋疼。。。但是我踏入社会前一次很好的练兵,在这里记录下,给大家一个经验之谈。这个笔记是当时面试完我立刻写的,所以有些词是当时想的很口语化,但是过程是完整的,好了,不废话,开始:
我早上8点20坐上去酒店的车,大概从学校到酒店得一个小时20分钟,昨天是5点多给我发的短信让我今天早上10点20面试,我大概9点40到了这边,那边的工作人员就直接点我名字了,愣了一下,还没休息就拿着卡片就上楼面试了,电梯等不到为了不让面试官久等,我爬了7层楼梯上去,到了之后敲门,面试官开门,是个很年轻的小哥,我估计工作也就几年的样子,但是毕竟腾讯的面试官,肯定非常牛逼了喽。
然后他就先和我寒暄了几句,因为学校比较远,给我们的安排都是尽量照顾的,然后说让我稍作休息让我做个自我介绍以及项目经历。我大概是这么思路:名字,学历,然后就是项目,我想面试技术类肯定不会在乎你那些其他东西他关系的就是你的技术,我直接切入主题,说明我的项目,包括本科的项目:救援机器人。研究生项目:工业无线传感网络。不过根据后来的情况来看,面试官不关心我的研究生项目,他对我的本科阶段的那个工作感兴趣,还有个小插曲:因为我是研一的,当时线上笔试的时候,我机智的写的我是研二的,因为这种大公司只收第二年能工作的,我研一其实能进的机会不大,只是(⊙o⊙)…来锻炼自己的。他就问我研一导师会不会给时间,以及时间是否能安排的开,事实我们教研室确实有时间,所以我给了能有时间的保证。
切入主题,就开始问我技术问题,我的救援机器人项目,先问我这个项目的总体简介,然后让我给出难点在哪,我给出了技术上俩难点:激光绘图,控制算法。然后就这俩问题的细节开始了各种问题,就是他哪里听不懂就问你,而且会问你细节上的实现,记住这点不能乱,因为你的东西都乱了,不会,那还讲什么啊。项目问的时间比较长,大概问了我估计都有20多分钟,就各种细节各种问。
项目完后就是基础知识了,先问我了个函数指针的问题,让我操作函数指针。接着是问我给我一个1个字节的空间,让我把正1和负1放进去,他们是二进制如何分布的,基本上负数是注意点,因为牵扯到反码和补码方面的。然后弄完之后,又问我malloc和new之间的区别,这个问题就是他们一个返回具体的类型指针,一个返回指定类型的指针,一个就是初始化问题,malloc不会初始化内存空间,new会按构造函数初始化空间,他单独问我char型构造函数,就是\0么。然后问我static的用处,我就c语言的内存空间以及c++的单体模式对他进行了讲解。然后就是问我操作系统方面了,这个本来最擅长,结果是我答的最扯得,先是问我操作系统磁盘系统是如何读取文件,我从文件系统的i_node对这个说明,至于他想像读内存一样每次换不同位置读取字节,为什么内存快而磁盘慢,这个读的流程是什么,我那个流程没答出来。尴尬,→_→。然后问我操作系统的局部化原则是什么,这个忘记了,自行百度吧,然后问我操作系统多少分,我说80多,他说还可以呀。接着又问我存取文件分别现在操作系统的角度和底层硬件的角度说明。我就现在上层的io操作和底层的数据流说明了下。然后又问我了个操作系统的内存管理,我就静态内存存储空间,堆,栈的内存管理说明了下,不知道说到点子上没。然后问我了个数据库方面的查找一个条目,有很多键值,让你找出哪个键值的效率最低。这个蒙的,我就说拆分开一个个看,着重调试过程,然后就是一个web方面的验证码问题,腾讯有多个网站,大家有个公共的验证码,你怎么设计,不过面试官在问我之前问过我懂不懂web方面的,我就说不懂了,这些年一直做的偏底层,所以就说验证码包含:组用户,密匙,解析id,然后解析这个验证码就是从客服端出发加密然后经过网络到服务器然后解密对比id,其实胡乱答得,最后我其实知道我是研一的,机会不大,因为一开始我就坦白了,觉得隐瞒不好,这个大概就是全过程了。