应试笔记与八股

2 通用八股

2.1 死锁产生的条件是什么

考查企业:

  • 小米 相机驱动
  1. 死锁是指在多线程的并发执行中,因争夺互斥资源所导致的一种循环等待,且若无外力的作用时该情况会无限僵持下去的现象。
  2. 死锁产生的必要条件有:
    1. 互斥条件:线程所争夺的资源为互斥资源,即同一时刻内只允许被一个线程访问的资源
    2. 循环等待条件:发生死锁时,必定存在的循环等待现象
    3. 保持并请求条件:线程在新的互斥资源前已经持有了某一互斥资源
    4. 不可剥夺条件:进程已获得的资源在未使用完之前,不能剥夺,只能在使用完时由自己释放。

2.2 死锁的检测方法

2.3 讲一下PCB和TCB的区别

2.4 什么是互斥资源

考查院校:

  • 电子科技大学
    考查企业:

同时只允许一个访问者访问的资源就叫作互斥资源。

2.5 为什么需要逻辑地址

考察企业:

  • 商汤科技 嵌入式

2.6 讲一讲IO模型(阻塞、非阻塞、同步、异步)

3 用户态开发专题

3.1 通用用户态开发

3.1.1 如何实现网络编程中的某一端口的快速重启

场景:

  • 在程序崩溃或被强制结束时,其所绑定的某一端口上可能会留存有未被来得及关闭的连接。此时若有新的进程尝试重新绑定该端口,则可能遇到端口仍然被占用的错误。

解决方法:

  • 在程序绑定端口之前,使用 setsocketopt 开启 SO_REUSEADDR 选项,允许绑定到一个已存在连接的地址(开启该选项后甚至允许多个进程共用同一个端口,但是这些进程必须同时开启该选项)。

3.1.2 讲一下mmap系统调用