先读这个:面试的形式和重点变得很快,这里的内容有时效性;这里只写公开的资源和我自己的理解,不写任何一家公司的面试题或流程。
我也还在补系统设计。这页保留我读过的公开资源和一些思考;想动手练习,可以先去系统设计练习,从信息流、RAG 或带记忆的助手选一个。
没有固定公式
我的体会是,系统设计没有一套背下来就能用的模板。真正被考察的是两件事:你知不知道每个选择的 trade-off,以及你能不能把整个系统串起来。
所以从最基本的出发就行:
- 要解决的是什么问题?成功长什么样?
- 手里有什么数据?没有什么数据?
- 约束是什么——规模、延迟、成本、freshness?
- 每一步选这个方案,放弃了什么?
一个例子:推荐系统
比如要做推荐。先看手上有什么:
- 如果有关注、好友或互动关系,可以先用这些关系找候选(candidate)。图也不只指社交图:PinSage 用的是 Pinterest 的物品与收藏板关系,别把几种不同的数据结构混为一谈。
- 如果没有关系数据呢? 那就退回到行为本身:item–item 的共现、双塔(dual-encoder)召回、内容特征(标题、类目、多模态 embedding)。冷启动(cold start)阶段,内容特征和热门兜底往往比复杂模型更管用。
再往下每一层都是取舍:召回要多快、排序能用多大的模型、特征要多新鲜、离线指标涨了线上会不会涨、复杂度值不值得维护。把这些说清楚,比背一套架构图有用得多。
公开资源
通用系统设计:
- System Design Primer:免费,覆盖面广,适合搭骨架
- ByteByteGo:Alex Xu 的《System Design Interview》系列,图多、好读
- Designing Data-Intensive Applications:想真正理解底层取舍,这本最值得花时间。截至 2026-10,最新的是 2026 年 3 月出版的第 2 版(Martin Kleppmann、Chris Riccomini 合著,O'Reilly);书的网站目前仍是第 1 版的介绍
ML / 推荐方向:
- Designing Machine Learning Systems(Chip Huyen)
- Evidently 的 ML system design 案例合集:几百个真实系统的公开分享
- Eugene Yan: system design for discovery:搜索与推荐系统的分层设计
- Twitter 开源的推荐算法:推荐链路中的公开组件,不是完整可部署的生产系统
站内相关
- 搜索与检索:模型怎样找到需要的信息
- 现代 AI 系统:模型只是其中一部分
- Agents:不同场景怎么用
- Evaluation:我们凭什么说系统变好了
- Kubernetes 与 GPU 集群:分布式训练为什么要成组调度(gang scheduling),推理服务扩容为什么不只是加副本(待审核草稿)
本页术语 3
- 候选 candidate
- 召回阶段捞出来、等待精排挑选的内容
- 双塔 dual-encoder
- 用户和内容各一个编码器,映到同一向量空间靠内积召回
- 冷启动 cold start
- 用户或内容缺少历史证据,模型只能靠先验