操作系统操作系统进程线程内存管理后端开发

操作系统面试题与八股文汇总:290+ 道进程线程、内存管理、死锁、IPC、零拷贝、Linux 命令高频真题分类整理(2026 面经)

面灵AI整理的操作系统八股合集,覆盖进程与线程、协程、调度算法、进程间通信、锁与死锁、虚拟内存与页表、内存泄漏与 OOM、零拷贝与 Linux 线上排查,标注近期出题的大厂。

收录题目
291 道
统计周期
截至 2026 年 10 月
近期出题公司字节跳动在招腾讯在招阿里巴巴美团在招百度快手华为京东在招小米滴滴在招
面灵AI
27 分钟阅读

操作系统是后端、客户端、嵌入式、测试开发几乎所有技术岗位的必考科目,"八股"里最稳定的一块:校招从"进程和线程有什么区别"开头,沿着进程通信、调度、死锁、虚拟内存一路追下去,社招则更爱把它们落到线上问题上,比如 CPU 飙高、内存泄漏、OOM 怎么排查。字节、腾讯、美团、百度、华为换了部门,开头的问题几乎没变,变的是追问到第几层。

这份合集从公开面经里把操作系统方向反复出现的八股题抽出来重新归类,一共 291 道题,分十三个主题。它收的是操作系统本身,以及紧挨着的 Linux 命令与线上排查;网络协议与 epoll 的细节请对照 计算机网络面试题合集,C++ 内存与智能指针请看 C++ 面试题合集,Python 的 GIL 与协程请看 Python 面试题合集,数据库与缓存请看 MySQL 面试题合集 和 Redis 面试题合集,后端岗的完整高频清单可以看后端开发高频面试题榜单。

怎么用这份题单:

  • 题目后面括号里是近期实际问过这道题的大厂,不代表完整名单,也不代表没标注的公司不问
  • 操作系统八股的追问是一条链:进程与线程 → 调度 → 同步与死锁 → 虚拟内存与页表 → 用户态与内核态 → IO 与零拷贝。只背其中一个结论,面试官往下追一层就会卡住
  • 进程与线程的区别、进程间通信、死锁的四个条件、虚拟内存,这四块是几乎所有技术岗的公共必考区,时间不够就先把它们吃透

主题导航:操作系统基础、系统调用与中断 · 进程与线程 · 协程 · 进程调度与上下文切换 · 进程间通信 · 线程同步、锁与线程安全 · 死锁 · 虚拟内存、分页与页表 · 堆栈、内存布局与 malloc · 内存泄漏、OOM 与栈溢出 · IO 模型与零拷贝 · 文件系统与 Linux 命令 · 操作系统相关手撕题

操作系统基础、系统调用与中断

  • 介绍一下你对操作系统的理解(字节跳动 / 腾讯 / 美团)
  • 操作系统有哪些部分组成,各自的功能是什么?(字节跳动 / OPPO / 小鹏)
  • 操作系统的作用是什么?(快手)
  • 用户态和内核态有什么区别?(字节跳动 / 腾讯 / 阿里巴巴)
  • 为什么操作系统要区分用户态和内核态?(字节跳动 / 腾讯 / 百度)
  • 什么时候会从用户态陷入内核态,具体细节是什么?(字节跳动 / 腾讯 / 美团)
  • 用户态切换到内核态有哪几种方式?(腾讯 / 字节跳动 / 百度)
  • 用户态和内核态切换有哪些开销?(腾讯 / 小米 / 蚂蚁集团)
  • 什么是系统调用,系统调用的流程是什么?(字节跳动 / 腾讯 / 百度)
  • 库函数和系统调用有什么区别?(字节跳动 / 腾讯 / 拼多多)
  • Linux 内核态和用户态的区别是什么,系统调用的流程说一下(字节跳动 / 小鹏 / 携程)
  • 中断是什么?(美团 / 小米 / 快手)
  • 中断和异常有什么区别?(字节跳动 / 小米 / 美团)
  • 硬中断和软中断有什么区别?(腾讯 / 百度 / 京东)
  • 中断的处理过程是怎样的?(华为 / 字节跳动 / 腾讯)
  • 中断上半部和下半部为什么要拆开?(大疆)
  • 中断上下文里为什么不能睡眠,能不能使用互斥锁?(华为 / 快手 / 小米)
  • 中断里能不能调用 printf,为什么中断不能处理太多事情?(大疆 / 腾讯 / 哔哩哔哩)
  • 中断嵌套是怎么回事,为什么高优先级中断要尽量短?(大疆)
  • DMA 是什么,有什么作用?(华为 / 小米 / 腾讯)
  • 在带 cache 的 CPU 上使用 DMA,如何保证数据一致性?(华为 / 腾讯 / 大疆)
  • 从 CPU 层面怎么解决缓存一致性问题?(字节跳动 / 滴滴)
  • 内存屏障是做什么的,什么场景下不加会出问题?(华为 / 腾讯 / 百度)
  • 操作系统的启动过程是怎样的?(字节跳动 / 腾讯 / 美团)
  • Linux 的启动过程是怎样的?(字节跳动 / 腾讯 / 百度)
  • 实时操作系统和非实时操作系统有什么区别,各自用在哪?(字节跳动 / 大疆)
  • Linux 为什么不是实时操作系统?(地平线 / 科大讯飞)
  • 虚拟机和容器有什么区别?(华为 / 腾讯 / 美团)
  • 容器是如何实现资源隔离的?(腾讯)
  • 从网卡收到数据到交付给应用层,操作系统做了哪些事情?(京东 / 字节跳动 / 腾讯)
