记腾讯的暑期实习面试

3月初进了一个腾讯tst内推群,然后按流程投了简历。投的IEG事业群PC客户端开发岗。当时刚开始复习一个月左右,才把大一学的C++看完,又在按照职位要求恶补操作系统和网络的知识。简历投过去后几天显示评级是B。当时心凉凉的,因为A+和A评级的人有很多,觉得可能都不会有电话面试。后来知道这是机器自动评级的,大概是依据学校和学历,985硕士一般是A+,其他硕士是A,本科生就是B。其实不用多care。

推了5天后的周一的上午10点多,当时我以为不会有面试,在寝室里看动漫,突然手机响了,一看来电深圳腾讯总部,有种手足无措的感觉。赶紧接了电话,对面是个30岁左右的男性,声音很温和,上来确认“你是**吧?”然后就直接开始问题。题目大多是基础题,涉及到C++的特性和底层编译实现:windows程序加载到内存后的布局,函数调用压栈处理,函数的返回值(返回一个类对象)是怎么实现的,单例怎么实现,虚析构函数,虚函数表的工作原理,STL里map的数据结构(红黑树),红黑树的特性,new和malloc的区别,模板全特化和偏特化,main函数调用前发生了什么,windows里进程同步异步,TCP4次挥手,TCP和UDP的区别。这些问题我觉得自己只答好了50%,甚至于多线程和网络都没有来得及复习好,只能凭着一点印象去回答。还问了简历上的VR项目和Direct3D的渲染管线,因为是游戏事业群,所以面试官对这个比较感兴趣。

电面后一天查到状态变成“已报备”,也是很无奈,只能继续准备4月初的笔试。期间在newcoder上刷编程题和笔试真题,一边做针对性的复习。

笔试的题量挺大的,30道选择题,不能返回上一题修改,很容易开始做的很慢,然后时间就不够了。到解答题的时候,我突然发现输入不了回车、退格这些键,简直要崩溃。如果当时冷静一点重启电脑就好了。但是第一次遇到这种问题,还是在这么关键的时候,简直坑的不行。直接导致第一道算法题懵逼没写(小后悔,当时的思路是对的,没敢想下去),数据结构题考B+树和哈希,复习的不多瞎写。编程题显然连编译都无法通过,我也是强行把代码写一行,只求是人工阅卷。其实2道编程题都挺容易,基本写对了。

如果电脑当时没出故障笔试稳过的,但是偏偏这么一出就很悬了。笔试完没了音讯,但是不能停止复习。这种心情是很焦躁的,看不进去书,玩游戏又玩不舒服。直到线路面试快到北京的前两天晚上11点,我几乎快放弃地上床睡觉了,微信、短信、邮件一起来了说星期一来酒店面试。腾讯笔试似乎是人工阅卷的,面试官后来还问我编程题代码写一行的事。而且笔试成绩似乎没有那么重要,我一个同学没有参加笔试都收到了面试通知(可能是学校比较好的原因)。

星期一早上9点钟面试,我大概8点45到,扫了二维码报道完就在大厅里坐着,人其实挺多的。过了5分钟我就收到了短信通知面试开始,应该是这个面试官今天第一个面的。整个面试场在一个超大的大厅里,摆了上百张桌子,每个桌子前坐一个面试官(当然有的没有来)。我的面试官是个挺年轻的技术男,微胖,笑容很温和,面前一台ThinkPad。坐下来先做个自我介绍,然后他直接说:“之前我的同事给你电话面试过对吗?”我说是,他点点头,先问我虚函数表的工作原理,这次我复习得很充分,回答得就很好。然后他让我手写一个函数,合并两个有序链表。这也没有难度,认真地写完,处理好各种特殊情况。本来以为他会问网络、多线程的问题,所以我背了好多,结果人家一句也没提,直接奔我简历上写的计算机图形学问:讲一下渲染管线,我就从IA讲到OM,结果他问的很细,几乎每一个环节都问了:输入的布局,投影变换矩阵的推导(之前完美世界笔试的一道题就是推导这个,我没有复习过,全凭数学知识推出来了,所以印象很深),曲面细分的原理(并没有写过,就看过一丢丢),回答按贝塞尔曲线插值,又问贝塞尔曲线的表达式(完全没记,就记得是一堆多项式),有没有写过几何着色器(没写过),光栅化是什么,像素着色器的作用,答光照模型,又问光照模型有哪些,答Phong和Cook-Torrance,又问这两个的表达式,我就记得Phong的,然后给他详细解释了一下每一项的意义。图形学问完又稍微问了一下简历上的两个项目,一个VR,一个课程作业的游戏,我提前录了视频和截图,给他看了。大概30多分钟,他觉得差不多了,然后跟我说安排我直接去二面,也省的我再跑过来一趟,面试官在另一个房间的**号桌。

一面和二面一起也是省了不少心。二面的房间就不大了,只有十几张桌子。面试官年纪看上去稍长,头发比较乱,脸胖胖的,黑框眼镜,面前也是一台ThinkPad。与一面相比就是不苟言笑。这一面完全没有聊基础知识,就围绕着两个项目扯。先聊VR,问我为什么HTC vive戴上去会头晕,无线的vive比有线的强在哪,我并没有很深地去了解过,粗略地回答完也提出了自己在VR项目的开发过程中遇到的一些理念上的问题,比如虚拟场景里的移动和现实空间的移动限制,面试官没有解答,我也只是出于表现自己的思考而不是为了寻求解答。然后聊到游戏,我先给他看了截图(因为动态效果不好所以没有选择录屏),介绍一下游戏开发的背景和游戏的规则,他并没有心情听完规则(囧)。我简历上写的是我负责逻辑类的设计,他就和我讨论了这些类的关系,每个类的字段,其间穿插了类的size问题。还说到寻路算法的设计(也是简历上写的)。二面也是30多分钟结束。我自觉表现良好,瞬间觉得轻松多了,不用再复习那些tricks了。

HR面在最后一天下午。面试官是个大姐姐。开始倒没有拉家常式聊天,反倒又问项目,说挑一个给她介绍一下。然后问了开发项目的过程,做了哪些工作。后面就是按套路介绍自己的性格、特点。女朋友问题也是一大考点,可能因为这个导致面完心情莫名其妙地很郁闷。

一周后收到了电话通知offer。

稍微总结一下:腾讯比较重视基础知识,复习要有职位的针对性,简历上的项目很关键,刷题没有那么夸张,我就刷了不到50道编程题,不到200道选择题。

你可能感兴趣的:(记腾讯的暑期实习面试)