面灵AI

妞脂的秋招-百度后端一面面经

时间
2026-08
来源
牛客网

《面试题目》

  1. 进程、线程和协程的区别?
  2. 虚拟线程和协程的区别?
  3. 了解过缺页中断和虚拟内存嘛?
  4. 页的转换算法?
  5. LRU的近似实现?
  6. LRU在linux中的近似实现?
  7. 手撕一个Java乐观锁版本号实现库存扣减。
  8. 如果CAS失败率很高怎么解决?

《参考解析》

  1. 进程是资源分配的基本单位,线程是CPU调度的基本单位,协程是用户态的轻量级调度单位,切换成本远低于线程,但需要语言/运行时支持。
  2. 虚拟内存把进程地址空间和物理内存解耦,缺页中断发生时由操作系统查页表、决定是否需要换入换出,命中率与页面置换算法直接相关。
  3. 算法题先明确边界条件与不变量,再选择合适的数据结构;双指针、哈希表、递归/迭代是常见工具,目标是把复杂度控制在线性或对数级别。
  4. LRU的核心是维护访问顺序,常见实现是哈希表+双向链表,做到O(1)的读写与淘汰;Linux内核用近似LRU(多级链表冷热分区)避免维护严格顺序带来的开销。
  5. CAS通过比较并交换实现无锁更新,失败后需要重试;库存扣减等高竞争场景可以引入版本号或分段计数减少冲突概率,避免忙等消耗过多CPU。