面灵AI 面试助手

面试官问「进程和线程有什么区别?」,看浮窗当场给你什么

面试官一开口,浮窗就出要点和能直接念的回答,被追问也接得住。共享屏幕时对面看不见。

腾讯会议文件编辑显示周一 14:32
腾讯会议 · 后端开发工程师 · 技术一面REC 00:10
面
面试官
我
面试官:
聆听中18:05
Ctrl+↑回看
Ctrl+↓看新
拖动分割线看面试官那一侧:共享屏幕、窗口录制、截图里都不会出现答案层
浮窗里这道题的回答

核心要点 进程是资源分配的基本单位、线程是 CPU 调度的基本单位、线程共享进程的地址空间和文件描述符、线程各自有栈和寄存器、线程切换比进程切换开销小、进程隔离性更好

参考回答 进程是资源分配的基本单位,线程是 CPU 调度的基本单位。进程拥有独立的虚拟地址空间、文件描述符表等资源,进程之间默认相互隔离,通信要走 IPC;同一进程内的线程共享堆、全局数据、代码段和打开的文件,只各自保留栈、寄存器和程序计数器,所以线程间通信简单,但也更容易出现数据竞争。切换时进程要换页表、刷新 TLB,线程切换不用换地址空间,所以线程创建和切换的开销更小;代价是一个线程崩溃可能拖垮整个进程,而进程之间互不影响,隔离性更好。

进程与线程

  • 进程和线程有什么区别?(字节跳动 / 腾讯 / 阿里巴巴)
  • 进程和线程的关系是什么?(字节跳动 / 腾讯 / 美团)
  • 既然已经有进程了,为什么还需要线程?(字节跳动 / 腾讯 / 美团)
  • 同一进程的线程会共享哪些资源,哪些不共享?(字节跳动 / 腾讯 / 美团)
  • 线程会共享内存吗?(字节跳动 / 腾讯 / 百度)
  • 一个进程内的一个线程挂掉,会影响同进程下的其他线程吗?(字节跳动 / 腾讯 / 美团)
  • 进程会被分配哪些资源?(字节跳动 / 腾讯 / 美团)
  • 进程包含什么,PCB 里有哪些内容?(字节跳动 / 百度 / 美团)
  • 多线程和多进程开发有什么区别,各有什么优缺点?(字节跳动 / 腾讯 / 华为)
  • 什么情况下应该使用进程,什么情况下应该使用线程?(字节跳动 / 腾讯 / 华为)
  • 多线程和多进程的应用场景有什么不一样?(腾讯 / 华为 / 百度)
  • 为什么有的程序要改成多进程而不是多线程?(字节跳动 / 腾讯 / 美团)
  • 进程有哪些状态,状态之间如何转换?(字节跳动 / 腾讯 / 华为)
  • 进程从创建到退出有哪些生命周期状态?(字节跳动 / 腾讯 / 快手)
  • 线程有哪些状态,状态之间如何转换?(字节跳动 / 腾讯 / 美团)
  • 怎么创建一个进程,Linux 里进程和线程是怎么创建的?(字节跳动 / 腾讯 / 美团)
  • fork 是怎么做的?(字节跳动 / 腾讯 / 美团)
  • fork 之后子进程会拷贝哪些资源,哪些不拷贝?(华为 / 腾讯 / 美团)
  • 父子进程共享哪些信息,文件描述符会共享吗?(字节跳动 / 腾讯 / 阿里巴巴)
  • 什么是写时复制,fork 为什么要用写时复制?(字节跳动 / 腾讯 / 美团)
  • Linux 中线程和进程在内核里是怎么区分的?(字节跳动 / 小米)
  • 什么是僵尸进程,什么是孤儿进程?(字节跳动 / 腾讯 / 百度)
  • 如何避免和处理僵尸进程?(字节跳动 / 腾讯 / 美团)
  • 什么是守护进程?(小米 / 快手 / 腾讯)
  • 为什么进程之间是隔离的,隔离性和安全性是怎么保证的?(字节跳动 / 美团 / 科大讯飞)
  • 浏览器开两个 tab,它们属于一个进程还是两个?(字节跳动 / 腾讯 / 美团)
  • 浏览器里的进程和线程分别有哪些?(字节跳动 / 腾讯 / 美团)
  • 一个浏览器只能有一个进程吗?(字节跳动 / 滴滴 / 网易)
  • Android 中进程是怎么划分的?

