📌 项目地址:jwasham/coding-interview-university | ⭐ 349,457 颗星 | 📜 未标注
它不只是一份资源列表
打开 jwasham/coding-interview-university 的 README,第一眼是几百行链接。很多人直接关掉,觉得这是又一个“收藏夹”。但真正看完的人会明白:作者 John Washam 花了 8 个月全职备考,每天 8-12 小时,最后拿到 Amazon 的 offer。他在开头特意写了一段话:“我浪费了大量时间在不需要知道的东西上。” 这句话就是 34.9 万星的根本原因——不是资源够多,而是作者把哪些可以跳过、哪些必须理解,清清楚楚标了出来。
核心价值是“跳过”的标注
READEME 里多次出现“你大概不需要实现”“了解概念即可”的表述。我摘几个具体的:
- 红黑树:作者自己花了几星期啃代码,面试一次没问。计划只要求理解平衡树概念(旋转、着色),明确标注跳过实现细节。
- B 树:知道它用于数据库索引、磁盘 I/O 就够了。原文标注“你大概不需要实现 B 树”。
- 排序算法:快速排序、归并排序理解原理和时间复杂度即可。作者说“不要花费时间背诵所有排序的代码”。
每个知识点只推荐 1-2 个资源。比如二叉搜索树只给了 CS50 视频和 Wikipedia。作者试过同时跟四五门课,进度混乱,最后发现盯着一两个资源效率最高。
学习顺序是按依赖关系排的,不能跳
READEME 里的顺序严格按数据结构的前置依赖排列。每个子章节标了预期时间。作者多次强调“不要跳着看”。
大致节奏(来自“每天计划”部分):
- 数组 → 链表 → 栈 → 队列 → 哈希表(约 2 周)
- 树、图、排序(1-2 周)
- 递归、动态规划、系统设计(2-3 周)
- 操作系统和网络穿插在后面
我按这个顺序学了一段时间。之前跳着看递归,卡在树遍历上。后来按顺序走,每一章复用前面学过的结构,反而更快。根本原因是数据结构之间有前置依赖:不理解链表,搞不清散列冲突;不会树,图论遍历难以下手。
适合谁,不适合谁
适合的人:
- 科班毕业但基础课忘得差不多的人
- 已经会一门编程语言(能写循环、条件、函数)的人
- 愿意投入几个月到一年系统学习的人
不适合的人:
- 零编程基础。计划不会教你“Hello World”,它假设你已经能用至少一种语言写基本程序。
- 只想面试前突击的人。这个计划是按系统学习设计的,不是刷题手册。
我见过零基础照着学,第一周卡在二维数组,后来放弃了。这确实不是入门教程。
怎么用才不浪费自己的时间
先通读 README 全文。几万字,别跳。作者在开头就建议先了解全貌,标记哪些已经掌握,哪些需要重点啃。我第一次读花了 40 分钟,读完发现原来深度优先搜索的实现细节不需要死记,只需要理解递归和栈的关系。
按顺序推进,跳过已掌握的部分。每章只看推荐视频和文章(通常 1-2 个),看完花时间消化。跟着标的时间走,如果 2 周搞不定哈希表,说明基础不够,回头补。不要贪多——作者自己说曾同时看 5 门课,结果进度混乱,最后只留了 1-2 个资源。
学完一章后立刻做题。READEME 没指定平台,你自己选 LeetCode 或 HackerRank。重点不是刷数量,是检验理解。作者说他踩过的坑:学完不练,过两周全忘。我试了下,学完队列和栈后去做括号匹配的题,之前靠背模板写的代码,现在能分析出为什么用栈而不是队列。
如果你有工作,把作者全职 8 个月的时间折算成晚上加周末,大概需要 12-18 个月。READEME 里包含了每天 3-4 小时的节奏参考。这不是突击材料,是系统学习计划。
我的两周感受
之前刷题靠背模板,遇到变形题就卡住。按这个计划补完树和图之后,很多题自己能推导出解法。它不教你偷懒,但能让你走得稳。
仓库里没有捷径。只有一条被踩平的路,和路上留下的坑。