WEEK 08

把故事讲出去:面试冲刺

八周(剧里是两年)的历练结束。你决定去更大的平台看看--手里这个从 0 长到百万订单、扛过大促的库,就是你最硬的项目经历。这一周不学新东西:把会的讲清楚,把手速练回来。
目标:不学新东西,只做两件事--把会的说清楚,把手速练回来。
0 / 7 天
剧情 第一步:把这八周踩过的性能知识点,变成能脱口而出的 60–90 秒口述。
学 · 20 min
  • 口述答案的结构:结论先行 -> 原因 -> 举例 -> 边界
  • 每题控制在 60–90 秒
练 · 100 min
  1. 把页面底部「性能与索引」8 问 + 自己补 12 问,写成 20 题
  2. 每题写一份 60–90 秒的口述稿
  3. 录音,回放,标出讲得别扭的地方(那就是没想清楚的地方)
  4. 重讲一遍被标记的题
  5. 挑 3 题预设追问(「那如果数据量再大 10 倍呢?」)并准备答案
过关20 题都能脱稿讲完,其中 5 题能应对一轮追问。
专注视图 ->
剧情 接着攻克面试最容易讲糊的一片区。好消息:你 W5 用两个 psql 窗口真刀真枪复现过每一种异常。
学 · 20 min
  • 重点攻克两个最容易讲糊的题:「幻读到底是什么」「PG 和 MySQL 在 RR 下的差别」
练 · 100 min
  1. 整理 20 题并写口述稿
  2. 用 D34 实测出的表格作为讲述时的证据
  3. 录音回放并修正
  4. 练习画图讲解 MVCC 的可见性判断
  5. 准备「你遇到过死锁吗」这类经历题的答案(用 D35 的实验当素材)
过关能边画图边讲 MVCC;能说清 PG 与 MySQL 在可重复读上的差异。
专注视图 ->
剧情 面试官最爱出「你来设计一个 X」。你不是背模板的人--你是真的从 0 设计过一套库的人。
学 · 20 min
  • 设计题答题模板:需求澄清 -> 实体与关系 -> 建表 DDL -> 索引 -> 典型查询 -> 扩展性风险

    场景 面试官最爱出「你来设计一个 X」:点赞、私信、评论树……你不是背模板的人,但结构能让思路不漏项。

    讲解 六步走:① 需求澄清:主动问「数据量级?读写比例?」--多数人上来就写表,这一问就是加分;② 实体与关系:画出有哪些对象、几对几;③ 建表 DDL:主键、类型、约束(W5 的功夫);④ 索引:对着典型查询建,说出理由(W6 的功夫);⑤ 典型查询:给三个高频查询的 SQL;⑥ 扩展性风险:数据量再大 10 倍会先崩哪里。每一步都是这八周练过的东西,拼起来而已。

    试试
    -- 模板示例:点赞系统
    create table likes (
      user_id    uuid not null,
      target_type text not null,      -- post / comment
      target_id   uuid not null,
      created_at  timestamp not null default now(),
      primary key (user_id, target_type, target_id)  -- 天然幂等
    );
    -- 典型查询:① 某内容的点赞数 ② 用户是否点过 ③ 我点赞过的列表
    -- 扩展性:热点行的计数竞争 -> 计数表 / 缓存(W7 D48 的思路)

    易错 写完 DDL 就停 = 只完成了三分之一;索引、典型查询、扩展性风险各占一分。

  • 一定要主动问「数据量级」和「读写比例」再动手
练 · 85 min · 每题 17 分钟
  1. 设计点赞系统(注意热点行与计数)
  2. 设计订单表与状态流转(状态机怎么存)
  3. 设计私信/消息表(会话维度还是消息维度)
  4. 设计标签系统(多对多,以及按标签筛选的索引)
  5. 设计评论树(邻接表 / 路径枚举 / 闭包表三选一并说明理由)
过关5 题都给出了 DDL + 索引 + 3 个典型查询 + 1 个扩展性风险。
专注视图 ->
剧情 手速是练回来的。纸上、限时、闭卷--还原白板面试的压迫感。
规则
  • 纸上手写,不许运行、不许查资料,60 分钟 8 题
练 · 120 min
  1. 60 分钟闭卷手写 8 题(从 D27 的题型里随机抽)
  2. 上机逐题验证,记录一次通过率
  3. 错题当场重写到正确为止
  4. 把错因归类:语法记错 / 框架用错 / 思路偏了
  5. 更新 mistakes.md
过关8 题一次通过 ≥ 6 题。
专注视图 ->
剧情 第二场手写专项:多表、子查询、集合运算。
规则
  • 同样 60 分钟 8 题,闭卷手写
练 · 120 min
  1. 60 分钟闭卷手写 8 题(多表 + 子查询 + 集合运算)
  2. 上机验证并订正
  3. 把 D53 和今天的错题合并成一张「临场易错清单」
  4. 清单控制在一页纸内,面试前 10 分钟只看它
  5. 对着清单再默写一遍最容易错的 3 条
过关8 题一次通过 ≥ 6 题;易错清单成稿。
专注视图 ->
剧情 把「入职创业公司,从 0 建库到扛住大促」写成简历亮点--每个数字都经得起追问。
学 · 20 min
  • 简历写法:动词 + 做了什么 + 量化结果
  • 每一句都必须经得起「具体怎么做的」这一问
练 · 100 min
  1. 写第一条简历亮点:数据建模相关(用 D31 的 ER 图和 D30 的约束设计当素材)
  2. 写第二条:查询优化相关,必须带数字(从 X 秒到 Y 毫秒)
  3. 为每条准备 3 层追问的答案
  4. 练 3 分钟项目自述,录像回看
  5. 删掉自述里所有讲不清的词
过关两条简历亮点各能撑住三轮追问;3 分钟自述一气呵成。
专注视图 ->
剧情 最后一天。一场 45 分钟的全真模拟,一张闭卷知识地图,为这八周画上句号。
安排
  • 找人做 45 分钟模拟面试;没有人就自问自答并录像
  • 题目从底部 24 题自测清单里随机抽
练 · 120 min
  1. 45 分钟模拟面试(10 分钟自我介绍 + 20 分钟八股 + 15 分钟手写)
  2. 回看录像,标出卡壳的每一处
  3. 闭卷画一张完整的 SQL 知识地图
  4. 画不出来的分支就是接下来 30 天的维护重点,列成清单
  5. 制定后续 30 天维护计划:每天 20 分钟,只做错题重刷 + 一道新题
过关知识地图覆盖八周全部主题;维护清单已写进日历。
专注视图 ->