协程

  • 协程是什么?(字节跳动 / 腾讯 / 美团)
  • 进程、线程和协程有什么区别?(字节跳动 / 腾讯 / 阿里巴巴)
  • 协程和线程有什么区别?(字节跳动 / 腾讯 / 阿里巴巴)
  • 为什么要用协程?(字节跳动 / 腾讯 / 美团)
  • 协程运行在用户态还是内核态,为什么?(快手 / 美团 / 腾讯)
  • 协程是怎么切换的?(字节跳动 / 腾讯 / 百度)
  • 协程的调度机制是怎样的?(腾讯 / 美团 / 滴滴)
  • 协程的应用场景有哪些?(字节跳动 / 小米 / 腾讯)
  • 有栈协程和无栈协程有什么区别?(字节跳动 / 腾讯 / 百度)
  • 协程为什么比线程轻量,它省掉了哪些开销?
  • 协程里遇到阻塞的系统调用会怎么样?
  • 虚拟线程是什么,它和传统线程、协程是什么关系?(字节跳动 / 腾讯 / 百度)
  • Go 的协程模型是怎样的,有什么好处?(字节跳动 / 腾讯 / 美团)
  • Go 里协程之间有哪些通信方式?(字节跳动 / 腾讯 / 滴滴)
  • async/await 的底层原理是什么?(字节跳动 / 腾讯 / 美团)
  • C++ 里的协程用过吗?(腾讯 / 百度 / 美团)

进程调度与上下文切换

  • 常见的进程调度算法有哪些?(字节跳动 / 腾讯 / 美团)
  • 先来先服务、短作业优先、时间片轮转、优先级调度分别是什么?
  • 时间片轮转算法有什么问题,时间片设置多大合适?
  • 进程的优先级调度算法是怎样的?(字节跳动 / 腾讯 / 美团)
  • 各种进程调度算法分别有什么缺点?(字节跳动 / 华为 / 美团)
  • 什么是多级反馈队列调度?
  • Linux 的进程调度策略是什么?(华为 / 字节跳动 / 美团)
  • Linux 的线程一般是怎么调度的?(大疆 / 小米 / 腾讯)
  • 操作系统是怎么调度线程的,线程调度策略有哪些?(字节跳动 / 小米 / 腾讯)
  • 什么是上下文切换,一般在什么情况下会发生?(腾讯 / 百度 / 字节跳动)
  • 进程上下文切换具体是怎么做的,要保存哪些信息?(字节跳动 / 腾讯 / 美团)
  • 线程切换的底层过程是什么,要保存哪些信息?(华为 / 字节跳动 / 腾讯)
  • 为什么进程切换的开销比线程切换更大,都切换了哪些资源?(字节跳动 / 腾讯 / 蚂蚁集团)
  • 进程切换和线程切换,哪个更快,为什么?(字节跳动 / 腾讯 / 小红书)
  • 什么情况会导致线程上下文切换?(字节跳动 / 腾讯 / 美团)
  • 上下文切换过多会有什么问题,怎么排查和减少?
  • CPU 利用率高和负载高分别说明什么,怎么区分?
  • 抢占式调度和非抢占式调度有什么区别?

