WEEK 08 0 / 7 天
把故事讲出去:面试冲刺
八周(剧里是两年)的历练结束。你决定去更大的平台看看--手里这个从 0 长到百万订单、扛过大促的库,就是你最硬的项目经历。这一周不学新东西:把会的讲清楚,把手速练回来。
目标:不学新东西,只做两件事--把会的说清楚,把手速练回来。
剧情 第一步:把这八周踩过的性能知识点,变成能脱口而出的 60–90 秒口述。
学 · 20 min
- 口述答案的结构:结论先行 -> 原因 -> 举例 -> 边界
- 每题控制在 60–90 秒
练 · 100 min
- 把页面底部「性能与索引」8 问 + 自己补 12 问,写成 20 题
- 每题写一份 60–90 秒的口述稿
- 录音,回放,标出讲得别扭的地方(那就是没想清楚的地方)
- 重讲一遍被标记的题
- 挑 3 题预设追问(「那如果数据量再大 10 倍呢?」)并准备答案
过关20 题都能脱稿讲完,其中 5 题能应对一轮追问。
剧情 接着攻克面试最容易讲糊的一片区。好消息:你 W5 用两个 psql 窗口真刀真枪复现过每一种异常。
学 · 20 min
- 重点攻克两个最容易讲糊的题:「幻读到底是什么」「PG 和 MySQL 在 RR 下的差别」
练 · 100 min
- 整理 20 题并写口述稿
- 用 D34 实测出的表格作为讲述时的证据
- 录音回放并修正
- 练习画图讲解 MVCC 的可见性判断
- 准备「你遇到过死锁吗」这类经历题的答案(用 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 分钟
- 设计点赞系统(注意热点行与计数)
- 设计订单表与状态流转(状态机怎么存)
- 设计私信/消息表(会话维度还是消息维度)
- 设计标签系统(多对多,以及按标签筛选的索引)
- 设计评论树(邻接表 / 路径枚举 / 闭包表三选一并说明理由)
过关5 题都给出了 DDL + 索引 + 3 个典型查询 + 1 个扩展性风险。
剧情 手速是练回来的。纸上、限时、闭卷--还原白板面试的压迫感。
规则
- 纸上手写,不许运行、不许查资料,60 分钟 8 题
练 · 120 min
- 60 分钟闭卷手写 8 题(从 D27 的题型里随机抽)
- 上机逐题验证,记录一次通过率
- 错题当场重写到正确为止
- 把错因归类:语法记错 / 框架用错 / 思路偏了
- 更新 mistakes.md
过关8 题一次通过 ≥ 6 题。
剧情 第二场手写专项:多表、子查询、集合运算。
规则
- 同样 60 分钟 8 题,闭卷手写
练 · 120 min
- 60 分钟闭卷手写 8 题(多表 + 子查询 + 集合运算)
- 上机验证并订正
- 把 D53 和今天的错题合并成一张「临场易错清单」
- 清单控制在一页纸内,面试前 10 分钟只看它
- 对着清单再默写一遍最容易错的 3 条
过关8 题一次通过 ≥ 6 题;易错清单成稿。
剧情 把「入职创业公司,从 0 建库到扛住大促」写成简历亮点--每个数字都经得起追问。
学 · 20 min
- 简历写法:动词 + 做了什么 + 量化结果
- 每一句都必须经得起「具体怎么做的」这一问
练 · 100 min
- 写第一条简历亮点:数据建模相关(用 D31 的 ER 图和 D30 的约束设计当素材)
- 写第二条:查询优化相关,必须带数字(从 X 秒到 Y 毫秒)
- 为每条准备 3 层追问的答案
- 练 3 分钟项目自述,录像回看
- 删掉自述里所有讲不清的词
过关两条简历亮点各能撑住三轮追问;3 分钟自述一气呵成。
剧情 最后一天。一场 45 分钟的全真模拟,一张闭卷知识地图,为这八周画上句号。
安排
- 找人做 45 分钟模拟面试;没有人就自问自答并录像
- 题目从底部 24 题自测清单里随机抽
练 · 120 min
- 45 分钟模拟面试(10 分钟自我介绍 + 20 分钟八股 + 15 分钟手写)
- 回看录像,标出卡壳的每一处
- 闭卷画一张完整的 SQL 知识地图
- 画不出来的分支就是接下来 30 天的维护重点,列成清单
- 制定后续 30 天维护计划:每天 20 分钟,只做错题重刷 + 一道新题
过关知识地图覆盖八周全部主题;维护清单已写进日历。