今日固定时间表
08:30 wake 只保留起床;学习从 08:50 开始。三块窗口不互相挤占。
| 08:30 wake | 起床、早餐、准备白板;不安排预读或算法。 |
|---|---|
| 08:50—09:10 | 08:50—10:55 system design 闭卷收敛 — 只写 FR/NFR/out-of-scope 和三条 API,拒绝先画组件。 |
| 09:10—09:45 | 08:50—10:55 system design 精确原文 — 读 News Feed requirements/entity/API/HLD 到四个 HLD 子路径。 |
| 09:45—10:25 | 08:50—10:55 system design 白板主路径 — 画 create post → durable post → fan-out event → feed read;补 cursor pagination。 |
| 10:25—10:55 | 08:50—10:55 system design DDIA 决策卡 — 把 read-your-writes 与 monotonic reads 绑定到作者刷新和分页 session。 |
| 14:30—16:15 | NeetCode Tag · Stack 三道题在下方独立算法表执行,避免系统设计表格挤压算法细节。 |
| 20:30—21:15 | 20:30—21:15 口述 News Feed 0—15 分钟:需求、API、数据模型、HLD;录音后写一个 staleness repair sentence。 |
算法模块
连续单一 NeetCode Stack tag;每天 3 题,14:30—16:15 完成。
| # | Problem | Invariant focus | 执行 |
|---|---|---|---|
| 1 | Valid Parentheses | 栈语义:每一步维护 unmatched opener 集合。 | 35 分钟限时 + 5 分钟 invariant/bug risk |
| 2 | Min Stack | 双栈/压缩最小值:查询不扫描历史。 | 35 分钟限时 + 5 分钟 invariant/bug risk |
| 3 | Evaluate Reverse Polish Notation | 表达式归约:操作数顺序是 bug 高发点。 | 35 分钟限时 + 5 分钟 invariant/bug risk |
闭卷起手
先暴露自己的当前模型,再用 live headings 修正。
20 分钟闭卷画:createPost、follow、getFeed(cursor);写出 Post store、Follow graph、Feed table 各自谁拥有事实。
Hello Interview 精确目录
day 页面必须链接到具体 section anchors;周级 overview 不放小节链接。
| 项目 | 精确 section anchor | Disposition | 今天怎么用 |
|---|---|---|---|
| FB News Feed | Understanding the Problem | required reading | clarify product surface and feed semantics |
| FB News Feed | Functional Requirements | required reading | post, follow/friend, view feed, page feed |
| FB News Feed | Non-Functional Requirements | required reading | availability, bounded staleness, latency and large social graph |
| FB News Feed | The Set Up | required reading | candidate framing before entities |
| FB News Feed | Planning the Approach | required reading | requirements → entities → API → HLD sequencing |
| FB News Feed | Defining the Core Entities | required reading | User, Post, Follow, FeedItem |
| FB News Feed | API or System Interface | required reading | create post, follow/unfollow, get feed cursor |
| FB News Feed | High-Level Design | required reading | read path and write path before deep dives |
| FB News Feed | 1. Users should be able to create posts. | required reading | write source-of-record post and emit fan-out event |
| FB News Feed | 2. Users should be able to friend/follow people. | required reading | follow graph mutation and query access |
| FB News Feed | 3. Users should be able to view a feed of posts from people they follow. | required reading | feed read API and derived timeline |
| FB News Feed | 4. Users should be able to page through their feed. | required reading | cursor semantics and stable ordering |
DDIA 精确决策卡
只读能改变今天设计决定的小节。
| 项目问题 | 精确 DDIA subsection | 改变的系统决定 |
|---|---|---|
| News Feed 写入成功后,作者自己刷新 feed 为什么不能丢自己的新帖? | Ch6 · 读己之写 | 作者视角可走 read-your-writes path:新帖由 Post store 确认后直接合并进作者 feed,不能只等异步 fan-out。 |
| 分页时读副本落后会造成什么体验问题? | Ch6 · 单调读 | 同一 feed session 绑定 cursor/version,避免第 2 页看见比第 1 页更旧的世界。 |
今日产出与修复规则
| 课程角色 | CORE · requirements/API/data model/HLD |
|---|---|
| 必须交付 | 一页 News Feed HLD:Post/Follow 权威状态、FeedItem 派生状态、cursor 语义、作者读己之写路径。 |
| 修复规则 | 如果 feed table 被描述成 source of truth,重画从 Post+Follow 重建 feed 的 replay path。 |
Detailed lecture notes, audio, recall scripts, PDFs, Staff Q&A, and mock packs are archived locally and are intentionally not published on this site.