进程间通信

  • 进程间通信有哪些方式?(字节跳动 / 腾讯 / 阿里巴巴)
  • 进程间通信最快的方式是什么?(字节跳动 / 腾讯 / 华为)
  • 管道是怎么通信的,匿名管道和命名管道有什么区别?(字节跳动 / 腾讯 / 百度)
  • 管道的大小有限制吗,管道满了会怎么样?
  • 命令行里的管道符是怎么实现的?(腾讯 / 快手 / 美团)
  • 消息队列和管道有什么区别?
  • 共享内存的原理是什么,具体是怎么实现的?(字节跳动 / 腾讯 / 华为)
  • 共享内存的优缺点是什么?(字节跳动 / 腾讯 / 百度)
  • 共享内存下进程之间是怎么做同步的?(字节跳动 / 快手 / 美团)
  • 共享内存处于用户态还是内核态?(字节跳动 / 地平线 / 大疆)
  • 为什么用共享内存,其他的进程通信方式有哪些?(字节跳动 / 百度 / 地平线)
  • 信号和信号量有什么区别?(字节跳动 / 京东 / 小米)
  • 怎么通过信号量进行进程通信?(滴滴 / 美团)
  • 常见的信号有哪些,信号是怎么处理的?
  • Socket 可以用来做进程间通信吗,本地 Socket 和网络 Socket 有什么区别?
  • 线程之间有哪些通信方式?(字节跳动 / 腾讯 / 京东)
  • 进程间通信与线程间通信分别有哪些机制?(字节跳动 / 腾讯 / 百度)
  • 进程的同步与通信有什么区别?(字节跳动 / 腾讯 / 地平线)
  • 进程间通信在实际工作中用过哪些,说一两个详细的实现?(字节跳动 / 华为 / 美团)
  • Android 中如何进行进程间通信?(腾讯 / 美团 / 百度)

线程同步、锁与线程安全

  • 什么是线程安全,如何保证线程安全?(字节跳动 / 腾讯 / 阿里巴巴)
  • 多线程访问变量产生线程安全问题的根本原因是什么?(腾讯 / 科大讯飞)
  • 线程同步有哪些常见方式?(字节跳动 / 腾讯 / 华为)
  • 进程同步有哪些方式?(字节跳动 / 腾讯 / 美团)
  • 什么是临界区?(字节跳动 / 小米 / 美团)
  • 互斥锁的原理是什么,底层是怎么实现的?(字节跳动 / 腾讯 / 拼多多)
  • 互斥锁加锁失败的线程去哪了?(华为)
  • 互斥锁和自旋锁有什么区别,怎么选?(字节跳动 / 腾讯 / 华为)
  • 自旋锁的原理是什么,适用于哪些场景?(字节跳动 / 腾讯 / 华为)
  • 互斥锁和信号量有什么区别?(字节跳动 / 腾讯 / 华为)
  • 信号量的底层原理是什么?(字节跳动 / 华为 / 美团)
  • 互斥锁和条件变量有什么区别,条件变量怎么用?(腾讯 / 字节跳动 / 小米)
  • 条件变量为什么要配合互斥锁,为什么要用 while 判断条件?
  • 读写锁的作用和实现原理是什么,适合哪些场景?(字节跳动 / 腾讯 / 美团)
  • 读写锁一定比互斥锁快吗?(华为 / 腾讯)
  • 管程是什么?
  • 乐观锁和悲观锁有什么区别?(字节跳动 / 腾讯 / 阿里巴巴)
  • 操作系统里常见的锁有哪些?(华为 / 百度 / 腾讯)
  • 原子操作是怎么实现的?(字节跳动 / 华为 / 蚂蚁集团)
  • CAS 在操作系统层面是怎么保证的,是 CPU 提供的原子指令吗?(字节跳动 / 腾讯 / 美团)
  • i++ 为什么不是线程安全的?(字节跳动 / 腾讯 / 蚂蚁集团)
  • 除了加锁,还有哪些方式可以保证线程安全?(字节跳动 / 华为 / 美团)
  • 可重入锁是什么,为什么需要可重入?
  • 无锁编程是什么,有什么优缺点?
  • 线程安全的队列怎么设计?(字节跳动 / 腾讯 / 滴滴)
  • 线程同步除了锁和条件变量,还有哪些方法?(地平线 / 百度 / 美团)
  • 如何保证三个线程按指定顺序执行?(字节跳动 / 京东 / 拼多多)
  • 多进程和多线程如何实现互斥或同步?(美团 / 招银网络 / vivo)

