腾讯C++后台开发实习面经(已拿offer)

过程是曲折的,结果是美好的。
师姐直接内推自己的部门,TEG。
面完后凭记忆复盘,不是非常详细,但问题大部分都在这里了。
一面
3.2 电话面试1h
自我介绍
项目
科研,背景,怎么实现的
深拷贝与浅拷贝
析构函数为什么是虚的
三次握手交换了什么(seq/ack+发送窗口),发送窗口是干什么的,解释滑动窗口协议
信号和信号量的区别
IO协议栈是什么(不懂,能不能给点解释),面试官举例说打开一个文件,从键盘输入再保存,这段时间发生了什么。我回答说键盘是外设,产生IO中断,CPU读取放入内存,再从内存放入磁盘。面试官追问读取数据怎么从内存写入磁盘,我扯了一些页面置换什么的(答非所问),中间我还扯到了L1 L2 L3缓存,被追问里面有什么,我不是特别了解,只说了有一些寄存器什么的。
32位系统,地址空间是多大(2^32=4GB)
物理地址空间和虚拟地址空间怎么转换(扯了一些基本定义,最后坦言具体怎么转换的不知道,答案应该是MMU)
内存有哪些技术(开放回答,交换技术与虚拟内存,重点讲虚拟内存、页面页框页表、缓存淘汰的策略一般是LRU)
算法题:以单词为最小单位翻转字符串,先整体翻转,然后遍历,碰到空格时把前面一小段翻转(单词翻转)
算法题:10万个数字找重复数据,我回答了哈希表、位图、布隆过滤器、排序
还有什么想问,为了表现一下自己,问了一下对方产品怎么做的一致性,还问了有没有借鉴PAXOS与RAFT算法,对方给我讲了挺多关于存储的知识
总结:没问网络并发与数据库,除了操作系统的几个问题,其他都答的挺好的,看来要多看看操作系统的细节了,最后的提问交流还挺愉快的
师姐反馈,过了一面,等二面吧。
二面
3.6 牛客网1h
个人介绍
项目和比赛问得挺仔细的
epoll的工作模式,优缺点
select怎么做的,缺点,内存开销
重载怎么实现的(名字翻译)
虚函数
管道分为哪几种,匿名管道怎么实现的(fork,拷贝父进程地址空间,共享同一个管道socket,所以可以匿名通信)
手撕代码:二叉树的(最大)宽度。牛客网面试房间,写完之后要调用main函数输出的,代码能work。
当天师姐反馈,过了二面,三面是大boss,很严肃,可能会很有压力,做好心理准备(事实证明,做了心理准备也没用。。)
三面(压力面)
3.10 腾讯会议1h
怼项目,优化手段都没问、调度器也没问,就问为什么会有死锁,我回答说调度规则决定的,能否试探加锁去解决死锁,我说不行,因为车辆不准只走一部分,如果它没法走满速度,那它会等待,这样有可能会循环等待,举了个四方形环路的例子,这个例子给出来后才打消了面试官的疑虑,庆幸当时能够在巨大的压力下构建出一个死锁场景。
问SDN项目遇到的困难,我说用户与控制器通信的方式弄了很久才知道,面试官认为这是一个很基础的功能,任何SDN控制器都要提供,说我技术选型有问题,我回答最开始没想到需要这个功能,这个框架已经搭建好了,所以就没想其他SDN控制器,这需要自己手动实现,最后是通过NAT技术转换实现的用户与控制器通信的(这块有点减分,说我技术选型有问题,语气略生硬)。SDN项目里的时延检测模块,为何精度要好(SDN环境下,交换机没有能力处理包头,所以要上交给控制器,所以得自己实现检测方法),时间是怎么得到的(我回答说Python的time库,调用time.time()即可得到当前时间),追问time函数返回值的精度是多少(我被怼的有点慌了,这里也忘记具体精度了,被狠狠地怼了一番)
Linux的定时精度,怎么往前走的(晶振,产生一个滴答,定时器,如时间轮,这里应该算是回答上来了)
进程间通信,要发送10GB数据,要怎么做,首先说了管道,再socket,然后用socket距离说了流程:因为socket有缓冲区,所以可以先分段,然后再一边写,一边读。然后后问我IPC哪个方式最快,回答共享内存,话题转移到共享内存的实现了,我说mmap,问我有没有实际写过,我说没有,但我知道一些应用场景。
mmap有哪些应用(malloc分配内存,以及epoll往内核注册事件,这里回答上来了)
集合,里面每个数字都有两个,只有一个数字只有一个(我回答异或,问我有没有其他的,我说哈希表,然后详细说了两种方法的具体实现以及时空复杂度)
智力题,两种药丸A和B,外表完全一样,也没法通过气味甄别,小明有两颗A也有两颗B,但把它们弄混了,小明每次需要服用半颗A半颗B,怎么办(四等分切割,回答出来了)
总结:面试官给我的压力很大,说话语速很快,整个面试处于一种很紧张的状态,被怼项目的时候差点想放弃,但还是坚持面完了,可以说,这次面试极大地提高了我的承压能力。
面完问师姐,暂时还没消息,我以为凉凉了,当天晚上告诉我过了,激动万分。
但是面试状态一直是复试,中间拜托师姐催催,但是还是没反应,直到3.19,观望状态突然变为了初试,我慌了,赶紧问师姐,师姐问了HR,说两种可能:要么凉、要么换组了。当时万念俱灰,非常沮丧。
3.20状态又变为了复试,我懵了,晚上状态直接变为了HR面试,开心极了。
HR面
3.27 中午收到下午三点HR面试邀约的邮件,于是打算小憩一会,在睡梦中突然接到一个来自杭州的电话,阿里四面来了!好不容易面完,挂完电话的一分钟之后,广东电话就来了。
3.27 40min 本来约好电话面试,但是由于通话不清晰,改为了在腾讯会议不开视频的通话面试,以下A是本人
看你的比赛经历比较丰富,你是怎么看比赛的呢
A:因为在校学生参与实际大型项目的机会比较少,比赛是个很好的选择,能锻炼编程能力,也能锻炼解决问题、分析问题的能力
那为什么不来实习,而去比赛呢
A:腾讯要求比较高,为了打好基础,提高自己,所以我选择了打比赛,而且当时也没系统地复习过后台开发相关的知识,所以还是继续学习,参加比赛,提高自己
说说华为比赛
A:巴拉巴拉
比赛的分工是怎么样的呢
A:我是队长兼主程,队友辅助巴拉巴拉
华为比赛过程怎么样的,有遇到什么技术之外的难题吗
A:巴拉巴拉(团队合作)
嗯。看得出来这个团队合作对你来说是难忘的记忆
在长达两三年的科研项目中获得的最大收获
A:思维模式,发现问题-分析问题-解决问题,巴拉巴拉
(好像很认同这个思维模式)你在什么时候发现自己掌握了这个思维模式呢
A:直接举了华为软件精英挑战赛的例子,从分析题目,到提出问题,用优化手段解决问题,再到碰到技术难题,再集中攻关,最后收获成果,这个成就感是很强的,巴拉巴拉
你没有互联网大厂实习经历,如何理解互联网后台岗位
A:虽然没有实习,但是有很多了解,通过前面几轮技术面,我相信我的后台知识储备也是过关的,我也非常想进腾讯互联网公司,互联网公司主要是做产品与服务,像腾讯这种大体量的公司,产品要服务于万千用户,那为了提供更加优质的产品与服务,就需要技术人员的分工合作,前端后台等等,后台的方向有很多,数据库、服务器,我相信腾讯肯定用的是最好的硬件资源,但再好的设备也要交到人的手上才能发挥优势,后台就是做这样的事,我们要做的就是最大化利用硬件资源,为产品与服务提供基础保障等等,巴拉巴拉
你讲的挺好的,很有主持人范,我都被你带进去了
A:我以前做过主持人,所以说话这方面还算不错
实习时间
A:三个月没问题的巴拉巴拉
你有什么问题呢
A:大概什么时候有结果
几个小时后去官网查询状态即可,如果是已完成,就等offer审批,审批需要两三天,大概下个星期会有结果
A:我会和我的内推师姐在同一个部门吗
(查了一下电脑,发现我的面试官也是同一个部门)可能会
A:我觉得如果有很熟的直系师姐带我的话,我会成长得更快
不用担心,我们会安排导师,都很nice,而且我相信你的沟通能力,肯定可以可以成长得很快的。
(打算结束时)最近有没有面其他公司?
A:投了一些简历(因为差不多要结束了,我当时脑子没转过来,忘记说“我最想去的还是腾讯”这句话了!)
总结:刚面完阿里四面,不仅要手撕代码,还问了很多东西,因为我说了三点要结束,所以面试官语速很快,我觉得我发挥得不算太好。在听腾讯HR小姐姐说话的时候,还偶尔还有点走神,思绪还没有完全从半个小时前的一些问题中出来。所幸HR小姐姐很温柔,说话轻声细语,很快我也冷静了下来,开始发挥出我应该有的水平。从3.2一面,到3.6二面,再到亚历山大的3.10三面,以为自己在总监的连环炮下要凉了,但内推师姐说我过了,但是简历一直没更新,3.19,我的状态变为了初试,当时心灰意冷,师姐问了HR,说要么凉,要么转组,但3.20下午又变为了复试,感觉峰回路转,晚上又变为了HR面试,我心情激动,一直等啊等,终于在3.27中午接收到了面试邀约,许愿offer!
4.1 17点,在健身的时候来了个电话,广东深圳,座机号码,oc来啦,两个小时后收到了录用函,感谢腾讯爸爸收留。

