Interview Prep · Cloudflare-ready study site

第 1 周逐日执行版

如果你今天只想打开一个页面开始学习,这一页最合适。

6-Week Plan
完整 6 周复习主计划与内嵌资料

适合作为总入口,从这里了解整体节奏、知识框架与每周重点。

Week 1 Guide
第 1 周逐日执行版

如果你今天只想打开一个页面开始学习,这一页最合适。

Overview
项目说明与使用方式

快速解释这个学习网站里有什么,以及建议怎么使用。

面试复习计划:第 1 周完全展开版

适用方式:

  • 配合主文件《面试复习计划(6周,偏 System Design)》一起用
  • 这一份专门负责“第 1 周每天到底怎么学”
  • 你每天只要打开这一个文件,按当天清单走即可

第 1 周总目标:

  1. 重建 system design 面试答题框架
  2. 把基础件的名字和作用重新连起来
  3. 能完整讲出 2 道最基础高频题:URL Shortener 和 Rate Limiter
  4. 开始形成“会讲、会复盘、会补洞”的节奏

本周总原则:

  • 不求讲得高级,先求讲得完整
  • 不求把所有知识点都啃完,先求每次都能输出
  • 每天 30 分钟版本做完就算完成
  • 每次结束一定留 2–5 分钟写复盘

第 1 周每天固定动作

每天都尽量做这 4 步:

  1. 热启动(3–5 分钟)
  • 回顾昨天记下的 1–2 个卡点
  • 用一句话说出今天最重要的任务
  1. 主学习(15–35 分钟)
  • 看今天指定资料
  • 只看和今天任务相关的部分
  1. 输出(8–15 分钟)
  • 口述、手写提纲、简短复盘,至少做一种
  1. 收尾(2–5 分钟)
  • 记录:我今天最卡的点是什么
  • 记录:明天开始前我要先回顾什么

你本周会反复用到的速查卡

速查卡 1:System Design 开场骨架

你可以先按这个模板说:

“我先快速确认一下需求和边界,再给一个 high-level design。然后我会展开核心数据模型、主要读写链路,再讨论瓶颈、扩展性、可靠性和 trade-off。如果有时间,我最后补一下监控、容灾和后续演进。”

速查卡 2:本周基础件一句话

  • Replication:提升可用性和读扩展,但会带来复制延迟和一致性问题
  • Sharding:解决容量和写扩展问题,但会带来热点、迁移和跨分片复杂度
  • Cache:降低延迟、扛热点,但难点在一致性和失效保护
  • Queue:异步化、解耦、削峰,但会带来幂等、重试、消息重复等问题
  • Rate Limiter:保护系统、防滥用、做配额控制
  • Load Balancer:让多实例服务可以稳定接流量
  • CDN:加速静态资源分发,降低源站压力

速查卡 3:复盘时必问自己

  1. 我有没有先澄清需求?
  2. 我有没有先给高层设计?
  3. 我是不是太早钻进细节?
  4. 我有没有主动讲瓶颈和扩展?
  5. 我有没有讲出至少一个 trade-off?

周一:重建 system design 答题框架

今日唯一目标:

  • 不看资料,也能说出一套完整的 system design 答题顺序

今天要看的资料:

  • 主文件中的:
    • System Design 标准答题框架
    • 附录 B:面试开场模板
    • 附录 B:澄清需求时常问的问题
    • 附录 B:常用高层组件及一句话用途

30 分钟版

  1. 5 分钟:读一遍答题框架
  2. 10 分钟:自己手写 7 步答题顺序
  3. 10 分钟:用自己的话解释每一步是在干什么
  4. 5 分钟:写复盘

45–60 分钟版

  1. 5 分钟:回顾今天目标
  2. 15 分钟:读答题框架 + 附录 B
  3. 15 分钟:写一个你自己的开场白版本
  4. 10 分钟:假装面试,口述 1 次开场
  5. 5–10 分钟:记录不顺的地方

今天必须产出的东西

至少产出这两项:

  1. 你自己的中文开场白版本
  2. 你自己的 7 步答题框架缩略版

你可以直接照着下面这个模板写:

  • 第一步:澄清需求
  • 第二步:确认规模和优先级
  • 第三步:先给高层设计
  • 第四步:展开数据模型和主要链路
  • 第五步:找瓶颈和扩展点
  • 第六步:讲可靠性和失败场景
  • 第七步:讲 trade-off 和演进

今天的复盘问题

  • 我最容易忘的是哪一步?
  • 我一开口会不会太散?
  • 我能不能在 90 秒里把答题结构先立住?

周二:Cache + 一道 LeetCode 保底题

今日唯一目标:

  • 能用通俗的话解释 cache 为什么需要、会出什么问题、怎么补救

今天要看的资料:

  • 主文件附录 C:Cache
  • 主文件附录 E:Array / String、HashMap / Set、Two Pointers、Binary Search(按你选题需要看)

今日 LeetCode 要求