死锁

  • 什么是死锁?(字节跳动 / 腾讯 / 华为)
  • 死锁产生的四个必要条件是什么?(字节跳动 / 腾讯 / 阿里巴巴)
  • 死锁是怎么产生的,什么情况下会死锁?(字节跳动 / 腾讯 / 快手)
  • 如何避免死锁?(字节跳动 / 腾讯 / 百度)
  • 死锁预防、避免、检测、解除分别是什么?
  • 破坏死锁的四个必要条件分别可以怎么做?
  • 死锁发生后怎么解决?(字节跳动 / 华为 / 美团)
  • 死锁怎么排查和定位?(字节跳动 / 腾讯 / 快手)
  • 如何实现死锁检测?(华为 / 腾讯 / 快手)
  • 银行家算法的思想是什么?(小米 / 腾讯 / 美团)
  • 哲学家就餐问题是什么,怎么解决?(字节跳动 / 腾讯 / 美团)
  • 代码里怎么预防死锁,加锁顺序怎么设计?(字节跳动 / 腾讯 / 百度)
  • A 给 B 转账、B 同时给 A 转账会死锁吗?(字节跳动 / 蚂蚁集团)
  • 遇到过死锁吗,当时是怎么处理的?(华为 / 腾讯 / 阿里巴巴)
  • 死锁和活锁、饥饿有什么区别?
  • 死锁和悲观锁、乐观锁是什么关系?(华为 / 字节跳动 / 腾讯)

虚拟内存、分页与页表

  • 什么是虚拟内存?(字节跳动 / 腾讯 / 阿里巴巴)
  • 为什么需要虚拟内存,它的作用是什么?(字节跳动 / 腾讯 / 百度)
  • 物理内存和虚拟内存有什么区别?(字节跳动 / 腾讯 / 华为)
  • 虚拟内存可以比物理内存大吗?(字节跳动 / 小米 / 滴滴)
  • 虚拟内存除了隔离和扩展内存,还有其他优势吗?(字节跳动 / 腾讯 / 快手)
  • 虚拟地址和物理地址如何映射,转换过程是怎样的?(字节跳动 / 腾讯 / 华为)
  • 虚拟地址的作用是什么?(字节跳动 / 腾讯 / 美团)
  • 操作系统如何管理内存?(字节跳动 / 腾讯 / 阿里巴巴)
  • 操作系统对内存管理有哪两种方式,常见的内存管理方式有哪些?(字节跳动 / 小米 / 华为)
  • 分页和分段有什么区别?(字节跳动 / 腾讯 / 华为)
  • 什么是段页式内存管理?(字节跳动 / 小红书 / 网易)
  • 什么是页表,为什么需要页表?(腾讯 / 拼多多 / 滴滴)
  • 多级页表有什么优点?(美团 / 百度 / 携程)
  • TLB 是什么,为什么要有 TLB?(字节跳动 / 大疆 / 百度)
  • MMU 是怎么完成地址映射的?(字节跳动 / 小米 / 快手)
  • 什么是缺页中断,缺页中断从触发到处理的整个流程是怎样的?(字节跳动 / 腾讯 / 百度)
  • 缺页中断和普通中断有什么区别?
  • 页面置换算法有哪些?(字节跳动 / 腾讯 / 华为)
  • FIFO、LRU、LFU、时钟(Clock)置换算法分别是什么?
  • Belady 现象是什么?
  • 什么是内存抖动(颠簸),怎么解决?
  • swap 分区是做什么的,开不开 swap 有什么影响?
  • 什么是内存碎片,如何解决和减少内存碎片?(字节跳动 / 华为 / 腾讯)
  • 内部碎片和外部碎片有什么区别?
  • Linux 内核是如何管理内存空间的?(华为 / 字节跳动 / 腾讯)
  • 伙伴系统和 slab 分配器分别是做什么的?
  • mmap 是什么,原理是什么?(字节跳动 / 腾讯 / 小米)
  • 大页(Huge Page)是什么,什么场景下有用?
  • 一个进程的虚拟地址空间是怎样的?(字节跳动 / 腾讯 / 滴滴)
  • 32 位 Linux 的进程地址空间是怎么分布的?(华为 / 百度 / 腾讯)

