腾讯ieg后台开发面试

岗位:C++后台开发

回顾一下三轮技术面试,总的来说非常坎坷,每一轮的面试都非常细节,不得不说腾讯面试官对于基础的扎实程度要求很高。

初试  视频面:1h15min
面试官非常和蔼,首先让我介绍了一下自己,然后就是对于我之前在腾讯参加引力计划的一些细节的考察,由项目拓展到各种网络+操作系统:
1、项目中采用的websocket协议与http协议之间的区别
2、把http1.1,http2,http3的发展过程,还有一些具体细节说一下,类似于http1.1keep alive,http2的静态表,动态表,HPACK编码,http3的QUIC具体细节QPACK,TLS1.3以及运输层实现为UDP
3、关于UDP如何实现类似于TCP状态连接?(加上seq等)
4、关于TCP的拥塞控制(以及BBR算法的提出缘由简单介绍下,丢包驱动->测量驱动)
5、TCP的四次挥手状态分别是什么,以及他们在性能上可否进行调优(Linux上的TCP参数调优,time_wait复用,半连接队列,全连接队列...)?
6、项目中用到的epoll,可否介绍一下select,poll,epoll的具体原理,以及发展的原因,在epoll基础上的Reator框架是什么形式?(可以结合Redis的单线程reator,Netty的主从reator回答)
7、介绍一下红黑树在linux内核中的应用(看到简历上写的了解内核和红黑树),回答了两个:
(1)、CFS调度算法(vruntime的大小来构造红黑树)
(2)、mm_struct的vm_area_struct(不同的虚拟内存区域之间用红黑树进行连接)
8、对我的科研项目问了一下:对抗机器学习中的特征选择,简单介绍一下

上面讲完差不多40分钟,然后开始做题:
算法题:
合并有序链表(leetcode原题)

反问:
游戏服务器开发中现在重点关注技术?(高并发,高可用的分布式架构,现在也比较流行和AI结合面)

复试  视频面:1h3min
面试官看上去是个大佬,后来证明他确实是😕
一开始上来让我介绍,说一下自己本科和研究生期间学过的计算机方面的课程(操作系统、网络、数据结构与算法、计组、微机等)
面试题:
1、了解Linux的网络协议栈低层实现吗?(从网卡开始收包,结构体拷贝链:ring_buffer->sk_buff->socket,每一层所在的OSI层,以及linux中所在的子系统)
2、数据包发送是如果采用零拷贝技术,应该在哪些方面要进行改进? (SG_DMA的选用,sendfile函数)
3、项目中涉及到的websocket协议,对于包体是如何编码的?是probuff还是其他的?如果是自己设计一个网络协议,要考虑到哪些问题(粘包问题,纠错问题,编码问题等)
4、项目中一个普通的包大概多少字节,当时有没有观测CPU占用率,哪些指标可以观测性能,并发量为多少QPS?(平均负载等)
5、对第4题追问,那么如何方法可以提升Linux性能?(reator模型中线程池的线程个数与CPU核心数相同,还有网络方面也可以考虑:初试中提到的点)
6、协程与线程的底层区别,为什么协程更轻量,以及异步IO的原理?windows的IOCP?
7、场景题:如果现在你手上有1亿个数字,那么你如何利用手上的工具进行排序?涉及到的数据结构?(其实1亿个数字占用空间并不大~)
8、go与C++的应用场景可否谈一下?以及目前服务器性能提高的主要手段还有哪些?还有微服务了解多少?(问的比较宏观,技术的全面性)
9、啥时候可以入职?

没有算法题,很开心😂
反问:
Linux内核这一块自己比较感兴趣,面试官怎么看?(面试官回答这是程序员的必备技能,但是基础好的话应对各种应用层的技术就会发现思想大致相同,所以啃一啃也很有意义)


