
💡 核心要点 (Key Takeaways)
- 系统设计不是背缓存、队列、分库分表,而是在约束下做取舍。
- 每个设计都要能解释 API、schema、数据流、瓶颈和失败路径。
- Senior 候选人要主动讲演进、成本、迁移、监控和跨团队依赖。
免费获取轮次诊断正在备战 SWE 面试?免费获取轮次诊断:发你的当前轮次与倒计时,我们先定位卡点,再决定下一步。
先做一个模板体检
如果你的 system design 回答能画出缓存、队列、数据库和分片,但说不清为什么这样选,可以先做一次体检:每个组件是否对应一个明确需求,每条数据流是否有 owner,每个失败路径是否有降级或恢复方案。答不上来,就说明模板只是记住了形状。
第一项:需求是否真的定住
很多候选人开场问了几个需求,但后面设计完全没用上。更稳的做法是把需求写成设计约束:核心用户是谁,读写路径是什么,延迟目标是多少,一致性要求是什么,哪些功能可以延后。后面每个组件都要能回到这些约束。
第二项:数据模型能不能承受追问
系统设计不是只画服务方框。数据模型决定状态如何流转、索引如何设计、历史如何查询、权限如何过滤、幂等如何保证。很多回答卡住,是因为 API 和 schema 没有先定清楚。
- API:资源模型、幂等、分页、权限。
- Schema:主键、索引、状态机、数据生命周期。
- Trade-off:一致性 vs 延迟,成本 vs 实时性。
- Operations:监控、SLO、oncall、incident 复盘。
第三项:失败路径是否具体
每次 system design mock 后,不要只问架构图像不像标准答案。改问四个问题:哪个服务挂了用户还能不能用,队列堆积时如何降级,重复请求如何去重,数据错了如何发现和修复。能回答这些,模板才开始变成工程判断。
容量估算不是背数字
很多候选人会背 QPS、存储和带宽公式,但没有把估算结果接回设计。容量估算的作用是决定哪里需要缓存,哪里需要异步化,哪里需要分区,哪里可以先保持简单。比如排行榜题里,写入频率、读 top K 频率、好友榜大小和赛季重置频率,会直接影响 Redis sorted set、预计算和历史归档方案。
💡 如果目标就是 SWE 岗,按岗位整理的题型分布、轮次路线与准备清单在这里。
SWE 面试辅助 →Trade-off 要有业务约束
不要只说“一致性和可用性取舍”。面试官更想听你把取舍放进业务场景:支付账务宁愿慢一点也要准确,消息 feed 可以接受短暂延迟但不能无限丢消息,实时位置服务可以降级到最近一次位置但要标记 freshness。trade-off 只有绑定用户影响,才像真实设计判断。
- 一致性:哪些状态必须强一致,哪些可以 eventual consistency。
- 延迟:哪些路径是用户同步等待,哪些可以后台处理。
- 成本:哪些数据需要热存储,哪些可以归档或按需计算。
- 演进:MVP 先做什么,规模扩大后第一处瓶颈在哪里。
45 分钟怎么分配
System design 题通常 45-60 分钟,模板型候选人缺的往往不是组件,而是节奏。稳定分配:0-5 分钟复述需求并写下三到五条设计约束;5-15 分钟定 API 和数据模型,与面试官确认;15-30 分钟画主数据流,讲清读写路径;30-40 分钟容量估算、瓶颈和 trade-off;最后 5-10 分钟主动讲失败路径、监控和演进方向。每阶段结束用一句话小结,并问“这部分 OK 吗,我们继续”,让面试官把你导向他想深挖的深度,而不是把时间花在打磨他并不关心的部分。
状态机和数据流怎么讲
追问里最常见的一类是“讲一条数据从产生到归档的完整路径”。模板回答只给静态架构图,强回答给时间线:数据写到哪里,谁异步消费,什么时候从热存储移到冷存储,怎么过期或删除,每一步状态是什么、可能失败在哪里。以订单为例:created、paid、shipped、completed、settled,每个状态迁移都要说清触发者、source of truth、消息丢了或重复了怎么办。能把数据生命周期讲顺,架构图才不再是背来的形状,而是你推导出来的结果。
收尾前的自查清单
时间快到时,用四个问题快速收口:主路径的延迟目标是否被满足,关键状态的一致性谁保证,最大故障时的用户表现是什么,如果流量再涨十倍第一处会坏在哪里。能一口气答完,就可以主动结束并问面试官想深挖哪一部分。答不完也正常,诚实说明哪部分需要再设计,比硬撑一个没有验证过的结论要好。
Senior 候选人的加分层
L4 候选人讲清主路径通常足够;Senior 候选人需要主动补迁移、灰度、监控、oncall、跨团队依赖和长期维护成本。比如从单库迁移到分片,不能只说分库分表,还要讲 dual write、backfill、校验、切流、rollback 和下游兼容。
一个练法:反推一个系统
最高效的练习不是多刷题,而是把一个熟悉的系统反推一遍:选一个你每天用的产品(打车、短视频、电商),用 30 分钟讲出它的读路径、写路径、缓存策略和可能的瓶颈,并写下三个 trade-off 和业务原因。然后让 mock 面试官挑一个组件问“为什么不用 X”。这个练习逼你为每个组件的存在辩护,正好对应文章开头的体检题。练五个系统之后,你的回答会从“我背过模板”变成“我在约束下做了选择”。
📋 资料来源与审校说明
本文由教研团队重新审校,完善了面试复盘动作与各环节重点说明。新增「45 分钟怎么分配」「状态机和数据流怎么讲」「一个练法:反推一个系统」三个 section,补齐节奏控制与数据生命周期视角。
- 公开面经信号和岗位能力模型:用于归纳题型和常见追问,不复刻候选人私人信息。
- Interview Support Pro 模拟面试复盘:用于总结候选人在表达、项目深挖和 follow-up 中的高频卡点。
💼 完整服务与价格我们提供 OA 代写($199 起)、VO 辅助($299 起)、VO 代面($499 起) 与 30 分钟免费咨询:按目标岗位、公司与轮次匹配具备相关经验的导师,覆盖 Coding、System Design、ML Design 与 BQ;具体导师与背景以接单前书面确认为准。