堆栈、内存布局与 malloc

  • 操作系统中堆和栈有什么区别?(字节跳动 / 腾讯 / 阿里巴巴)
  • 程序运行时,堆和栈分别存放什么数据?(字节跳动 / 腾讯 / 美团)
  • 堆和栈哪个申请内存更快,为什么?(快手 / 腾讯 / 滴滴)
  • 堆和栈是用来做什么的?(字节跳动 / 京东 / 美团)
  • 为什么要区分堆和栈?(华为 / 字节跳动 / 百度)
  • 除了堆和栈,还有哪些内存区域?(腾讯 / 美团 / 大疆)
  • 进程的内存布局是什么样子的?(字节跳动 / 腾讯 / 美团)
  • 数据结构里的堆和栈与内存里的堆和栈有什么区别?(华为 / 字节跳动 / 腾讯)
  • 对象存放在堆里还是栈里?(小米 / 快手 / 拼多多)
  • malloc 底层是如何实现的,和 mmap 有什么关系?(字节跳动 / 腾讯 / 百度)
  • malloc 中 brk 和 mmap 有什么区别,分配大内存和小内存用的函数一样吗?(字节跳动 / 腾讯 / 快手)
  • malloc 申请空间后返回的是物理地址还是虚拟地址?(腾讯 / 百度 / 快手)
  • malloc 申请的内存 free 之后还能继续访问吗,会发生什么?(华为)
  • free 的时候是怎么知道要释放多大内存的?
  • malloc 的内存池一般如何实现?(美团)
  • 如何设计实现一个简单的 malloc 和 free?(字节跳动 / 腾讯)
  • new 和 malloc 有什么区别?(字节跳动 / 腾讯 / 阿里巴巴)
  • new 出来的对象可以用 free 释放吗?(腾讯 / 百度)
  • new 和 malloc 分配的内存在哪个区?(字节跳动 / 小米 / 百度)
  • 什么是内存对齐,有什么好处?(字节跳动 / 腾讯 / 华为)
  • 结构体大小怎么计算,怎么重排成员来节省内存?(华为 / 百度 / 大疆)
  • 内存对齐的方式有哪些?(字节跳动 / 腾讯 / 网易)
  • 大端和小端是什么,如何判断本机的字节序?(字节跳动 / 华为 / 腾讯)

内存泄漏、OOM 与栈溢出

  • 什么是内存泄漏?(字节跳动 / 腾讯 / 百度)
  • 内存泄漏的原因有哪些?(腾讯 / 小米 / 阿里巴巴)
  • 内存泄漏和内存溢出有什么区别?(字节跳动 / 腾讯 / 华为)
  • 如何检测和避免内存泄漏?(字节跳动 / 腾讯 / 华为)
  • 如何判断和定位内存泄漏?(字节跳动 / 腾讯 / 华为)
  • 检测内存泄漏有哪些工具?(字节跳动 / 腾讯 / 阿里巴巴)
  • 一个进程的内存占用一直往上涨,怎么定位是哪里泄漏的?(华为 / 地平线)
  • 线上环境发生内存泄漏,你怎么排查?(字节跳动 / 腾讯 / 滴滴)
  • 内存泄漏的监控方式有哪些?(华为 / 腾讯 / 百度)
  • C++ 里的内存泄漏是怎么产生的,怎么避免?(字节跳动 / 腾讯 / 阿里巴巴)
  • Android 开发中常见的内存泄漏场景有哪些?(腾讯 / 小米 / 百度)
  • 闭包为什么可能导致内存泄漏?(美团 / 百度)
  • OOM 是什么,什么情况下会出现?(美团 / 腾讯 / 快手)
  • 常见导致 OOM 的场景有哪些?(字节跳动 / 小米 / 腾讯)
  • OOM 怎么排查,怎么解决?(字节跳动 / 腾讯 / 阿里巴巴)
  • 线上实例频繁 OOM 你会怎么排查?(京东 / 字节跳动 / 美团)
  • Linux 的 OOM Killer 是怎么工作的?
  • 项目里遇到过 OOM 吗,是怎么发现、怎么解决的?(京东 / 快手 / 百度)
  • 什么是栈溢出,什么时候会发生?(字节跳动 / 小米 / 腾讯)
  • 栈溢出的后果是什么,怎么避免和排查?(科大讯飞 / 腾讯 / 美团)
  • 什么情况下会发生栈溢出,什么情况下会发生堆溢出?(美团)
  • 段错误(Segmentation Fault)是什么,怎么定位?(百度 / 腾讯 / 科大讯飞)
  • 野指针和悬空指针是什么,会带来什么问题?
  • Linux 下怎么排查 CPU 占用过高的问题?(腾讯 / 美团 / 字节跳动)

IO 模型与零拷贝

  • 常见的 IO 模型有哪些?(字节跳动 / 腾讯 / 阿里巴巴)
  • 阻塞、非阻塞、同步、异步分别是什么?(字节跳动 / 腾讯 / 华为)
  • 阻塞式 IO 和非阻塞式 IO 有什么区别?(华为 / 百度 / 字节跳动)
  • 什么是 IO 多路复用,为什么需要它?(字节跳动 / 腾讯 / 百度)
  • select、poll、epoll 有什么区别?(字节跳动 / 腾讯 / 美团)
  • epoll 的底层是怎么实现的?(字节跳动 / 腾讯 / 小米)
  • epoll 的边缘触发和水平触发有什么区别?(腾讯 / 字节跳动 / 百度)
  • epoll 是同步 IO 还是异步 IO?(字节跳动 / 腾讯 / 百度)
  • Linux 的异步 IO(AIO、io_uring)是怎么回事?
  • 操作系统一次完整的 IO 过程是怎样的?(字节跳动 / 百度 / 地平线)
  • 什么是 Page Cache,它有什么作用?
  • 什么是零拷贝,原理是什么?(字节跳动 / 腾讯 / 美团)
  • 传统的文件传输要经过几次拷贝和几次上下文切换?
  • 零拷贝和传统拷贝有什么区别?(小米 / 快手 / 美团)
  • sendfile 是怎么实现零拷贝的?
  • mmap 和 sendfile 有什么区别?
  • 用户态和内核态的零拷贝是怎么实现的?(字节跳动 / 腾讯 / 百度)
  • Linux 的零拷贝你了解哪些?(快手 / 滴滴 / 腾讯)

