每道题先给出需求和限制。你可以先设计一个简单可用的版本,再改几个条件,看看原来的方案哪里需要调整。不用追求画出一张“标准架构图”。

以下题目都是自拟的教学练习,不是任何公司的面试原题,也不代表线上生产配置。

先选一道题

题目 主要练什么 最容易漏掉的事
推荐 Feed 召回、排序、新鲜度(freshness)与降级(fallback) 被召回漏掉的内容,排序救不回来
带引用的知识库问答 索引、检索(retrieval)、权限与证据 “看见了文档”不等于“答案有依据”
可更正的长期记忆 写入、冲突、检索与删除 用户改了信息,旧版本仍可能被取出

每题怎么练

先花 5 分钟写清要解决什么、暂时不做什么,以及时间、成本等限制。再画数据流,标出每一步传递的信息。最后想一个出错的场景:服务超时、信息过期、数据分布变了,或者用户撤回权限,原来的设计还能正常工作吗?

方案不一定越复杂越好。如果去掉一个组件也能满足需求,就没必要为了架构图好看而留着它。

设计题和项目拆解有什么区别

这两种练习都放在工程实践。设计题从需求出发,允许你声明假设、比较方案;项目拆解从已有实现出发,检查代码里实际做了什么、哪些细节仍然不知道。本站的教学项目另外标明,不把自拟架构说成某家公司线上的事实。

资源与阅读建议保留在系统设计导读。想先学原理,可以回基础与原理;想换到技术问答、ML Coding 或算法题,去面试准备。

本页术语 3
新鲜度 freshness
内容产生到可被检索之间的延迟
降级 fallback
主路径不可用时切换到较简单但语义明确的备用行为
检索 retrieval
从外部语料里找出相关内容