三面 电话面:40min
面试题:
1、在项目中,Reator模型的client_fd如何分配?(我回答自己采用的是round_roubin,也可以采用别的分配方式)
2、分配时是共用消息队列还是每个子线程一个队列?
3、http服务器项目中的http解析报头,报体时所需要注意的问题?
4、每个client结构体中存储了哪些数据结构?
5、介绍一下stl源码,自己讲了几个(大概20min):
(1)vector扩容操作
(2)deque是链表队列,(queue和stack为适配器)
(3)sort是内省排序
(4)list双向链表
(5)set和map底层采用红黑树,unordered_map和unordered_set采用的是哈希表
6、对于不同的容器采用sort排序时如何进行区分?(类型萃取:type_traits和type_info技术)

中午状态变成HR面,然后收到云证与综合测试的通知

HR面试 (40min)
面试题:
1、介绍一下本科或者研究生自己印象最深的科目?
2、为什么想转计算机?
3、假期里读了哪些书?
4、大学期间印象最深的事情?
5、对于工作的发展及规划?
7、平时喜欢玩什么游戏?水平咋样?
8、手上还有没有其他的offer,如果要选择的话,怎么选?
9、评价一下自己?
10、大概啥时候入职?
11、有什么问题要问的?

总的来说,HR面试还是比较轻松愉悦的,比技术轻松很多啊,可能想看看你的性格还有做事情的热爱程度以及靠不靠谱。

写在最后的话:
如果是面试服务器方面的开发,我认为可以多研究一下linux开源代码,可以看看极客时间上刘超老师的《趣谈操作系统》和《趣谈网络协议》,这两个专栏,虽然很硬核,但是啃个3-4遍,相信对于基础的理解一定会有质的飞跃,复习期间可以搭配着一些《图解http》或者《C++服务器开发精髓》这样的书,由浅入深,对于写在简历上的项目,相信牛客的小伙伴们也能够收获自己的心仪offer~如果有技术上的问题也可以一起交流哦~



#腾讯暑期实习##春招##实习##面经##求offer#
全部评论
请问lz有oc了吗 加油加油!
点赞 回复 分享
发布于 2022-04-06 15:11
楼主请问投的是ieg的暑期实习吗
2 回复 分享
发布于 2022-03-14 16:12
这也太强了,请问你的项目是什么项目呀。
2 回复 分享
发布于 2022-03-13 10:53
lz从hr面结束后到oc过了几天呢
点赞 回复 分享
发布于 2022-04-11 14:34
真的强啊
点赞 回复 分享
发布于 2022-04-07 21:15
楼主,请问下你Linux内核方面的知识是怎么学习的?有推荐的书籍吗?
点赞 回复 分享
发布于 2022-04-06 14:14
欢迎来到腾讯。你是我第一个看到推荐 c++服务器开发精髓 这本新书的,不错哦🤪
点赞 回复 分享
发布于 2022-04-05 15:51
楼主也太强了,这面试也太细了,好多问题我都答不上来,请问楼主准备了多久?
点赞 回复 分享
发布于 2022-03-08 23:56
楼主好棒投上羡慕的目光,蹭蹭好运
点赞 回复 分享
发布于 2022-02-28 23:22
你好哇,腾讯暑期实习已经开始了吗,如何投递呀
点赞 回复 分享
发布于 2022-02-18 18:43
灵的话说下,我也试试
点赞 回复 分享
发布于 2022-02-15 13:09

相关推荐

