📌 项目地址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 小时的节奏参考。这不是突击材料,是系统学习计划。

我的两周感受

之前刷题靠背模板,遇到变形题就卡住。按这个计划补完树和图之后,很多题自己能推导出解法。它不教你偷懒,但能让你走得稳。

仓库里没有捷径。只有一条被踩平的路,和路上留下的坑。

这篇文章对你有帮助吗?

发表回复