【腾讯】C++岗-非科班渣硕面经(CDG口头offer)
个人背景:
楼主本科某211计算机科学与技术(空间信息与数字技术)专业。硕士某C9地理信息专业,也许有大佬了
解这个专业…。本科因为是计算机学院的,因此一些专业课都接触过,考了个软件设计师的证,参加过
一次全国计算机仿真大赛(没拿到名次)。研究生期间用python写了互联网地图爬虫、新浪微博爬
虫,参加了一次游戏开发竞赛(Unity + C#),3月以来学习C++网络编程,读STL源码剖析,复习操作系
统、计网、数据库原理等知识。刷题不多,参加了两届蓝桥杯软件设计竞赛(去年省三、今年省一)。
因此,这是一篇非科班渣硕的实习面经。楼主目前拿到海康威视C++研发、亿联网络C++研发、华为
(不知道部门)、腾讯]CDG后台开发(hr口头offer,保佑并祈祷oc)。从2月末以来每天光临牛
客,收获良多,因此写此面经一方面总结自己,一方面回馈牛客。
腾讯CDG 事务型开发 (3轮技术+1hr)
就在楼主准备抉择上述3个offer的时候,腾讯突然发来了面试邀请,楼主都不知道腾讯捞了,果断接
受邀请,第二天下午2点牛客网视频面。戏剧性的一幕还是躲不掉,楼主当时以为只要能视频就可以
了,结果拿了个ipad就准备在牛客面试,没想到ipad是不行的,要pc端…,当时心里万念俱灰,没想到
面试官看到楼主没有进牛客的面试房间,一个电话打了过来询问情况,楼主如实说明后,面试官说那改
到下午6点吧。太感人了!腾讯怎么有这么好的面试官!
一面 (一小时20分钟,牛课视频)
这一面是楼主面腾讯经历过最紧张,压力最大的一次。首先面试官是超级好的,只是楼主自己没有自
信,说话小心翼翼。
1、 自我介绍,每个项目都深挖。网络爬虫中生产者消费者模型介绍一下,新浪微博反爬虫怎么做的,游戏中一个著名的A*寻路算法了解吗?(楼主恰好了解一些)
2、 C++语言方面看过哪些书? 答:C++ Primer、 STL源码剖析。
3、 STL源码剖析是侯捷的那本吗? Vector如果和哪个数据结构最相近?答:数组。Vector的内部结构是
怎样的?答:连续的内存分配,3个迭代器,begin、end、end_of_storage;vector的存数据和取数据
的时间复杂度是多少?答:只能push_back,复杂度是常数,并补充查找元素的时间复杂度是O(n),然
后看到面试官有点头笑!Vector的扩充机制说一下?为什么是2倍扩充,1.5倍不可以吗?答:楼主其实
不是特别清楚,只说×2的话比较利于计算机计算,还有内存碎片上的考量。面试官没继续问了。
4、 STL中的list和哪个数据结构最相近?答:双向循环链表。存数据和取数据的时间复杂度?答:随机
访问时间复杂度是O(n),支持push_back和push_front.
5、 还用过其它容器吗?答:map,unorderedmap. 内心猜测其实面试官应该就是想问这两个。然后
主动说map的底层是一颗红黑树,unorderedmap底层是哈希链表。面试官继续问,红黑树是什么?
答: 平衡二叉排序树,因为高度平衡,因此不会出现某一只手臂过长(侯捷老师原话),因此一般的操
作时间复杂度都位置在O(lgn)。继续问,哈希表的冲突解决方法?答:开放地址、哈希链表、再哈
希。补充,开放地址法又分为顺序探测、二次探测等。
6、 内存池了解吗?楼主回答了STL中的内存池设计。
7、 操作系统看过哪些书?答:操作系统基本原理(楼主也不知道有没有这本书),王道考研操作系
统。面试官问为什么看考研的书,答:这本书的知识调理清晰,很适合复习…。
8、 多进程和多线程之间的区别?经典问题…
9、 操作系统的进程调度策略?楼主这里卡了1分钟左右,然后想起来是什么先来先服务、短作业优
先、优先级优先。楼主还没说完,面试官打断问:先来先服务和短作业优先适用于哪种类型的操作系
统?楼主又卡了1分钟,答:不分时操作系统(当时真想钻进地缝…)
10、 Linux熟吗?答:不是很熟,了解过shell脚本的语法。面试官没继续追问了。
11、 说一下内存碎片,外碎片和内碎片?经典问题
12、 计算机网络看过哪本书?答:谢希仁的那本计算机网络。
13、 TCP/IP的网络分层说一下,相关协议说一下…
14、 Ping命令的基本原理?答:ICMP,发送主机发送echo请求,接受主机回复echo报文。
15、 Select和epoll的区别?各有什么特点?经典问题
16、 看到你说你参加过一个程序设计竞赛?答:蓝桥杯,参加了2届,随后开始聊比赛,面试官曾经也
应该是打比赛的。然后居然还问我,你今年这次比赛都AC了哪些题??? 楼主尽力去回忆了几道题。
然后主动说自己的不足,dp掌握的不扎实啊、数论了解不深入啊等等。
17、 算法竞赛都看什么书?答:买过算法]导论、刘汝佳的算法竞赛指南。面试官给了一些竞赛的建
议,然后说竞赛对一个人的成长帮助很大,等等。
18、 数据结构应该很了解吧?答: 应该还不错。问了快排的实现原理,是否稳定,平均、最坏时间复杂
度。怎样避免最坏时间复杂度的情况?答:随机选择哨兵。
19、 还了解什么算法?楼主这里有点懵,不知道怎么回答。就说:DP、DFS、BFS、字符串算法、并
查集、博弈论、欧几里得算法…,这里超级紧张,好怕面试官深问,但还好没继续问。
20、 目前的C++代码量?编程过程中一般如何调试?
21、 反问问题。问为什么被面试官捞了起来?(哈哈,楼主内心就还是觉得很意外) 然后面试官给了学
习建议,介绍了CDG的业务。
还有一些没有完全记下来,虽然面试官人很好,但聊到后面楼主都麻木了,幸运的是,面试结束后很快
就看到,状态变成了复试!
二面 技术电话面 (30分钟不到)
1面结束第二天,就约了2面,可能是时间比较靠后了吧,面试官们工作效率超级高。二面只面了不到
30分钟,自我介绍都没介绍完,就被打断了。接着对楼主硕士的专业表达出了些许不满意吧。
主要对楼主简历上的C++socket网络编程项目进行简单的提问吧。
1、 socket编程方法
2、 网络粘包的处理手段
3、 内存池如何设计
然后就要结束了,楼主以为要凉了,就急着向面试官说,可不可以再提问(头铁…),面试官无奈加问:数
据库了解吗?索引是什么?
楼主回答了索引,并扩充了一点知识。然后反问问题,结束二面。10分钟后,发现状态变成了hr面!
太惊喜了,一度以为要凉了!
Hr面 微信视频面,53分钟
是的,你没有看错,hr面了53分钟。二面结束第二天,hr打电话过来约微信视频面试,然后楼主和hr
小姐姐面了53分钟,具体内容是常见的性格方面和做事能力方面的考量吧。然后告知,加一轮交叉
面。是的,并没有结束,压力超大的交叉面
GM/EVP/面委 电话,40分钟
时间是周一早上9点,接到了面试官电话,也是CDG部门的面试***会面试官。自我介绍后,直接发
问。面委一般会一次性问多个问题,然后听我统一回答。
1、 TCP和UDP的区别,TCP的拥塞控制和流量控制方法。经典问题
2、 多线程和多进程区别,虚拟内存介绍一下。经典问题
3、 数据库的索引,事务和mysql相关介绍一下。经典问题
4、 Main函数执行之前还会执行什么?
5、 网络编程中,如何解决数据传输的安全性问题?加密算法了解吗?
6、网络爬虫的工作流程,如何解析网页结构,如果解析jason和XML,你自己补充着说!
前3个问题,楼主回答了很久吧。4和5不是很了解。面试官可能觉得楼主的项目并不出众,没必要深挖
了。
反问环节,结束面试。
补充一下,楼主腾讯提前批挂了一次,正式批参加笔试,做的是游戏开发的卷子,ac了2道题…
面试完成后,10分钟状态从GM/EVP/面委又变成了HR面,然后过了10分钟变成已完成!随后楼主联系
hr小姐姐,小姐姐告知所有环节通过。又过了一天,给了口头offer。一个星期的时间,经历了腾讯4轮
面试,收获良多!在这里祈祷offer call!
更新:
5月24日收到offer!