后台收到很多私信问学习方法经验等,所以今天我把这些经验分享给正在为实习或求职努力的各位,希望能给大家带来一些启发,也想告诉大家:只要坚持学习,目标终会触手可及。项目准备:AI 模拟,反复 “拷打”​简历上的实习经历和项目经历是面试中的重点考察内容,面试官往往会针对项目的细节、技术难点、解决方案等进行深入提问。我经常使用 AI 进行模拟面试,反复拷打自己的项目(建议大家和豆包说的时候提示词可以写:请你作为一个最严厉的面试官,疯狂压力面我,要求以十年经验的正职员工难度进行面试我)。​首先,我会把自己项目的详细信息整理成文档,包括项目背景、需求分析、技术架构、核心功能实现、遇到的问题及解决方案等。然后,我会让 AI 扮演面试官的角色,根据我提供的项目信息提出各种问题。比如,AI 可能会问 “你在项目中使用的这个技术框架,为什么选择它而不是其他框架?”“在项目开发过程中,遇到的最大技术难题是什么?你是如何解决的?”“如果让你重新优化这个项目,你会从哪些方面入手?”​面对 AI 提出的问题,我会认真思考并回答,之后再让 AI 对我的回答进行评价和补充。如果我的回答存在漏洞或者不够全面,AI 会指出问题所在,并给出更完善的思路。通过这样反复的模拟面试和拷打,我对项目的每个细节都了如指掌,在实际面试中,无论面试官提出多么刁钻的问题,我都能清晰、有条理地进行回答。面试题准备:以 “背” 为基,借 AI 深入​在面试中,基础知识点的考察是重中之重。我选择了一种高效的方式 —— 先背常见面试题,再借助 AI 进行拓展学习。​一开始,我搜集了大量后端开发领域的常见面试题(后端需要面试题可以找我私信,我直接放出来有点打广告嫌疑),涵盖 Java 基础、数据库、计算机网络、分布式系统等核心板块。我会每天抽出固定的时间背诵这些题目和标准答案,确保自己对基础知识点有清晰的记忆。但是仅仅背诵答案远远不够!!!面试考察的不仅是记忆能力,更是对知识点的理解深度和灵活运用能力。​这时候,AI 就成了我的 “专属导师”。我掌握了一道常见面试题的基础答案后,我会把题目输入 AI 工具,让它从不同角度进行拓展。通过 AI 的拓展,我对每个知识点的理解都更加深入,不再停留在表面,也能更好地应对面试中面试官的追问。面试复盘:记录细节,AI 助力深挖​每一次面试都是一次宝贵的学习机会,大家可以养成面试后及时记录和复盘的习惯。​面试结束后,我会第一时间把面试过程中遇到的问题、自己的回答以及面试官的反馈详细记录下来。这些问题可能是我之前没有准备到的知识点,也可能是对项目经历的深入询问。记录完成后,我会再次借助 AI 工具对这些问题进行深挖。​比如,有一次面试中,面试官问我 “在项目中如何解决数据库并发问题”,当时我只回答了加锁和分库分表的方式,后来通过 AI 拓展,我了解到还可以使用乐观锁、读写分离等多种方案,并且 AI 还会详细分析每种方案的适用场景和优缺点。通过这样的复盘的深挖,不仅弥补了知识漏洞,还拓宽了思路。算法题训练:分块突破,稳步提升​手撕算法是后端开发面试中不可或缺的环节,也是一个难点。为了攻克算法难关,我采用了分板块刷题的训练方法(这里也有总结好的刷题路线)。​每天,我会选择一个板块进行集中训练,每次刷题时,我都会先仔细分析题目,尝试自己独立思考解决方案,然后再动手编写代码。如果遇到不会做的题目,我不会急于看答案,而是会先查阅相关的知识点和类似的题目,尝试自己找到解题思路。​其实大家要是只想进中小厂,基本把hot100刷几遍就够了,如果要冲击大厂的兄弟,建议还是把知识点弄透,大厂还是经常出自命题的回顾这段从准备到拿到腾讯实习 offer 的经历,我也有过迷茫和焦虑,比如面对复杂的知识点难以理解,刷题时多次碰壁,面试后收到不理想的结果等(这里顺便点名批评某节,把我当猴耍)。但每当这时,我都会告诉自己:不要放弃,坚持下去就会有希望。正所谓:不积跬步,无以至千里;不积小流,无以成江海,希望各位共勉另外,我在这高手云集的牛客上只算一个小蝼蚁,今天这篇文章纯属分享自己的学习经验,也算抛砖引玉,想分享些接地气的找工作准备方法,也盼着大佬们多提建议,大家能给我送点花花不,鼠鼠想要个牛客周边
投递腾讯等公司10个岗位
点赞 评论 收藏
分享
评论
18
143
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务