CalcGuide · 技术博客主页 / 一页纸学习计划
🔥极高

系统设计与行为面试:白板画图与 STAR 故事库

分类:项目与职业能力 · 路径:docs/topics/system-design-and-behavioral/README.md

#system-design#behavioral#whiteboard#star#mock

用 3~4 周完成 4 套白板设计 + 10 道 STAR 答案 + 5 次 mock,能讲清系统也能讲清自己

父主题

求职与技术面试:从简历到 offer 的工程化准备

子主题(0)

系统设计与行为面试:白板画图与 STAR 故事库

0. 元信息

1. 学习路线

ByteByteGo 4 步法(容量 → API → 数据模型 → 深入设计)
  → 4 套经典白板(短链 / Feed / 限流 / 排行)
  → 行为 8 大主题(Conflict / Failure / Leadership / Ambiguity / Influence / Prioritization / Technical / Customer)
  → STAR 故事库(10 个项目故事覆盖 8 主题)
  → 5 次完整 mock(编码 + 系统设计 + 行为)

每一步都是下一步的前置:没有白板练习就上系统设计会被秒拒;没有 STAR 库就上行为面试会卡壳。

2. 阶段周数分配

阶段3 周方案4 周方案备注
1. 白板 4 步法(容量 / API / 数据模型 / 深入设计)0.50.5模板 + 5/5/10/25 时间分配
2. 4 套经典白板11.5短链 / Twitter timeline / 限流 / 排行榜
3. 行为 8 主题 + STAR 故事库1110 个故事覆盖 8 主题
4. Mock 综合(编码 + 系统设计 + 行为)0.515 次 mock + 复盘
合计34

3 周方案面向系统设计有经验、行为面试 STAR 已熟练的资深工程师;4 周方案面向 L5+ 第一次走完整流程的求职者。综合项目(白板 + STAR + mock)作为求职 Sprint 的子模块。

3. 核心知识 / 产出 / 标准表

阶段核心知识实践产出可观察学会标准
1. 白板 4 步法容量估算(5 分钟)+ API(5 分钟)+ 数据模型(10 分钟)+ 深入设计(25 分钟)一张白板模板 + 时间分配表45 分钟内能完整讲清一套系统
2. 4 套经典白板短链生成、Twitter timeline、限流、排行榜4 套白板录音(每套 45 分钟)每套能让 mock 面试官听懂
3. 行为 8 主题Conflict / Failure / Leadership / Ambiguity / Influence / Prioritization / Technical / Customer8 主题清单每主题能讲 1~2 个项目故事
4. STAR 故事库10 个项目故事,覆盖 8 主题,每故事 3 分钟10 个 STAR 文本 + 录音录音回听时能 60 秒讲完
5. Mock 综合编码 60 分钟 + 系统设计 45 分钟 + 行为 30 分钟5 次完整 mock 录音 + 复盘真实面试前后 5 分钟内进入状态

4. 第一周任务

Day 1 约定:本计划以”4 步白板法 + 行为 8 主题 + STAR 故事库 + mock 录音 + 复盘”为最小循环。所有产出必须有可见证据(白板录音、STAR 卡片、mock 录音、复盘清单)。

任务当天交付
Day 1学 ByteByteGo 4 步法(5/5/10/25 分钟分配),用 Excalidraw 画 1 张白板模板(含容量估算公式)白板模板 + 时间分配表
Day 2短链系统白板:容量估算(DAU 10M / QPS 590 / 存储 549GB)+ API + 数据模型 + Redis 缓存,45 分钟讲解并录音短链白板录音 + Mermaid 组件图
Day 3行为 8 主题清单(Conflict / Failure / Leadership / Ambiguity / Influence / Prioritization / Technical / Customer),从 8 个项目中各选 1~2 个最强故事8 主题清单 + 故事池
Day 4STAR 故事 1:技术领导(Leadership)— 团队 5 人无 owner,引入 on-call 制度 + 事故复盘 + SLO 看板1 张 STAR 卡片 + 录音
Day 5STAR 故事 2:失败与反思(Failure)— 发布 bug 影响 10% 用户,5 分钟回滚 + 1 小时定位 + 写复盘 + 加自动化测试1 张 STAR 卡片 + 录音
Day 6找 1 位 mock 搭档:1 道系统设计(45 分钟)+ 2 道行为(30 分钟)= 75 分钟,录音回放 + 记 3 个改进点mock 录音 + 反馈清单
Day 7步骤 A:跑通白板模板 + 1 套白板 + 2 张 STAR + mock 录音;步骤 B:补齐 4 类边界(白板超时 / 行为用”我们”开头 / Result 无量化 / mock 没录音)面试工具包 v0.1 + 4 类问题清单

