【滴滴】C++岗-牛客sp专场凉经

一面:

  1. C++的多态怎么实现的?
  2. 虚表是类的还是对象的?
  3. 有用过智能指针么?
  4. unique_ptr解决什么问题?怎么实现? shared_ptr呢解决什么问题,又会有什么问题(循环引用 资源无法释放),如何解决;随即引出weak_ptr,如何解决以上问题,weak_ptr怎么实现的
  5. C++有很多容器,介绍几个,map和unordered_map的底层数据结构。以及各自优缺点?你平时使用过吗,你会如何选择
  6. 介绍你的项目。你负责哪一部分?,代码量?
  7. socket编程的流程,哪些函数会阻塞(send,recv,accept,connect这些,listen和bind不会)
  8. 数据传输用什么协议(tcp,udp)?数据怎么组织的(逐层封装,应用层数据->tcp报头->ip报头->以太网帧 发送过去)?为什么不考虑一些通用的协议?(不会)
  9. TCP挥手的过程?
  10. 服务器会有很多tcp连接,如何减少Timewait的数量?等待的目的是什么( 为了保证客户端发送的最后一个ACK报文段能够到达服务器)?什么时候一定会到达,这样就可以不等待2msl 直接进入closed转态。答案:纯内网之间的通信没必要等待,纯内网不用走握手的流程,外网也有一些其它的方法
  11. 代码题:合并两个有序链表 (赛码网, 头文件 链表的定义 int main() 输入输出全都自己写)

二面:

  1. 为什么转行(机械专业) 计算机的了解吗 接受一下项目
  2. 什么是死锁,出现死锁,怎么定位、解决、发现?(不知道如何定位和解决)
  3. 进程和线程的区别?
  4. 进程间怎么通信?(管道,消息队列,信号量,信号,共享内存,socket)
  5. 几种通信方式哪种效率最高?共享内存(不需要建立额外的数据结构)共享内存会有什么问题(读写冲突,需要加锁)?如果一个进程挂了,它使用共享内存的一段区域,有影响吗
  6. 有一亿个整数,要拿前一百个大数,如何让效率最高(时间)?(维护Top100的最大堆 时间复杂度nlogm n为1亿 m为100)
  7. 介绍C++11的智能指针,又讲了一遍?智能指针有什么缺点?
  8. 指针函数了解吗,回调里释放某个对象,Callkback资源管理怎么解决?
  9. 系统设计,找出经某个坐标下一公里内所有共享单车的位置。涉及数据结构,判断哪些区域?(共享单车的坐标建立空间索引的方法,以该点坐标去查找)

二面场景题较多 好几个都没回答上来 最后挂掉了

发表评论

后才能评论