腾讯 csig 腾讯云客户端 一面凉经 大概不到四十分钟
上次ieg进hr面,流程超时自动结束了,然后被腾讯云秒捞
一开始说了挺多废话的,还说啥事先看过了我的简历,接着就顺着念了一遍我的简历(有点矛盾喔)
全程几乎没怎么问八股,让我讲项目(原话"能说多少说多少,越深越好 "
进入正题: 介绍项目功能和特点
1.说一下IO模型,IO复用重点说一下,比如还有除了epoll的其他几个(因为项目里用了epoll)
答了阻塞IO,非阻塞IO,IO复用, 信号驱动IO,异步IO以及各自的区别。IO复用总说了select,poll和epoll的区别(缺点,优点以及各自适用的情景),epoll还重点说了ET和LT还有EPOLLONESHOT。(基本上是想到啥就说啥了)
2.我说用了线程池管理线程,他让我设计一个线程调度算法。让我不断优化,然后说用多级队列,优先级不同的线程在不同队列,高优先级队列里的线程可以抢占低优先级的线程,优先级根据实时响应比来更新。(具体还有挺多细节的,记不太清了)最后面试官说方案不错
3.get和post的区别(终于来八股了!!!)
4.问我项目中遇到的问题(项目是web server) 我说没有啥问题,有问题都是我自己代码写错了(hhhhh 然后他引导到协议里的问题,我就说遇到了关闭client 接连,马上重新连接遇到了time_wait状态下之前端口号不能使用的问题。
5.time_wait状态的作用? 确保连接正常关闭,防止第四次挥手丢包,造成另外一端无法及时关闭连接。还说了time_wait一般是2MSL,因为考虑了第四次挥手包最大生存时间和重传第三次挥手包的时间。
6.怎么减小time_wait状态的影响? 修改内核MSL时间。用setsocketopt修改linger参数打开优雅关闭连接。
7. udp的高级一些应用知道吗?http3.0里的Quic协议,用来替代tcp,在应用层实现了可靠性的相关特性,解决了http2.0里队头阻塞问题,即stream里message丢包,会阻塞整个tcp的问题,同时避免了建立和断开tcp连接的时间损失。
8.说一下C++的内存管理,比如new和delete怎么用,管理的是哪里的内存 ?
用new和delete管理堆空间的内存,然后补充了和malloc,free的区别,我问他还要我说智能指针吗?他说可以说一下。我接着说了unique_ptr, shared_ptr, weak_ptr和还有实现原理
9.会渲染吗? 不会
10.说几个设计结构 说了单例模式和工厂模式
算法题: 手撕堆排(过了几分钟问我写完没,我说还没,接着问为什么没有,我说太久没写堆排了,纠结最大堆和最小堆花了点时间,过了十几秒他说时间差不多了,我们今天就到这吧,接着就秒退了)
总结:感觉被kpi面了(虽然我很菜),面试过程中几乎都是我在说,面试官除了设计线程调度算法那里其他部分毫无反馈,写算法还带催的,最后还秒退,过了一个小时流程就结束了。
#腾讯暑期实习##春招##实习##面经##腾讯#