只做 1 题,难度简单或中等即可。 可选方向:

  • Array
  • HashMap
  • Two Pointers
  • Binary Search

不要追求多,重点是:

  • 做完
  • 复盘
  • 维持手感

30 分钟版

  1. 5 分钟:回顾昨天的答题框架
  2. 10 分钟:看 Cache 速记资料
  3. 10 分钟:口述“cache 为什么需要,有哪些坑”
  4. 5 分钟:记录今天的 1 个卡点

如果你今天想把 30 分钟都给 LeetCode,也可以这样分配:

  • 15 分钟:LeetCode 1 题
  • 10 分钟:Cache 口述
  • 5 分钟:复盘

45–60 分钟版

  1. 10 分钟:读 Cache 资料
  2. 20–25 分钟:做 1 道 LeetCode
  3. 10 分钟:口述 cache aside、热点 key、失效一致性
  4. 5–10 分钟:写简短复盘

今天口述时至少要提到

  • cache 的目标:降低延迟、减轻 DB 压力、扛热点
  • cache aside 是什么
  • cache miss 是什么
  • 热点 key 失效会有什么问题
  • DB 和 cache 为什么会不一致
  • 至少 1 个常见解法:TTL 抖动 / single flight / 布隆过滤器 / 热 key 保护

今天的复盘问题

  • 我能不能不用术语也把 cache 讲清楚?
  • 我是不是只会说“加 Redis 就好了”?
  • 我有没有讲到一致性和热点保护?

周三:完整练 URL Shortener

今日唯一目标:

  • 第一次完整讲一遍系统设计题,不追求完美,只追求完整

今天要看的资料:

  • 主文件附录 D:URL Shortener
  • 主文件附录 B:答题框架
  • 主文件附录 C:Cache(如果你昨天讲得不顺)

讲题时建议顺序

  1. 先澄清:
  • 是否支持自定义 alias
  • 是否需要过期时间
  • 是否需要点击统计
  • 规模大概多大
  1. 再给高层设计:
  • 用户请求创建短链接
  • 服务生成短码
  • 落库
  • 用户访问短链时先查 cache,再查 DB,再 redirect
  1. 再展开关键点:
  • short code 如何生成
  • 如何避免冲突
  • 为什么读路径适合上 cache
  • 热点短链怎么处理
  1. 最后补 trade-off:
  • 自增 ID + Base62 vs 随机短码
  • 可预测性 vs 实现简单度

30 分钟版

  1. 5 分钟:看 URL Shortener 最小资料
  2. 15 分钟:自己完整讲 1 遍
  3. 5 分钟:对照复盘模板打分
  4. 5 分钟:写下最卡的 2 个点

45–60 分钟版

  1. 10 分钟:重读最小资料
  2. 20 分钟:完整讲 1 遍
  3. 10 分钟:补充没讲到的点
  4. 10 分钟:再讲一遍精简版
  5. 5–10 分钟:写复盘

今天最容易犯的错

  • 一上来就钻进 Base62 或 hash 算法细节
  • 没先讲读写路径
  • 没提 cache
  • 没提热点 URL
  • 没讲 trade-off

今天复盘时最好写下

  • 我开场是否稳
  • 我在哪一步开始乱
  • 我最不会展开的是:ID 生成 / cache / 扩展 / 统计

周四:Replication vs Sharding + 一道 LeetCode 保底题

今日唯一目标:

  • 真正把 replication 和 sharding 区分开

今天要看的资料:

  • 主文件附录 C:Replication
  • 主文件附录 C:Sharding / Partitioning
  • 主文件附录 E:保底题型(按你今天选题)

你今天必须讲清楚的核心区别

Replication:

  • 核心是高可用、读扩展
  • 不是为了把数据水平拆开

Sharding:

  • 核心是容量扩展、写扩展
  • 不是为了做主从备份

30 分钟版

  1. 5 分钟:回顾昨天 URL Shortener 最卡点
  2. 10 分钟:读 replication / sharding 速记
  3. 10 分钟:口述两者差别
  4. 5 分钟:写 3 句话总结

45–60 分钟版

  1. 10 分钟:读资料
  2. 20–25 分钟:LeetCode 1 题
  3. 10 分钟:口述两者区别和典型副作用
  4. 5–10 分钟:写复盘

你今天至少要说出来的内容

Replication 的代价:

  • replica lag
  • stale reads
  • failover 复杂度

Sharding 的代价:

  • 热点分片
  • 跨分片查询
  • 跨分片事务
  • 数据迁移

今天的复盘问题

  • 如果面试官问“为什么不直接分库分表”,我会不会答偏?
  • 我能不能讲出 replication 和 sharding 解决的是两类不同问题?
  • 我有没有把“代价”讲出来?

周五:完整练 Rate Limiter

今日唯一目标:

  • 能讲出至少两种限流算法,并说出为什么会选某一种

今天要看的资料:

  • 主文件附录 C:Rate Limiter
  • 主文件附录 D:Rate Limiter
  • 主文件附录 B:答题框架