腾讯腾讯视频(PCG)
一面(3小时48分钟):
你没看错,三个小时,很多记不住了,问的太多太多了,嗓子都哑了
主要是技术栈不太一样,也是不放过我
1、代码测试 三道代码题 ,给90分钟,不过很快就写完了,不允许使用任何库函数和自带的数据结构
(1) 找出第100大的数
(2) 字符串复制函数
(3) 10进制数字转成64进制数,进制符包括0-9 A-Z a-z 和#@
问了快排,递归非递归的实现
2、socket编程,原理
3、time wait 都设置成0 会怎样?
4、socket如何断开链接? tcp挥手
5、java如何编译的,具体细节
6、linux问了很多,我不太会,记不住了,这块就问了挺久
7、谈了谈项目,具体用到的地方,谈了很多,消息队列,实现机制,如何保证可用?redis原理 zookeeper原理,集群等等
这块问的太深了,崩了,mysql也问了比如分库分表,如何解决数据重复
8、进程如何划分内存

9、浏览器抓包,解释head中的每部分的意思
10、get post什么区别?
11、cookie干嘛用
12、访问百度,对方用负载均衡,大概经过的过程
13、进程间的通信
14、问了几个问题我没记住,应该是编译原理里的,还问我是不是没有学过编译原理我说是的
15、对http发送出的数据包,是在网卡中解析还是在内存中解析
16、java的数据结构
17、redis的zset的底层实现
18、100亿的qq号,但是有重复,个数大概就25亿个,剩下的都重复,如何找出它们重复的个数或者找到哪些是重复的,只能在一台机器上操作且要在内存中
19、进程与线程的关系(估计是看我Linux太菜,还是用java 的 没啥问的了)
20、还有几个真的记不住了。
21、技术栈是c++ 和 go,问能接受不,指定回答能
22、java中的多态如何实现的,为什么就可以多态了呢,编译的时候有什么不同,为什么要重写方法呢?
23、mysql的引擎区别
24、mysql的索引 b+树 红黑树
25、红黑树的特点
26、mysql事务
27、mysql可重复读的mvcc 如果多个线程同时修改一行,那最后提交的时候结果是什么?
28、mysql数据了过亿,如果快速查找和优化?我这里说的索引和分库分表,分库分表就有展开问,问跪了
29、linux驱动
一些记不住了尽力了

以为凉了结果没过几小时变成复试了,晚上九点多在做网易的测评,没做完就又来电话了,是pcg的二面

二面(46分钟)
1、项目,这块我白话挺久,阿里hr面的时候hr姐姐给我的建议,怎么回答项目,我好好整理了一番
2、问我项目的技术怎么容灾,有一顿白话
3、用户态和内核态,切换会出现什么问题
4、epoll
5、进程间如何通信
6、c++编译的过程大概是什么?
7、java中的hashMap
8、b+树 红黑树 实现 和复杂度
9、好像还有两个问题 ,记不起来了

最后欢迎关注我的公众号:互联网校招面经。每天一篇高质量互联网校招面经分享!每月定期总结归纳!还有电子书福利赠送!
腾讯C++后台开发实习面经(已拿offer)
腾讯C++后台开发实习面经(已拿offer)