C++自动驾驶面试核心问题整理
应用开发
概述:比较基础,没啥壁垒,主要有linux开发经验即可
问题:基础八股,如计算机网络、操作系统、c++11等基础三件套;中等难度算法题1-2道。
中间件开发(性能优化)
概述:本身需要深厚的C++功底,所以对于经验要求较高。设计技术面:linux系统、内核、性能优化等比较细分的领域。
问题:本身岗位上限高(钱多),所以面试的话对于过往的项目经验比较看重,也注重岗位匹配度;当然算法也要能写出来。
算法
本人不涉及。
常见问题
网络
先看这个图,回顾下建立连接跟断开链接细节
Q: time_wait是什么?过多是什么原因?会有什么影响?如何优化?
A: time_wait状态出现在挥手阶段,当处于FIN_WAIT_2阶段的A端收到B端发送的FIN报文并回复ACK后所在状态;主动关闭链接频繁、网络不稳定、系统参数设置不合理;资源占用、拥塞风险;服务端尽可能不断连、内核参数调整如图:
Q: 四次挥手当处于LAST_ACK阶段的B端没有收到A端的ACK报文,到点重传FIN报文,此时处于TIME_WAIT状态的A端过了2MSL如果没有收到B端重传的FIN报文,该如何处理? 为什么不是4MSL或8MSL?
A: 如果客户端发送的ack报文丢失,服务端重发的fin报文也丢失了,那么2MSL就不起作用了。那么需要给它设置更长时间??我们设想在一个丢包率为1%的糟糕网络中,两次连续丢包的概率为万分之一,忽略它显然给解决它更具有实际意义
Q: 为什么业务层要心跳?
A: TCP的检测时间有点长,我们可以在应用层实现一个心跳机制。
其他...