面试知识库
进阶

系统设计方法论#

一句话答案#

系统设计五步法:需求分析(功能+非功能)→容量估算(QPS/存储)→架构设计→详细设计→瓶颈与扩展。

核心要点

五步法:

  1. 需求:功能需求 + 非功能需求(QPS/延迟/可用性)
  2. 估算:QPS / 存储量 / 带宽
  3. 架构:画系统架构图(接入层/服务层/数据层)
  4. 详细设计:核心流程/数据模型/API设计
  5. 瓶颈:单点故障/性能瓶颈/扩展方案
面试回答(2分钟版)

面试中做系统设计题我一般遵循五步法,口诀是”需估架详扩”。第一步花两三分钟澄清需求,包括功能需求和非功能需求比如QPS目标、延迟要求、可用性等级。第二步做容量估算,根据日活推算读写QPS、存储量和带宽需求,这一步很重要因为它决定了后面的技术选型。第三步画高层架构图,分出接入层、服务层和数据层,把核心组件和数据流画清楚。第四步深入详细设计,围绕核心流程、数据模型和API设计展开,这里要重点讲清楚关键的技术决策和trade-off。第五步讨论瓶颈与扩展,比如单点故障怎么解决、性能瓶颈在哪里、水平扩展和降级方案如何设计。最忌讳的是上来就画架构图,没有需求澄清的设计是空中楼阁。

追问与易错

追问方向:

  • “面试中怎么展开?先说什么?”→ 先花 2-3 分钟澄清需求(功能边界+非功能约束+规模量级),再用 DAU 推导 QPS/存储量级,然后画高层架构图,最后深入 1-2 个核心模块的详细设计
  • “容量估算怎么做?”→ 公式:平均 QPS = DAU x 人均操作数 / 86400,峰值 QPS = 平均 x 3~5 倍;存储 = 写 QPS x 86400 x 单条大小 x 保留天数;机器数 = 峰值 QPS / 单机能力 x 冗余系数
  • “怎么处理追问?”→ 追问通常围绕瓶颈和边界情况展开;回答时先承认问题合理,再给出解决思路(如加缓存/分库分表/降级方案),展示你对 trade-off 的思考而不是背答案

易错点:

  • ❌ 上来就画架构图——先花 2-3 分钟澄清需求
  • ❌ 背模板答案——面试官会追问细节