文件系统与 Linux 命令

  • Linux 的文件系统是怎样的?(字节跳动 / 腾讯 / 华为)
  • 文件系统讲一讲(字节跳动 / 腾讯 / 美团)
  • inode 里存了什么?
  • 软链接和硬链接有什么区别?(字节跳动 / 腾讯 / 百度)
  • 如何创建软链接?(华为 / 百度 / 腾讯)
  • 文件描述符是什么?
  • Linux 文件权限 644 表示什么,rwx 分别代表什么?(腾讯 / 华为 / 滴滴)
  • 如何修改文件的执行权限?(腾讯 / 百度 / 美团)
  • /proc 目录是做什么的?(美团 / 腾讯)
  • Linux 常用命令有哪些?(字节跳动 / 腾讯 / 百度)
  • 怎么查看进程?(字节跳动 / 腾讯 / 百度)
  • 怎么实时查看进程的资源占用?(华为 / 快手 / 百度)
  • top 命令能看到哪些信息,各列分别代表什么?(腾讯 / 美团 / 百度)
  • 怎么查看 CPU 使用情况和核心数?(字节跳动 / 腾讯 / 华为)
  • 怎么查看内存信息和内存占用?(字节跳动 / 腾讯 / 百度)
  • 怎么查看机器负载,load average 是什么意思?(字节跳动 / 腾讯 / 小米)
  • 怎么查看磁盘空间使用率和某个目录、大文件的大小?(京东 / 腾讯 / 百度)
  • 怎么查看线程?(华为 / 腾讯 / 美团)
  • 怎么查询端口占用,怎么通过进程号查看端口?(字节跳动 / 腾讯 / 百度)
  • netstat 的作用是什么,ss 和 netstat 有什么区别?
  • 怎么查看一个进程打开了哪些文件?(字节跳动 / 腾讯 / 美团)
  • 怎么杀掉一个进程,kill 和 kill -9 有什么区别?(字节跳动 / 百度 / 哔哩哔哩)
  • kill 命令终止进程的底层实现原理是什么?(腾讯 / 百度 / 携程)
  • 怎么查看日志的末尾几行,怎么动态查看日志?(字节跳动 / 百度 / 美团)
  • 怎么在文件中查找某个字符串,怎么在目录下查找包含关键词的文件?(字节跳动 / 腾讯 / 百度)
  • 怎么统计某个关键字出现的次数?(字节跳动 / 百度 / 美团)
  • grep、awk、sed 分别是做什么的,有什么区别?(字节跳动 / 腾讯 / 百度)
  • 怎么批量替换文本?(百度 / 美团)
  • Linux 定时任务(crontab)怎么使用?(快手 / 百度 / 网易)
  • Linux 怎么抓包?(腾讯 / 科大讯飞)
  • 线上服务器负载很高,怎么一步步排查?(腾讯 / 字节跳动 / 美团)
  • 线上服务器 CPU 飙高,怎么定位到具体的线程和代码?(字节跳动 / 京东 / 小红书)
  • 磁盘 IO 很高怎么排查,用什么命令?

操作系统相关手撕题

  • 手写一个死锁(字节跳动 / 腾讯 / 百度)
  • 实现一个线程安全的有界阻塞队列,即生产者消费者模型(字节跳动 / 腾讯 / 微软)
  • 如何用多线程交替打印奇偶数、循环打印 ABC(字节跳动 / 美团 / 携程)
  • 实现一个线程安全的 LRU 缓存(字节跳动 / 腾讯 / 华为)
  • 读者写者问题的实现
  • 手写一个自旋锁
面灵AI 笔试助手

笔试机考碰上这类手撕代码题

不用切屏:鼠标在「解题」按钮上停 1.2 秒,AI 读完题,把思路、复杂度和代码直接贴在考试页上方。

