行动是成功的阶梯,每一步都踏实了就能登上巅峰。——乔治·林肯·洛根

Tech Interview Handbook:为忙碌工程师“少走弯路”的面试宝典

仓库:yangshun/tech-interview-handbook
网站:https://www.techinterviewhandbook.org
描述:Curated coding interview preparation materials for busy software engineers
许可证:MIT
话题标签:coding-interviews interview-preparation algorithm behavioral-interviews system-design

如果你正在准备技术面试,却没法每天刷上几百道题,Tech Interview Handbook(简称 TIH)就是那本“帮你直达重点”的指南。它由知名开发者 Yangshun 发起,围绕技术面试的全流程(简历→刷题→行为面→谈薪)做了系统、精炼、可执行的整理。重点是:免费、结构清晰、可在官网以更好的阅读体验学习。

本文带你快速认识 TIH 的核心价值、关键模块、搭配方法,并给出与之呼应的常见面试代码范式,帮助你更高效地“练对东西”。


这本 Handbook 到底解决什么问题?

来自 README 的核心定位很直接:不是人人都有大量时间盲目刷题。TIH 提供的是“精选 + 直达要点”的资源索引与实践指引。除了常规的算法题,它还覆盖了很多常被忽略但同样重要的环节:

  • Coding interview 学习规划与最佳实践
  • Grind 75(Blind 75 的强化版)高效刷题集合
  • 算法速查与按专题的小抄(Cheatsheets)
  • FAANG 风格简历撰写分步指南
  • 顶级公司的行为面试题与作答思路
  • 前端面试内容已拆分至独立站点(Front End Interview Handbook)

更重要的是,TIH 的内容“够密度、够实操”,相信过来人看了会心一笑:这就是我们想要的“别废话、给重点”。


推荐直达入口(来自 README 的官方导航)

此外,TIH 也在 README 中提到了一些靠谱的外部课程资源(如 AlgoMonster、Grokking the Coding Interview)可作补充。


为什么值得读它?

  • 高密度信息:去水整理,避免你“啃厚书”和“无计划刷题”的时间损耗。
  • 全流程覆盖:从投递简历到谈薪,每个环节都有“抓要点”的内容。
  • 更贴近面试场景:不仅是算法,还强调行为面(Behavioral)与简历表达。
  • 站点阅读友好:内容迁移到了 Docusaurus 网站,视觉和结构更舒服。

一句话:如果你正在赶进度,TIH 是条通往“正确方向”的快速车道。


你能怎么用它?一份“结合 TIH 的高效路线图”

  1. 确定目标公司与时间窗口
  1. 专题刷 + 模式化记忆
  • 参照 Algorithms Cheatsheet 按题型(Two Pointers、Binary Search、BFS/DFS、Heap、DP 等)归纳模板
  • 每个专题“1–2 个模板 + 3–5 道代表题”就够,不求广但求“模式化”
  1. 实战化准备
  • 严格限时模拟(白板/Pad 打字,避免IDE过度提示)
  • 每题写完“复盘卡片”:错因 + 模式 + 复杂度 + 可替代解法一条
  1. 算法之外的提升
  • 简历对齐 Resume Guide,突出“影响力与数据度量”
  • 行为面试从 Behavioral Questions 中挑高频题,使用 STAR 法则写出“短打版本”

与 TIH 相呼应的常见面试代码范式

下面给出三类高频“模板代码”。它们不是 TIH 的源码,只是为了帮助你与 TIH 的题型策略形成呼应记忆:先记“模式”,再拿 Grind 75 实战。

1) 二分搜索(Binary Search)模板

适用:有序数组定位、最左/最右满足条件、单调性判定(可扩展到答案空间二分)

1
2
3
4
5
6
7
8
9
function lowerBound(nums: number[], target: number): number {
let l = 0, r = nums.length; // [l, r)
while (l < r) {
const mid = l + ((r - l) >> 1);
if (nums[mid] < target) l = mid + 1;
else r = mid;
}
return l; // 第一个 >= target 的位置
}

思路要点:

  • 区间开闭性固定下来(如 [l, r)),避免边界混乱
  • 变体:上界、右侧边界、答案空间二分(可用于“最小可行值”类题)

2) 双指针(Two Pointers)在有序数组上的应用

适用:两数之和(排序后)、去重、滑窗收缩

1
2
3
4
5
6
7
8
9
10
function twoSumSorted(nums: number[], target: number): number[] {
let i = 0, j = nums.length - 1;
while (i < j) {
const s = nums[i] + nums[j];
if (s === target) return [i, j];
if (s < target) i++;
else j--;
}
return [-1, -1];
}

思路要点:

  • 有序性决定移动方向
  • 面试中要能自然切换到“滑动窗口”模式(当所有数为非负时可用求和窗口)

3) BFS 层序(最短步数/最少次数问题常用)

适用:图的最短路径、棋盘/网格最少步、树的层序

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
function bfsMinSteps(start: number, target: number): number {
const q: number[] = [start];
const seen = new Set<number>([start]);
let steps = 0;

while (q.length) {
const size = q.length;
for (let k = 0; k < size; k++) {
const cur = q.shift()!;
if (cur === target) return steps;
for (const nxt of nextStates(cur)) {
if (!seen.has(nxt)) {
seen.add(nxt);
q.push(nxt);
}
}
}
steps++;
}
return -1;
}
function nextStates(x: number): number[] {
// 这里按题定义生成邻接状态
return [x - 1, x + 1]; // 示例
}

思路要点:

  • “按层推进 = 步数/轮数”天然计数
  • 需要判重(seen)避免无限回环
  • 与双向 BFS/状态压缩是常见升级

这些范式与 TIH 的“按专题学习 + 练模式”非常契合:先把模板背熟,再到 Grind 75 里找对应题型刷透。


行为面与简历同样关键(来自 TIH 的非算法优势)

  • 行为面(Behavioral)是许多候选人忽视的环节。TIH 提供了顶级公司常问清单与作答策略,你可以用 STAR 模型准备“短版 + 长版”回答,配合“影响指标量化”(Impact Metric)突出个人贡献。
  • 简历则建议以“结果导向”的动宾结构描述项目:做了什么(Action)→ 产生了什么影响(Impact,最好量化)。TIH 的 Resume Guide 很系统,建议逐条对照优化。

System Design 怎么办?

TIH 在 README 里说明系统设计内容还在完善中;在此期间官方推荐了 ByteByteGo、Grokking System Design 等课程作为过渡。建议你:

  • 构建“可视化答题框架”(高可用、高扩展、高一致性、存储/缓存/队列/索引/监控)
  • 学会“需求澄清 → 粗粒度方案 → 组件拆解 → 瓶颈与权衡 → 演进路线”的表达节奏

适合哪些人?

  • 初入技术面试的新同学
  • 有经验但“多年没面”的工程师
  • 时间有限、需要高效抓重点的人
  • 想从“只会刷题”转向“全流程面试能力”的候选人

小结:Stop Grinding Mindlessly,带着“模式与计划”走

Tech Interview Handbook 的价值是“为你省时间”:

  • 给你高质量的学习清单(Grind 75)
  • 给你紧贴面试现场的注意事项(Cheatsheets)
  • 给你“被忽视但高权重”的行为面与简历指导
  • 通过网站提供更好的阅读体验与结构化入口

建议现在就去官网把几个关键页面加入书签,从今天开始按“专题 + 模式 + 复盘”的思路推进,少踩弯路,练到真正能打的程度。

最后,再贴一次直达链接(全部来自 README):

愿你少刷无效题,多拿真 Offer。祝好!