Day 7 步骤 A 把面试资产跑通;步骤 B 每类问题先在文档里复现,再讲清补救路径。

5. 阶段通用验收

  1. 不看笔记 45 分钟内完整讲清任意 1 套白板(含容量 / API / 数据模型 / 深入设计 4 步);
  2. 用 STAR 4 段讲完任意 1 个项目故事(S/T 各 30 秒,A 2 分钟,R 30 秒含量化);
  3. 画一张图:白板组件图(短链 / Twitter timeline / 限流 / 排行榜 4 选 1,Mermaid 渲染);
  4. 测试 4 类边界:白板超时 / 行为用”我们”开头 / Result 无量化 / mock 紧张;
  5. 准备 10 道 STAR 故事覆盖 8 主题,每道录音 ≤ 3 分钟;
  6. 容量估算能从 DAU 起步算到 QPS / 存储(白板录像可证);
  7. 能修改已有白板与 STAR 故事(换受众、加 follow-up、加 learning),不是只照抄。

6. 最终验收

7. 综合项目

首选:求职 Sprint 的 design + behavioral 子模块(必做:4 套白板 + 10 道 STAR + 5 次 mock)。

备选:dream company 岗位的 mock 包(针对 1 家目标公司岗位 JD:定制 3 套白板 + 8 道 STAR + 3 次 mock + 1 份讲解策略),适合”已锁定 dream company”的求职者。

任何综合项目都必须包含:

  1. 白板 4 步法与时间分配(5/5/10/25 分钟);
  2. 4 套经典白板(短链 / Feed / 限流 / 排行)+ 组件图 + 录音;
  3. 行为 8 主题清单与覆盖;
  4. 10 道 STAR 答案(含 S/T/A/R + 量化 + learning);
  5. 5 次完整 mock 录音 + 复盘;
  6. 容量估算练习(≥ 50 题);
  7. README(含 mock window、目标、产出、复盘);
  8. retrospective.md(含教训、改进、下一轮)。

notes/ 与 README 存放规范

所有”白板组件图 / STAR 卡片 / mock 复盘 / 容量估算”类交付物统一存放在项目根目录的 notes/ 子目录或 README 的对应章节;提交时一并带上,避免散落在聊天或临时文件里。综合项目的 notes/ 至少包含:

8. 推荐开源资料

阶段角色资料链接用法
全部经典书Alex Xu《System Design Interview》Vol 1 & 2https://bytebytego.com/系统设计白板事实标准
全部经典书Gayle McDowell《Cracking the Coding Interview》https://www.crackingthecodinginterview.com/行为面试 + 策略
1原理Martin Kleppmann《Designing Data-Intensive Applications》https://dataintensive.net/数据系统原理(必读 5~9 章)
1视频Hello Interviewhttps://www.hellointerview.com/视频白板 + 评分标准
2题库Educative Grokking System Designhttps://www.educative.io/courses/grokking-the-system-design-interview题库 + 图解
2集合Donne Martin《System Design Primer》https://github.com/donnemartin/system-design-primerGitHub 系统设计集合
2视频System Design Fight Clubhttps://www.youtube.com/@hickeyandco真实白板演练
3行为Lewis Lin《Decode and Conquer》https://www.decodenconquer.com/PM/Engineer 行为题库
3行为Haseeb Qureshi《My Ten Rules》https://haseebq.com/my-ten-rules-for-negotiating-a-job-offer/行为 + 谈判
5mockPramphttps://www.pramp.com/免费 mock
5白板Excalidrawhttps://excalidraw.com/白板工具(虚拟白板)

默认使用顺序:先读《System Design Interview》Vol 1 建立 4 步法 → 读《Designing Data-Intensive Applications》5~9 章补底层 → 看 Hello Interview 视频白板 → 用 Excalidraw 画 4 套组件图 → 用 Educative 补题库 → 用 Lewis Lin《Decode and Conquer》准备 STAR 故事库 → 用 Pramp 做 5 次 mock → 写复盘到 notes/mock-retro.md

9. 学习资料汇聚(v0.3 自包含)

9.1 背景与动机

系统设计与行为面试是 L5+ 工程师的硬门槛。系统设计从”画组件图”到”讲清 5W”是 2015 年后 Alex Xu、Hello Interview 等平台把它工程化的结果;行为面试的 STAR 框架来自 HR 行业,但被 Gayle McDowell、Lewis Lin 等人系统化。今天每个 senior 工程师面试都过这两关:系统设计证明你能做大,行为证明你能合作。

