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