秋招第七章:驭势科技一面
岗位:自动驾驶软件开发
- 实习经历
- TLS握手过程
- 实习经历的客户端与服务端会复用连接吗? (答到一半,才想起来复用连接的是HTTP3.0,而非TLS1.3)
- webserver中的线程池怎么实现的,有什么用?
- webserver中的阻塞队列怎么实现的?
- 面向对象的理解
- protect/private的区别
- 虚函数实现原理
- 构造函数能是虚函数吗?析构函数呢?
- new和malloc的区别
- new申请的内存,能够用free释放吗?(我回答说没试过,但从实现上来说可以,因为new是基于malloc实现,申请堆区内存的时候,操作系统会有额外的头部信息存放关于这块申请内存的空间大小,从而free在释放的时候,会先去这块内存的头部查看信息,才去进行相应的释放。但这里有一个关键点,就是针对自定义数据类型,free释放不会调用析构函数,会存在内存泄露的风险。所以不推荐这样操作。)
- C++11的特性
- 左值和右值引用?什么是右值,什么是左值?
- 介绍一下智能指针
- 智能指针有什么用途?
- 进程与线程的区别
- 进程的上下文切换
- 进程的上下文切换会发生内核态与用户态的切换吗?
- 锁有哪些?为什么需要锁机制?
- 如何避免死锁?
- 介绍一下虚拟内存
- 介绍一下Redis的跳表
- 反问环节