9.2 概念地图

flowchart LR
  Whiteboard[白板 4 步法] --> Capacity[容量估算]
  Whiteboard --> API[API 设计]
  Whiteboard --> Schema[数据模型]
  Whiteboard --> Deep[深入设计]
  Capacity --> Short[短链]
  Capacity --> Feed[Twitter timeline]
  Capacity --> Rate[限流]
  Capacity --> Rank[排行榜]
  Behavioral[行为 8 主题] --> STAR[STAR 故事]
  STAR --> Conflict[Conflict]
  STAR --> Failure[Failure]
  STAR --> Leadership[Leadership]
  STAR --> Ambig[Ambiguity]
  STAR --> Infl[Influence]
  STAR --> Prio[Prioritization]
  STAR --> Tech[Technical]
  STAR --> Cust[Customer]
  Whiteboard --> Mock[完整 mock]
  STAR --> Mock

关系说明:白板练的是”做大”的能力,STAR 练的是”讲清自己”的能力,两者通过 mock 串联。

9.3 基础知识讲解

9.3.1 系统设计经典

资料影响用法
Alex Xu, System Design Interview Vol 1 & 2白板事实标准必读 Vol 1
Martin Kleppmann, Designing Data-Intensive Applications数据系统原理必读 5~9 章
Hello Interview视频白板必看
Educative Grokking System Design题库 + 图解必刷
Sahn Lam, Beyond Cracking the Coding Interview系统设计扩展选读
Donne Martin, System Design Primer(GitHub)系统设计资源集合字典
Hickey & Co, System Design Fight Club(YouTube)真实白板演练必看

9.3.2 行为面试经典

资料影响用法
Gayle McDowell, Cracking the Coding Interview行为题库必读第 9 章
Lewis Lin, Decode and ConquerPM/Engineer 行为题必读
Haseeb Qureshi, My Ten Rules for Negotiating行为 + 谈判必读
Julie Zhuo, The Making of a Manager行为 + 管理选读

9.3.3 ByteByteGo 白板 4 步法

1. 容量估算(5 分钟)
   - DAU / QPS / 读写比 / 对象大小 / 留存期
   - 用 DAU × 操作数 × 对象大小 × 留存期 / 86400 计算 QPS
   - 用 QPS × 对象大小 × 留存期 × 副本系数 计算存储

2. API 设计(5 分钟)
   - 列出 3~5 个核心 endpoint
   - 说明请求/响应 schema
   - 标注延迟目标

3. 数据模型(10 分钟)
   - 关键表 / collection
   - 索引(primary + secondary)
   - 分区 / 分片策略

4. 深入设计(25 分钟)
   - 缓存层(CDN / Redis / 本地)
   - 消息与异步(Kafka / SQS)
   - 一致性(CAP / PACELC / Saga)
   - 可观测(SLI / SLO / 告警)
   - 故障应对(限流 / 熔断 / 降级)

9.3.4 STAR 故事库结构

故事 1:技术领导(Leadership)
  Situation:团队 5 人,无 owner,事故频发
  Task:被任命为 Tech Lead,3 个月内稳定系统
  Action:引入 on-call 制度 + 事故复盘 + SLO 看板
  Result:事故率降低 70%,团队满意度提升

故事 2:冲突处理(Conflict)
  Situation:与同事对架构选型意见分歧
  Task:作为 Tech Lead,需要达成共识
  Action:用数据 + prototype 说服,引入 2 周 spike
  Result:团队达成共识,性能提升 3x

故事 3:失败与反思(Failure)
  Situation:发布时引入 bug,影响 10% 用户
  Task:作为 on-call,需要快速恢复
  Action:5 分钟回滚 + 1 小时内定位 + 写复盘 + 加自动化测试
  Result:下次同类 bug 0 复发,团队加测试覆盖率门槛

(覆盖 8 主题,共 10 个故事)

9.4 经典问题与经典案例

