tech-interview-handbook 詳細教學
「不是 library,是一本書」——本教學文件帶你把這個 139k stars 的內容型 repo,當成一份可規劃、可追蹤、可整合的「個人面試準備工作系統」。
1. 專案定位
yangshun/tech-interview-handbook 是由 Blind 75 / Grind 75 / Front End Interview Handbook 作者 Yangshun Tay 維護的精選技術面試準備材料 repo。需要先釐清:
- ❌ 它不是 library、不是 CLI 工具、不是 leetcode 題庫
- ❌ 它不是 線上判題系統(題目仍需到 LeetCode / NeetCode 練)
- ✅ 它是一份 curated 內容集——告訴你「該練什麼、怎麼練、練完之後 behavioral 怎麼答、resume 怎麼寫、offer 怎麼談」
- ✅ 它是一個可離線閱讀的 markdown 倉庫(內容主體在
apps/website/contents/) - ✅ 它是一個可線上閱讀的網站(https://www.techinterviewhandbook.org)
涵蓋面(依重要度排序):
| 領域 | 在本 repo 的位置 | 與外部資源差異 |
|---|---|---|
| Algorithm cheatsheets(19 個 topic) | apps/website/contents/algorithms/*.md | 比 NeetCode 更偏「考試重點 + edge case」整理 |
| Coding interview 元方法論 | coding-interview-{prep,study-plan,cheatsheet,rubrics,techniques}.md | 比 Cracking the Coding Interview 精煉、更新更頻繁 |
| Behavioral interview | behavioral-interview-*.md | 提供 STAR 框架 + senior candidate 差異化建議 |
| System design | system-design.md | 只是入口,深度內容導向 System Design Primer |
| 求職周邊 | resume.md, negotiation.md, engineering-levels.md 等 | FAANG-style,需自行本土化 |
| 工具:Grind 75 計畫產生器 | functions/grind75/ (Cloudflare Workers) | 替代 Blind 75 的可自訂版本 |
核心訴求:「最少必要知識」——本 repo 不堆量,留時間給你練題。
2. 如何取用(非「如何安裝」)
本 repo 沒有 install 步驟,三種取用方式:
方式 A:直接線上閱讀(最快)
打開 https://www.techinterviewhandbook.org,從 Software Engineering Interview Guide 開始讀。
優點:永遠最新、有 sidebar 導覽、適合零散時段閱讀。
方式 B:clone 本地(可做筆記 / 離線)
1git clone --depth 1 https://github.com/yangshun/tech-interview-handbook.git
2cd tech-interview-handbook
3# 直接用任何 markdown editor 開 apps/website/contents/*.md
優點:可在本地修改、加自己的筆記、整合到 Obsidian / Logseq。
方式 C:fork 後客製(長期經營)
1gh repo fork yangshun/tech-interview-handbook --clone
2cd tech-interview-handbook
3pnpm install # 需要 Node 20+ 與 pnpm
4pnpm dev # 啟動本地 Vite dev server,瀏覽 http://localhost:5173
優點:可改成自己的「個人面試準備站」、加自製題目集、push 回 GitHub Pages 自己用。
注意:repo 已從 Docusaurus 遷移到 Vite+(2026-03-20 commit
155e636),編譯流程比舊版快但和先前 fork 不相容。
環境需求(僅方式 C)
- Node.js 20+
- pnpm 9+(repo 是 monorepo,用
pnpm-workspace.yaml) - 磁碟 ~150 MB(含 node_modules)
3. 架構 — 內容地圖
本 repo 真正的「程式架構」是內容架構。下圖呈現主要內容分支與閱讀路徑:
graph TD
Root["tech-interview-handbook"] --> Apps["apps/"]
Root --> Algo["algorithms/ (legacy README only)"]
Apps --> Website["apps/website/ (Vite + Docusaurus content)"]
Apps --> Portal["apps/portal/ (deprecated)"]
Website --> Contents["contents/ (核心: 全部 markdown)"]
Website --> Functions["functions/grind75/ (CF Workers)"]
Contents --> AlgoCheats["algorithms/*.md (19 topic)"]
Contents --> CodingMeta["coding-interview-*.md (流程)"]
Contents --> Behavioral["behavioral-interview-*.md"]
Contents --> Resume["resume.md, self-introduction.md"]
Contents --> Offer["negotiation*.md, choosing*.md, compensation*.md"]
Contents --> SystemDesign["system-design.md (入口)"]
AlgoCheats --> Cheatsheet["study-cheatsheet.md (總表)"]
apps/website/contents/algorithms/ 結構
19 個 topic 各自一份 cheatsheet,每份結構一致:
- Introduction
- Common terms / data structures
- Things to look out for during interviews(edge cases)
- Corner cases
- Techniques(pattern 列表)
- Recommended LeetCode practice questions
- Recommended courses
加總約 100-200 行 markdown 一個 topic,2-4 小時可讀完所有 19 個。
functions/grind75/
不是內容、是工具——Cloudflare Workers 後端,生成 Grind 75 個人化計畫。輸入「每週可用時數 + 幾週」,輸出排序好的 75 題清單。前端在 https://www.techinterviewhandbook.org/grind75/。
4. 學習路徑(取代「Helper Scripts」)
本 repo 不是執行用的,「學習路徑」才是它的 helper script:
路徑 A:4 週密集計畫(適合急迫求職者)
flowchart LR
W1["W1: study-cheatsheet + array/string/hash/linked-list"] --> W2["W2: tree/graph/heap/trie"]
W2 --> W3["W3: DP/recursion/sorting-searching + system-design 入門"]
W3 --> W4["W4: behavioral + resume + mock interview"]
每週搭配 Grind 75 的 20+ 題 LeetCode 練習。
路徑 B:1 週速攻(已準備過、要快速複習)
| Day | 主題 |
|---|---|
| Day 1 | coding-interview-cheatsheet.md + study-cheatsheet.md |
| Day 2 | 自選 3-4 個薄弱 topic 的 algorithm cheatsheet |
| Day 3 | behavioral-interview.md + behavioral-interview-questions.md,準備 5-7 個 STAR 故事 |
| Day 4 | system-design.md 入口 + 外部資源(System Design Primer 章節 1-3) |
| Day 5 | resume.md 對照、更新 LinkedIn |
| Day 6 | Mock interview(找朋友 / Pramp / Interviewing.io) |
| Day 7 | negotiation.md+understanding-compensation.md,研究目標公司 levels |
路徑 C:topic-driven(按弱點補強)
不照順序、直接點開最弱的 topic cheatsheet,搭配對應 LeetCode 題單刷 15-20 題。重點是「讀 cheatsheet → 馬上練 → 回看 cheatsheet 看自己漏了什麼 edge case」。
5. 應用場景 — 不同求職者怎麼用
| 求職者類型 | 切入點 | 重點章節 | 預估時間 |
|---|---|---|---|
| 在校生(new grad)首面 | software-engineering-interview-guide.md | + 全部 algorithm cheatsheets + behavioral 全套 + resume | 8-12 週 |
| 已工作 2-5 年要跳槽 | coding-interview-prep.md | + 弱點 algorithm cheatsheet + senior behavioral + negotiation | 4-8 週 |
| Senior(5+ 年)/ Staff | behavioral-interview-senior-candidates.md | + system-design 外部資源 + leadership behavioral + L+1 levels 研究 | 3-6 週 |
| Career switcher(非 CS 背景) | landscape.md | + 全部 algorithm cheatsheets + programming-languages-for-coding-interviews.md + resume 重寫 | 6-12 月 |
| 想轉前端(spin-off 站) | 直接到 https://frontendinterviewhandbook.com(本 repo 已 spin-off) | — | — |
| 準備當面試官 | interviewer-cheatsheet.md + coding-interview-rubrics.md + behavioral-interview-rubrics.md | 半天 |
6. 資安與內容限制
內容型 repo 沒有典型 attack surface(無使用者輸入、無 API key、無資料庫),但內容本身的限制值得評估:
| 限制 | 說明 | 緩解策略 |
|---|---|---|
| FAANG-style bias | 題目選擇、薪資、levels、流程描述都偏北美大廠(Google / Meta / Amazon),對台灣 / 亞洲 / 新創不完全適用 | 用 Glassdoor / Levels.fyi / 1on1 社群(Blind / Teamblind)補本土資料 |
| 系統設計章節薄弱 | system-design.md 主要是「外部資源連結頁」,自身不提供完整系統設計教學 | 搭配 System Design Primer、ByteByteGo、Educative 課程 |
| 內容更新頻率 | 2026 年 commit 數 < 10;演算法 cheatsheet 經典少變,但「薪資 / VoIP 平台 / engineering levels」需自行確認最新 | 對「會隨時間過時」的章節,去 Levels.fyi / Blind 確認 |
| 沒有實作題單刷題環境 | 連結到 LeetCode,但不提供整合練習平台 | 配合 NeetCode 150 / LeetCode 自家 Top Interview / AlgoMonster |
| 廣告 / affiliate link | README + 部分章節含 Design Gurus / AlgoMonster 等付費課程的 affiliate 推薦 | 廣告內容明示,可自行忽略;本身仍 MIT 開源 |
| 工程基建升級風險(方式 C) | 2026-03-20 已遷到 Vite+,舊 fork 需重做;Cloudflare Workers (Grind 75) 部署細節需自查 | 若僅讀內容,用方式 A/B 即可 |
apps/ 與 packages/ 內快速掃描(grep -E "(api_key\|secret\|password\|token)[[:space:]]*[:=][[:space:]]*['\"][a-zA-Z0-9]{20,}")未發現嵌入式憑證——MIT 內容 repo 預期狀態。
7. FAQ
Q1:跟 Cracking the Coding Interview(CTCI)比哪個好? A:互補。CTCI 提供題目 + 詳細解析;本 repo 提供「準備流程的元方法論」+ 簡潔 cheatsheet。建議 CTCI 用於刷題、本 repo 用於規劃 + 複習。
Q2:跟 Blind 75 / Grind 75 / NeetCode 150 是什麼關係? A:Blind 75 是作者本人 2020 年於 Teamblind 發的清單;Grind 75 是其進化版(更系統 + 可自訂);NeetCode 150 是第三方擴充。本 repo 內含 Grind 75 工具,並推薦其為主要刷題清單。
Q3:要不要付費課程? A:本 repo 內容已足夠「自學者」過關。付費課程(AlgoMonster / Grokking)的價值在「結構化 + 已濃縮 + 互動練習」——對「自律差 / 時間極少」者值得。
Q4:可以離線讀嗎?
A:可以——clone 後 apps/website/contents/*.md 即可。或用 markitdown / docling 把網站匯出成 PDF。
Q5:Front End 內容在哪? A:已 spin-off 到 https://github.com/yangshun/front-end-interview-handbook 與 https://frontendinterviewhandbook.com。本 repo 仍有歷史前端章節但不再更新。
Q6:System Design 章節為什麼這麼薄? A:作者明示系統設計需要的「圖 + 案例」格式不適合 markdown cheatsheet,所以僅作為入口頁。建議去 System Design Primer + Designing Data-Intensive Applications + ByteByteGo。
8. 進階用法
8.1 自製 flashcards(搭配 Anki / Mochi)
每個 algorithm cheatsheet 的「Techniques」+「Corner cases」section 適合做卡片:
1卡片正面:Tree topic — corner cases 有哪些?
2卡片背面:Empty tree / single node / unbalanced (linked list) / duplicate values / large depth (stack overflow)
可寫 Python 小 script 用 markdown-it parser 抽 H2 段落自動生 csv → 匯入 Anki。
8.2 Interview tracker
用 Notion / Airtable / Obsidian Dataview 建追蹤表:
| 公司 | 階段 | 日期 | 用到本 repo 哪段 | 結果 | 下次補強 |
|---|---|---|---|---|---|
| … | OA | … | array.md, graph.md | … | DP cheatsheet 沒讀 |
8.3 與 spaced repetition 結合
把 19 個 algorithm cheatsheet 排成 SR 卡組,每 1 / 3 / 7 / 21 / 60 天複習一次。本 repo 內容已是「最少必要知識」格式,極適合 SR。
8.4 翻譯 / 在地化(注意 license)
MIT license 允許修改、商用、再分發(保留 copyright),可做台灣 / 亞洲版分支,但建議:
- 保留 upstream attribution
- 標明哪些段落已本土化(薪資、流程、levels)
- 不要直接把作者推薦的 affiliate link 換成自己的——這違反 README 的精神
8.5 結合 LLM 工具做模擬面試
把 cheatsheet 灌進 RAG(本專案的 paper-qa-lite 即可,雖然名字是 paper,markdown 資料夾通用):
1# 假設已 clone 到 /tmp/tih
2bash scripts/paperqa-lite.sh build --src /tmp/tih-clone/tech-interview-handbook/apps/website/contents
3bash scripts/paperqa-lite.sh ask "interviewer 問我 'tree 題目常見 edge case 有哪些',怎麼回答"
9. 與本專案(AI-knowledge_template)的整合
本 repo 在本專案內的位置:
| 本專案 layer | 與本 repo 關係 |
|---|---|
ai-gh-save | 本 layer 已將此 repo 存為 inbox/2026-05-22-github-yangshun-tech-interview-handbook.md(即上一份產物) |
gh-tutorial-qd | 即本教學產生的 layer,產出本 md + 4 個 HTML |
paper-tutorial | 不適用——本 repo 不是 paper |
paper-qa-lite | 可選用法——可把 apps/website/contents/ 當 RAG 來源做問答(見 §8.5) |
docling | 不需要——已是 markdown,不必再轉檔 |
graphify | 不適用——內容型 repo,沒有程式 symbol 圖可建 |
kami | 可用——若想生成自己的 resume,本 repo 的 resume.md 是好範本,丟給 kami: resume 當參考 |
quarkdown | 本教學的 HTML 渲染即由此 layer 完成 |
定位:reference repo,不是執行工具。和本專案其他 layer 不會自動串接;但可作為「面試準備」類 prompt 的權威 reference。
10. 重點摘要
- 內容型 repo:MIT 開源、139k stars 中絕大多數是「讀者」而非「開發者」
- 作者來源權威:Yangshun Tay(Blind 75 / Front End Interview Handbook)
- 核心訴求:最少必要知識,留時間給你練題
- 真正主體:
apps/website/contents/下的 markdown(網站殼是 Docusaurus → Vite) - 取用三方式:線上讀(推薦)/ clone 本地 / fork 客製
- 三種學習路徑:4 週密集 / 1 週速攻 / topic-driven
- 限制:FAANG-style bias、system design 章節薄弱、薪資 / levels 章節需自行對齊最新
- 與其他資源關係:補 Cracking the Coding Interview 的「準備流程」缺口;題目本身去 LeetCode;System Design 去 System Design Primer
- 資安:內容型 repo,無典型 attack surface,未發現嵌入式憑證
- 進階整合:可做 flashcards、interview tracker、SR 卡組、本地 RAG 問答(搭配本專案
paper-qa-lite)
11. 進一步閱讀
- Tech Interview Handbook 線上版
- Grind 75 計畫產生器
- Front End Interview Handbook(spin-off)
- Blind 75 原帖
- System Design Primer
- Designing Data-Intensive Applications(Martin Kleppmann)
- LeetCode / NeetCode 150
- Levels.fyi(薪資 / levels 對齊)
- Pramp / Interviewing.io(mock interview)
- 本專案
.claude/skills/gh-tutorial-qd/SKILL.md(本教學產生流程)
Comments