2026 届秋招 · 后端开发工程师笔试nowcoder.com/exam剩余 42:10交卷
已进入全屏防作弊模式,切屏 / 退出全屏将被记录
Online Assessment
算法编程题 · 3 / 12

实现一个线程安全的有界阻塞队列:容量满时 put 阻塞,队列空时 get 阻塞,支持多个生产者和消费者。
示例:容量 2,两个线程各取 50 个,一个线程放入 0~99,最终恰好取出 100 个不同的数

solution.py
import threading
from collections import deque
class BoundedQueue:
def __init__(self, capacity):
pass
def put(self, x):
pass
def get(self):
pass
面灵AI
已连接编程余 27min
悬停回看
把鼠标悬停到下方「解题」按钮 1.2 秒
AI 会自动截屏并解答
也可以直接按 Ctrl+Enter,手不用离开键盘
悬停看新
编程
5min/题
解题
^⏎
加页
^H
重置
悬停 0.8s
退出
悬停 2.5s
悬停 1.2 秒触发,焦点不离开考试页——不切屏、不切窗口;浮窗可调到近乎透明,第二机位拍到的几乎只剩考试页本身

备考重点

操作系统八股的特点是概念多、边界清、爱追问"为什么这样设计"。几乎所有问题都能挂到同一条主线上:多个程序要同时跑,所以有进程、线程和调度;它们会抢共享资源,所以有锁、信号量,也就有了死锁;内存不够、程序之间还要互不干扰,所以有虚拟内存、分页和缺页中断;程序不能随便碰硬件,所以有用户态与内核态、系统调用和中断;数据要进出磁盘和网卡,所以有 IO 模型和零拷贝。把这条主线讲通,零散的题会自己串起来。

建议按这个顺序准备:先把进程与线程的区别、进程间通信的几种方式、死锁的四个条件讲到"每一个为什么",再吃透虚拟内存、页表与缺页中断,然后是调度算法与上下文切换,最后补 IO 多路复用、零拷贝和 Linux 线上排查。 面试里最容易丢分的不是不会,而是只会背结论:比如说得出"死锁的四个必要条件",却说不出怎么在代码里打破其中一个;说得出"虚拟内存",却讲不清一次缺页中断从触发到返回都发生了什么。

用户态与内核态的切换、虚拟地址到物理地址的转换、线上内存与 CPU 问题的排查,是拉开差距的三块。切换要能讲出系统调用、异常、外设中断三种入口和切换的开销;地址转换要能画出多级页表加 TLB 的查找流程,并说明缺页时内核做了什么;排查要有一套固定的命令路径:先 top 看是谁,再看线程,再看内存与 IO,别只会说"用 top"。做嵌入式和驱动方向的同学,中断上下半部、DMA 与缓存一致性、实时性也是必问项。

常见问题

这份题单是怎么整理出来的?

来源是公开面经与题库沉淀,把操作系统方向反复出现的八股题抽出来重新归类,不包含面灵用户的面试内容。括号里标注的是近期实际问过这道题的大厂,只作参考,不代表完整名单。

操作系统八股应该先准备哪些部分?

优先顺序建议是:进程与线程的区别 → 进程间通信 → 死锁与锁 → 虚拟内存、分页与缺页中断 → 用户态与内核态、系统调用 → 调度算法与上下文切换 → IO 多路复用与零拷贝 → Linux 常用命令与线上排查。前四块是各大厂技术岗的公共必考区,后面几块再按目标岗位补,做后端和服务端的同学再补 Linux 排查与 epoll。

面试官问进程和线程,一般会追问到什么程度?

通常是三层:先问区别,再追问线程共享哪些资源、为什么线程切换比进程切换快,最后落到使用场景,比如为什么浏览器和 Nginx 用多进程、为什么服务端业务用多线程或协程。能讲出共享与独占的资源清单、切换时多做了哪些事,比背一张对比表更容易拿分。

死锁面试怎么答才算完整?

完整的答案有四层:死锁的定义,互斥、持有并等待、不可抢占、循环等待四个必要条件,预防、避免、检测与解除四类处理思路,以及落到代码里的具体办法,比如统一加锁顺序、使用带超时的 tryLock、一次性申请全部资源。再补一句怎么定位线上死锁,通常就是高分答案。

想要一份属于你的题库?

按你的目标公司和岗位,定制专属高频题

这份合集是官方按岗位整理的通用版。告诉面灵AI 你要面的公司和岗位,结合你的简历,生成一份只属于你的近期高频题和参考回答。

面试实时辅助

下载面灵AI桌面客户端,面试 / 笔试时 AI 实时听题辅助作答。