#问题重要性最简答案
1短链生成器(百万 QPS)容量 + 缓存 + ID 生成Snowflake / base62 + Cache-Aside + 302
2Twitter timeline 设计推 / 拉 / 推拉混合 + 热点写扩散 + 读扩散 + 大 V 单独通道
3限流系统设计算法 + 分布式一致性令牌桶 + Redis Lua + 滑动窗口
4排行榜系统设计实时性 + 准确性ZSet + 定时刷新 + 多级缓存
5如何讲清 conflict 类行为题高频且易翻车用具体场景,避免负面,强调 learning
6如何讲 failure 类题决定可信度必须诚实,重点是 process 与 growth
7如何讲 leadership 类题决定 TL 路径用 influence / 推动 / 辅导 / mentor 框架
8如何讲 ambiguity 类题决定 senior 路径讲清如何拆解、如何定优先级
9如何讲 influence 类题决定跨团队能力用数据说服、prototype、stakeholder management
10如何讲 prioritization 类题决定产品 sense用 RICE / ICE 框架 + 量化
11设计消息系统(kafka)消息语义 + 一致性partition 保序 + exactly-once
12设计搜索系统倒排 + 排序 + 高可用Elasticsearch + 分片 + 副本
13设计打车系统实时 + 匹配 + 地图geo 索引 + 流式计算 + 推送
14设计网约车定价实时计算 + 一致性流式 + Redis + 回放
15设计 stock trading强一致 + 高可用Raft / Paxos + 同步复制

9.5 学习难点

9.6 技术标准与接口

Entity

白板组件图、容量估算表、API schema、数据模型、STAR 故事卡、mock 录音。

Scope

系统设计不替代系统实现,行为面试不替代工作能力;只解决”现场讲清”与”现场答好”。

Structure

Ecosystem

Depth Tiers

本子主题要求:L3

Source

9.7 关键代码

9.7.1 容量估算器

# 9.7.1 容量估算:DAU → QPS → 存储
def estimate(dau: int, ops_per_user: float,
             read_write_ratio: float, obj_size_bytes: int,
             retention_days: int, replicas: int = 3) -> dict[str, float]:
    qps_total = dau * ops_per_user / 86400
    qps_read = qps_total * read_write_ratio / (1 + read_write_ratio)
    qps_write = qps_total / (1 + read_write_ratio)
    storage_bytes = qps_write * 86400 * retention_days * obj_size_bytes * replicas
    return {
        "qps_total": round(qps_total, 2),
        "qps_read": round(qps_read, 2),
        "qps_write": round(qps_write, 2),
        "storage_gb": round(storage_bytes / 1024**3, 2),
    }

if __name__ == "__main__":
    # 短链:DAU 10M,每人写 0.1 次/天,读 5 次/天,对象 200B,留 3 年
    print(estimate(
        dau=10_000_000,
        ops_per_user=5.1,
        read_write_ratio=50,
        obj_size_bytes=200,
        retention_days=365 * 3,
    ))
    # {'qps_total': 590.28, 'qps_read': 583.33, 'qps_write': 11.57, 'storage_gb': 549.32}

9.7.2 系统设计白板组件图(Mermaid)

%% 9.7.2 短链系统白板:组件 + 数据流
flowchart LR
  Client --> DNS --> CDN --> LB[Load Balancer]
  LB --> API[API Gateway]
  API --> App[短链服务 无状态]
  App --> Cache[(Redis)]
  App --> DB[(MySQL)]
  App --> IDGen[ID 生成 Snowflake]
  IDGen -.返回 ID.-> App
  Cache -.读.-> App
  DB -.读/写.-> App
  App --> Redirect[302 跳转]

9.7.3 STAR 故事模板检查

# 9.7.3 STAR 答案检查器:四段时长 + 量化
from dataclasses import dataclass

@dataclass
class StarAnswer:
    situation: str
    task: str
    action: str
    result: str

def star_score(ans: StarAnswer) -> dict[str, bool]:
    """返回各段是否合规"""
    return {
        "situation_clear": len(ans.situation) > 50,
        "task_role_clear": "I" in ans.task or "we" in ans.task.lower(),
        "action_specific": len(ans.action) > 200,
        "result_quantified": any(
            c in ans.result for c in ["%", "x", "ms", "$", "k", "M"]
        ),
    }

if __name__ == "__main__":
    ans = StarAnswer(
        situation="电商平台每秒 10k 订单,原同步调用 P99=5s",
        task="I was the Tech Lead, tasked with redesigning order service",
        action="I introduced Kafka async, Outbox pattern, cache prewarming",
        result="P99 dropped from 5s to 180ms, 10x capacity, saved $200k/year",
    )
    print(star_score(ans))

10. 常见误区

11. 所有知识点分类(统一规则)

  1. 编程语言
  2. 数据结构与算法
  3. 计算机基础
  4. 工程技术
  5. Web 与后端
  6. 前端与客户端
  7. 数据与人工智能
  8. 项目与职业能力

本计划归属:项目与职业能力 主 + 工程技术 辅(系统设计)。


本主题贡献

直接依赖(1)

查看知识图谱 · 热度 🔥极高