岗位: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~如果有技术上的问题也可以一起交流哦~           
点赞 18
评论 11
全部评论

相关推荐

发了一直都没回复我
牛客48325473...:不回就是默拒了
点赞 评论 收藏
分享
机械打工仔:我来告诉你原因,是因为sobb有在线简历,有些HR为了快会直接先看在线简历,初步感觉不合适就不会找你要详细的了
投了多少份简历才上岸
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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