TinyKV / TiKV / MIT 6.824 面经索引
来源:本地
interview-experiences/tinykv-tikv-6.824-mianshi.md,更新口径是 2026-06-01。
我把最近两年和 TinyKV、TiKV、MIT 6.824/6.5840 相关的面经单独拎出来了。牛客和个人博客权重最高,因为它们通常会记录逐轮问题;问答站和路线帖可以看,但不适合作为主证据。
看这张表的时候,重点不是背公司名字,而是找追问模式:Raft 会追异常场景,事务会追 Percolator 和锁清理,存储引擎会追 LSM/Badger,TinyKV 项目会追你到底改过哪些模块。
筛选口径
- 主来源:牛客逐轮面经、个人博客/技术博客复盘。
- 暂不把 AskTUG 放入主表;它更像问答/题库,面经价值偏弱。
- 权重规则:2025/2024 且逐题记录为高权重;2023 及以前、博客复盘、路线类文章为中低权重。
- 关键词范围:TinyKV、TiKV、MIT 6.824、MIT 6.5840、Raft、Percolator、LSM、数据库内核、分布式存储。
高权重:近两年逐题面经
| 权重 | 时间 | 来源 | 公司/岗位 | 类型 | 重点问题 | 链接 |
|---|---|---|---|---|---|---|
| 高 | 2025-09-07 | 牛客 | 百度秋招提前批 C++ 后端二面 | 校招提前批 | Percolator vs 单体数据库事务、Raft 全流程、ACID/CAP、CMU 15445 隔离级别、LRU-K、crabbing、线程安全 LRU、KV 场景题 | 百度秋招提前批 C++ 后端二面 |
| 高 | 2025-08-07 | 牛客 | 百度后端开发三面 | 校招提前批 | 分布式唯一 ID、分布式事务、2PC、Percolator、Raft 小问题、OceanBase 比赛经历 | 百度提前批后端三面 |
| 高 | 2025-08-01 | 牛客 | 腾讯 TEG DB 内核开发二面 | 校招/提前批倾向 | TinyKV 优化点、BadgerDB、LSM Tree、LSM vs B+Tree、Hash 冲突、并发 HashMap、mmap 持久化崩溃恢复、手写 HashMap | 腾讯 TEG DB 内核开发二面 |
| 高 | 2025-07-23 | 牛客 | 百度提前批二面 | 校招提前批 | CMU 15445 + TinyKV、Multi-Raft 必要性、Percolator、Raft 选举/日志复制、脑裂、PreVote、Leader Lease、ReadIndex、广告日志 KV 场景题 | 百度提前批二面 |
| 高 | 2025-04-24 | 牛客 | 字节客服平台一面 | 未明确,偏实习/春招 | Raft、Percolator、Multi-Raft、MVCC、事务隔离级别、多数据中心、过期时间 LRU、redo/undo log | 字节客服平台一面 |
| 高 | 2025-03 左右 | 牛客 | TikTok 直播后端开发 | 实习 | TiKV 成熟产品案例、LSM Tree、Raft、CAP、一致性模型、ReadIndex、Lease Read、Leader Lease、Bloom Filter、KV 分离 | TikTok 直播后端实习三轮技术面 |
| 高 | 2024-03-26 | 牛客 | 腾讯 WXG 后台开发 | 实习 | Raft 如何保证一致性、Raft 存储实现、性能测试、脑裂恢复、日志选举、LevelDB、MVCC、KV 存储设计 | 腾讯实习基地 WXG 后台开发 |
| 高 | 2024-03 | 牛客 | 腾讯日常实习一面 | 日常实习 | MIT 6.824 Raft、Leader 宕机、选举冲突、Redis 持久化、IO 多路复用、Go 使用 | 腾讯日常实习一面 |
中权重:稍早但问题密度高
| 权重 | 时间 | 来源 | 公司/岗位 | 类型 | 重点问题 | 链接 |
|---|---|---|---|---|---|---|
| 中 | 2023-08 | 牛客 | 字节基架 | 校招提前批 | TinyKV 中 Raft/Percolator、PreVote、ReadIndex、LeaseRead、FollowerRead、GMP、K8s、redo log 复制 | 两周盘下字节基架校招 Offer |
| 中 | 2023-03/04 | 牛客 | 腾讯 IEG 游戏数据科学后端 | 暑期实习 | Raft KV-Store、Snapshot 持久化和一致性、边写 Snapshot 边服务、解释 Raft、MIT 6.824 是什么、select/epoll、Spinlock vs Mutex | 腾讯 IEG 暑期实习面经 |
| 中 | 2022 秋招 | 牛客 | 美团/百度/StarRocks/蚂蚁等数据库内核 | 校招 | TinyKV 生产化问题、Percolator 性能、Raft 成员变更、LevelDB、LSM、B+Tree、OceanBase 架构 | 2022 年秋招后端数据库内核面经 |
| 中 | 2022-09 | 个人博客 | RisingWave Labs Database Kernel Rust | 实习 | TiKV 扩容、Region 分裂、Raft Group 迁移、Snapshot、LSM/LevelDB、Bloom Filter、Bitcask、HashMap resize | RisingWave Labs 实习面试 |
低权重:路线和旧资料参考
| 权重 | 时间 | 来源 | 公司/方向 | 类型 | 参考价值 | 链接 |
|---|---|---|---|---|---|---|
| 低 | 2022-09 | 个人博客 | 23 届数据库/存储秋招 | 校招复盘 | 阿里云、字节、百度、小红书、StarRocks、SelectDB 等数据库/存储方向整体风格;推荐 MIT 6.824/TinyKV | 23 届小硕秋招分享:数据库/存储方向 |
| 低 | 2022-03 | 个人博客 | 数据库内核求职路线 | 校招/春招复盘 | 6.824 -> TinyKV -> CMU 15-445 路线;高频题包括 PreVote、ReadIndex、LeaseRead、Raft 持久化、成员变更、Percolator、LSM vs B+Tree | 应届生如何半年找到数据库内核工作 |
| 低 | 2022-01 | 牛客 | Shopee 北京特征存储引擎 | 社招/实习信息不明 | PingCAP Talent Plan TinyKV、Badger/LSM、WiscKey、SSD 随机读写、LSM 写入流程、Raft 读流程、2PC 缺点、mmap/CGO | Shopee 北京特征存储引擎面经 |
| 低 | 2021-04 | 牛客 | PingCAP 数据库工程师 | 春招实习 | 6.824 背景、Raft Figure 8、IO 多路复用、RPC 调用链路、ACID/CAP、分布式事务、OS 内存/页表/调度 | PingCAP 数据库工程师春招实习面经 |
| 低 | 未标明 | Go 语言中文网 | PingCAP 研发 | 实习 | 分布式锁、Etcd/Redis 锁实现、故障/网络中断测试、事务隔离级别、申请内存流程、CPU 调度、Go 协程/GC、网络栈、IO 多路复用 | PingCAP 研发实习面经 |
高频考点聚类
Raft / Multi-Raft
优先级最高。近两年的百度、腾讯、字节/TikTok 都会追。
- Raft 基本流程:Leader 选举、日志复制、commitIndex、applyIndex、任期、日志匹配性质。
- 异常场景:Leader 宕机、网络分区、脑裂、选举冲突、旧 Leader 恢复、日志分歧。
- 持久化:term、vote、log、snapshot 分别什么时候落盘;崩溃恢复后如何继续。
- Snapshot:什么时候生成,如何安装,边服务边 snapshot 如何保证一致性。
- 读优化:ReadIndex、LeaseRead、Leader Lease、FollowerRead 的适用条件和风险。
- PreVote:解决什么问题,为什么能减少无意义 term 增长。
- Multi-Raft:为什么单 Raft Group 不够,Region/Shard 如何和 Raft Group 对应,Region 分裂与迁移如何做。
Percolator / 分布式事务
高频出现在百度、字节、数据库内核方向。
- 2PC 基本流程:prewrite、commit、primary key、secondary key、锁记录。
- Percolator 和普通单机事务的区别。
- Percolator 和传统 2PC 的关系:它解决了什么,没解决什么。
- MVCC:timestamp、版本链、读写冲突检测、事务隔离级别。
- 异常恢复:primary 提交但 secondary 未提交怎么办,锁遗留怎么办。
- 性能问题:多轮 RPC、锁冲突、热点 key、事务大小、写放大。
LSM / RocksDB / Badger / LevelDB
腾讯 TEG、TikTok、RisingWave、Shopee 相关面经里非常密集。
- LSM 写入路径:WAL、MemTable、Immutable MemTable、SSTable、Compaction。
- 读取路径:MemTable、Block Cache、Bloom Filter、SSTable 多层查找。
- LSM vs B+Tree:写入吞吐、读放大、写放大、空间放大、范围查询、缓存友好性。
- Level0 特点:为什么 Level0 文件可能重叠,为什么读放大明显。
- Compaction:触发条件、代价、对延迟的影响。
- Badger/WiscKey:KV 分离,value log,为什么适合大 value。
- Bloom Filter:误判、不漏判、适合过滤什么。
TinyKV 项目深挖
面试官通常不满足于“我实现了 Raft”,会追你自己的实现细节。
- 你改了哪些模块,遇到过哪些 bug,怎么定位的。
- TinyKV 和真实 TiKV 差在哪里。
- TinyKV 如何做生产化:监控、恢复、限流、配置变更、性能压测、故障注入。
- Raft store、scheduler、region、peer、message flow 的职责边界。
- 如果要支持热点 Region、扩容、迁移、副本均衡,你怎么设计。
KV 场景题 / 系统设计
这些题通常用来判断你是否能把项目知识迁移到工程设计。
- 设计一个高性能 KV 存储。
- 设计广告日志/直播场景下的 KV 写入系统。
- 设计支持 TTL 的 LRU/LFU/缓存系统。
- 设计分布式唯一 ID。
- 设计并发 HashMap 或持久化 HashMap。
- mmap 持久化后进程崩溃,如何保证恢复正确性。
刷题顺序建议
- 先刷 2025 百度两篇、腾讯 TEG、TikTok 直播后端。
- 再刷 2024 腾讯 WXG 和腾讯日常实习,补 Raft 实现细节。
- 然后看 2023 字节基架和 2022 数据库内核合集,整理老但经典的数据库内核追问。
- 最后看 RisingWave、数据库内核求职博客,用来补 LSM、TiKV 扩容、Region、Snapshot 等工程化表达。
面试回答准备模板
每个项目问题尽量按这个结构答:
- 背景:这个模块解决什么问题。
- 核心机制:关键数据结构、状态机、消息流或读写路径。
- 异常场景:宕机、网络分区、并发冲突、恢复流程。
- 工程取舍:吞吐、延迟、一致性、可用性、复杂度之间的选择。
- 自己做过什么:实现、调试、测试、压测、优化或复盘。