讲题时建议顺序

  1. 先澄清:
  • 以什么维度限流:IP / user / token / tenant
  • 限流粒度:秒 / 分钟 / 天
  • 是否需要允许 burst
  • 是否是单机还是分布式
  1. 再给高层设计:
  • 在 gateway / middleware 层拦截
  • 用 Redis 或本地内存保存计数
  • 依据算法判断是否放行
  1. 再展开算法:
  • Fixed Window
  • Sliding Window Counter
  • Token Bucket
  • Leaky Bucket(知道即可)
  1. 最后讲 trade-off:
  • 简单 vs 精确
  • 内存成本 vs 算法效果
  • 本地状态 vs 分布式共享状态

30 分钟版

  1. 5 分钟:看最小资料
  2. 15 分钟:完整讲一遍题
  3. 5 分钟:补一句“分布式怎么做”
  4. 5 分钟:写复盘

45–60 分钟版

  1. 10 分钟:读资料
  2. 20 分钟:完整讲一遍
  3. 10 分钟:刻意补算法 trade-off
  4. 10 分钟:再讲一遍精简版
  5. 5–10 分钟:写复盘

今天至少要讲到

  • 为什么要限流
  • 放在哪一层做
  • key 维度怎么选
  • 分布式状态怎么共享
  • 为什么 token bucket 常用
  • Redis 可能成为新瓶颈怎么办

今天最容易犯的错

  • 只背算法名字,不讲适用场景
  • 不讲 burst
  • 不讲分布式
  • 忘了 key 设计

周六:本周深度复盘 + 重讲一题

今日唯一目标:

  • 把“看过了”变成“我真的能讲”

今天要看的资料:

  • 本周你自己的所有复盘
  • 主文件中的每道题复盘模板
  • 主文件附录 B:答题框架

今天推荐做法

先做表格复盘,给自己打分(1–5 分):

  • 澄清需求
  • 高层设计
  • 数据模型/链路
  • 瓶颈和扩展
  • reliability / failure modes
  • trade-off
  • 表达清晰度

然后从这两题里选 1 题重讲:

  • URL Shortener
  • Rate Limiter

30 分钟版

  1. 10 分钟:回看本周复盘
  2. 15 分钟:重讲 1 道题
  3. 5 分钟:写出下周最该补的 2 个点

45–60 分钟版

  1. 10 分钟:整理本周问题清单
  2. 20 分钟:重讲 1 道题
  3. 10 分钟:针对最弱环节再补一句解释
  4. 10 分钟:写一版“下周提醒自己别再犯的错误”

今天复盘重点

  • 我最常漏掉的环节是什么
  • 我最容易一紧张就钻进哪里
  • 我到底是不会,还是只是讲不顺

周日:轻总结 + 为第 2 周铺路

今日唯一目标:

  • 不开新坑,只总结,并让下周开始更轻松

今天要看的资料:

  • 本周自己的复盘
  • 主文件第 2 周的目标部分
  • 主文件附录 C 里的 SQL vs NoSQL、Message Queue、Observability 标题先扫一眼

30 分钟版

  1. 10 分钟:回顾本周笔记
  2. 10 分钟:写本周总结
  3. 10 分钟:把下周最该补的 2–3 个点列出来

45–60 分钟版

  1. 15 分钟:完整复盘本周
  2. 15 分钟:预览第 2 周主题
  3. 10 分钟:写出你真实项目里和 cache / queue / metrics 相关的案例标题
  4. 5–10 分钟:收尾整理

周日总结建议直接写成这 5 句

  1. 本周我讲过的题:
  2. 本周我最卡的基础件:
  3. 本周我最容易漏掉的步骤:
  4. 下周我最该补的一个点:
  5. 下周我最想练的一道题:

第 1 周结束时,你应该达到的状态

最低标准:

  • 你能说出 system design 的答题框架
  • 你能区分 replication 和 sharding
  • 你能解释 cache 的作用和常见问题
  • 你能完整讲一遍 URL Shortener
  • 你能完整讲一遍 Rate Limiter

理想标准:

  • 你讲题时已经不太会乱掉顺序
  • 你开始会主动补 trade-off
  • 你复盘时能准确识别自己是在“知识不熟”还是“表达不顺”

如果某天完全没状态,就做这个“保命版”

只做 15 分钟也可以:

  1. 看 3 分钟今天对应资料
  2. 讲 7 分钟
  3. 写 5 分钟复盘

只要你没有完全断掉,就还在节奏里。


你可以直接复制使用的每日复盘模板

日期: 今天主题: 我今天完成了什么: 我最卡的点: 我最想下次讲得更好的地方: 明天开始前先回顾什么:


你可以直接复制使用的每周复盘模板

本周我完整讲了哪几道题: 本周我最不熟的基础件: 本周我最容易漏掉的环节: 本周我的表达问题更像是:太散 / 太快 / 太虚 / 太细 下周最该补的一个知识点: 下周最想重讲的一道题: