处于某些原因对腾讯还是比较向往的,然后没想到的是整个腾讯的面试流程剧情跌宕起伏,算上电面和HR面的话,我一共面了7次……
第一次电面
第一次电面的时候我投的岗位是SNG的PC客户端研发,整个电面由两个人完成。第一个人主要问了我各种比较偏的知识点。
模板类能不能有虚函数 (可能是想问模板函数能不能是虚函数?
堆污染
如何检测和定位内存泄漏
智能指针
虚函数的实现方法
第二个面试官主要是问了算法相关的东西,先让我讲了我自己对动态规划的理解,然后问了我三个算法题,答的比较烂吧。 面试结束后不久我就把岗位从PC端开发改成了后台开发。
第二次电面
感觉上是换了职位之后又开始了一个新的面试流程,这次电面比较轻松,主要讲项目然后问了各种基础知识。
什么是多态
虚函数的实现方法
虚拟内存
页中断
Hadoop的MapReduce
死锁的必要条件
然后似乎就被丢去现场面试了…
一面 早上9点半要去一个打车要20多分钟的地方面试,一共就睡了5个小时,然后现场人好多,排队报道要等10几分钟,技术岗的报道是单线程的…
面试官直接给了我一张纸,上面有几个题目,让我写代码。第一个题是给一个空类,问他的内存布局,我表示我只知道空类的size也是1。第二个代码题大概是基础的那种设计一个类管理资源,实现拷贝构造函数、析构函数啥的。第三个算法题实现大整数加法。 纸上的题做完后面试官问了我TCP链接的三次握手和四次挥手。接下来就就是各种玄学问题,如何学习、你是怎么知道boost能写http服务器的、你为什么写这些东西。 最后面试官问了我能不能写Java。
二面 二面进行的很简短,因为match不上。
简单谈了谈项目之后面试官问我想做啥,我表示倾向于做底层相关的比如性能调优什么的。然后面试官表示首先他们这里要写Java,其次全是业务逻辑,我可能会觉得很不喜欢,大概是match不太上。最后说会帮我推荐给其他面试官。
被捡走之后的一面 上一轮的二面结束后正准备走,刚到电梯门口就被TEG的架构平台部捡走了。然后继续回去面。
面试官是个很有意思的人,一点距离感也没有,整个面试的过程十分随意。
问我的第一个问题是“你们学校的网络下载东西能有多快?”我表达了一下内网大概有12、13MB/s的样子,然后他问我为什么是这么快。我没有get到重点在哪,就和面试官纠结了一会儿。大概5分钟之后我才反应过来重点是拥塞控制,然后就给面试官讲了TCP的拥塞控制,面试官表示这个问题妥了。
然后面试官让我设计一个接口,这个接口接收一个有序的标准容器查找一个指定的值,然后要求该接口可以自动选择使用顺序查找或者是二分查找。问题的重点显然在于如何判断该容器是否支持随机访问。我此前是知道标准迭代器都会定义一个iterator_category的,但是脑子秀逗了一下,没有想到利用这个定义一个针对random_access_iterator_tag偏特化的函数使用二分查找,其他的类型使用迭代查找。于是这题就算是没答出来。
于是面试官表示“问你个算法题,你要是不会我就要对你产生怀疑了“,题目就是打印一个数列C(n, m)的所有方案。这个比较简单,但是犯了个小错误。
接下来面试官问了我喜欢玩什么游戏,我说了一下舰队Collection,面试官当然表示不知道。然后我就想了想腾讯的游戏似乎只玩过DNF,就讲了这个。然后他就以此为话头,让我设计一个排名系统,要求支持快速查找一个人的分数排第几,修改他的分数等等。我讲了个使用(平衡)二叉查找树的方法。
面试官觉得技术上的问题问的差不多了,又因为最后一个题的话头是游戏,所以最后就互相吹了一波游戏经历……….
最后面试官让我陪他下去买包烟,路上顺便谈了谈人生。
被捡走之后的二面 问的比较散碎,整个过程也很简短,不少东西我都是只知道个概念。
开场问了个设计题,有30亿QQ用户,假设QQ号是连续的,单台服务器查询极限50k次/s,24G内存,1TB硬盘。设计一个系统可以接受200k次/s查询最少需要几台服务器。
然后问了一些关于Linux后台的知识
epoll的原理
nginx反向代理
为什么控制台关掉后你运行的程序也停掉了
守护进程
HR面
大概问了我家庭背景、有没有妹子、投了哪些公司、选择一家公司会考虑那些地方等等。最后我大概说下了还是比较倾向于腾讯。
##### 总结 参加完签约后之后腾讯给我的感觉也是很有活力的一家公司,加上之前看过一些宣传片感觉真的还是很不错的。相对于之前的两次电面,整个现场的面试过程会给人一种找不到重点的感觉,有点像是闲聊中穿插着问题。最后把我捡走的部门做的东西我也比较感兴趣