2016 年,John Washam 做了一个决定。他辞掉工作,每天花 8 到 12 个小时自学计算机科学,目标只有一个:进 Google。
John 没有 CS 学位。他的编程启蒙来自大学一门 C++ 选修课。当他开始准备面试的时候,面临的现实很残酷。他不知道 Big-O 是什么,分不清 stack 和 heap,二叉树对他来说是数学课本里才有的东西。他后来在接受采访时说,自己”连图的数据结构都没接触过”。
他全职学了 8 个月,每天用 Anki 闪卡复习,把核心数据结构手写了一遍又一遍。最终 Google 没要他。但 Amazon 要了。他拿到了 SDE 的 Offer。
这 8 个月的副产品,就是你现在看到的这个 GitHub 仓库:coding-interview-university。截至 2026 年 6 月,347.8k Stars,8.3 万 Fork,16 种语言的完整翻译。但这里面没有一行可执行代码。它是一份用 Markdown 写的计算机科学自学路线图,本质上是一个任务清单。一个被 34 万人标星的任务清单。
但一个任务清单凭什么值 34 万 Star?翻完你就会发现答案不在列表的长度里。
它到底在教什么
打开这份学习计划,第一反应是眩晕。内容太多了。从 Big-O 分析到 NP 完全性,从数组到 B 树,从进程线程到 CPU 缓存结构,从排序算法到图论的最短路径。作者的目标是把大学 CS 课程约 75% 的核心内容塞进一份自学的脚手架里。
但真正让它区别于 LeetCode 路线图的东西,不是广度,是深度。这份计划要求你手写每一个核心数据结构的实现。不是学会调用 dict.get() 就算完,而是从哈希函数设计、碰撞解决(链表法和开放寻址)、扩容触发条件,一路写到 LRU 淘汰策略。作者的观点很直白:当你能手写一个 Hash Table,面试官追问时间复杂度的时候你才不会只会背答案。

数据结构只是前半部分。计划后半段把面试中真正区分候选人水平的东西系统地摊开。动态规划跟着 MIT 的 Erik Demaine 视频学,图算法从 BFS/DFS 一路推到 Dijkstra 和最小生成树,操作系统基础覆盖进程线程锁和死锁的 Coffman 四条件。还有一个容易被忽略的亮点:系统设计章节。对社招选手来说,这部分可能比算法章节的含金量更高。
作者在排序部分给了一条反直觉的建议:不要学冒泡排序,除非 n 小于等于 16。不是冒泡排序没用,而是在面试中几乎不会出现。花同样的时间学归并排序,你能同时掌握分治思想和稳定排序的实现技巧。这个取舍逻辑贯穿整份计划。它不是在列知识点,是在帮你算时间账。
整份计划还内置了一套完整的元学习方法。Anki 闪卡做间隔复习,每天的学习时段模板精确到半小时,从早上八点到晚上十点。作者把自己那 8 个月的试错经验直接做进了文档里。你不需要自己摸索怎么坚持,照着他的作息表跑就行。
内容说完了,作息表听起来很完美,真正跟着跑起来是什么感觉?
“跑起来”的体验
先说清楚。这份计划不像其他 GitHub 项目那样需要 clone 之后装依赖跑 demo。本项目无需安装,直接在 GitHub 网页上浏览即可。 你可以在线阅读任何语言的翻译版,也可以 fork 到自己的仓库里用 Markdown 的 checkbox 追踪学习进度。每完成一个主题,勾掉一个框。
使用方式分两种。轻度用法:打开网页,找到你想补的知识点,点进对应的视频或书籍链接开始学。重度用法:fork 仓库,把 README 当成你的每日任务板,每天勾掉几个 checkbox,按作者的时间表推进。

上手最大的坑是心态陷阱。作者自己在 README 里写了”你不会记住所有内容”作为第一条警告。他当时花了大量时间学编译器、密码学、信息论这些”可选扩展”章节,后来发现面试根本不考。如果你试图学完所有内容,这份计划会变成一个无限循环的自学黑洞,而不是面试准备工具。
另一个真实的问题是外部链接的老化。这是所有链接聚合类项目的通病。Coursera 课程可能从免费变成收费,YouTube 视频可能下架,某些个人博客链接已经 404。好在核心内容——那些书籍推荐、算法概念解释、手写实现的要求——完全不受链接变化影响。而且社区维护者会定期清理死链,2026 年 5 月的提交记录里还有人在更新链接。
推荐的打开方式是把这份计划当诊断工具,而不是教材。先扫一遍主题列表,标记出你”能讲清楚原理”和”只能调用 API”的部分。只学后者。作者自己在 README 里反复强调一个观点:你不必学完所有东西,掌握约 75% 就足够应对大厂面试。
知道该学什么是一个问题,知道该不该学是另一个问题。不是所有人都适合花几个月啃这份计划。
谁该看,谁该跑
| 场景 | 典型用户 | 优势 | 局限 |
|---|---|---|---|
| 系统补基础 | 计算机专业在校生 | 覆盖完整,配合课程效果翻倍 | 没有在线判题,需另外刷题 |
| 社招面试准备 | 3 年以上后端开发 | 补算法和系统设计短板 | 前端专属内容缺失 |
| 转码自学 | 非 CS 背景想进大厂 | 路线清晰,有作者亲身验证 | 需先掌握至少一门编程语言 |
| 短期冲刺 | 面试不到两周 | 不建议 | 应直接刷高频题而非系统学 |
这份计划有几个明确的不适用场景:
-
只剩两周面试:这份计划是按月度量的学习路线图,不是考前划重点,请直接刷高频题 -
零编程基础转码:建议先掌握一门语言(作者推荐 Python 或 C),再去啃数据结构部分,否则每一步都像在看天书
前端开发者的算法面试需求,这份计划只能覆盖一半。JavaScript 运行机制、浏览器渲染原理、React/Vue 框架层面的内容完全没有涉及。但数据结构、算法和系统设计部分对前端面试同样有用,只是不能只靠它。
还有一个很多人踩的坑:这份计划没有在线判题系统。它告诉你今天该学什么、怎么学、需要看哪些资料,但不会告诉你”这道题为什么超时了”。你必须自己配一个 LeetCode 账号来验证你的代码能不能跑通边界用例。最佳组合是 CIU 做主线,LeetCode 做自检,缺一不可。
适用性聊清楚了。还有一个更长期的问题没聊:这个项目活了十年,维护还靠不靠谱?
社区怎么样了
| 指标 | 数据 | 说明 |
|---|---|---|
| Stars | 347.8k | 全球前 30,持续增长中 |
| 核心维护者 | 约 5-8 人 | John Washam 仍活跃,多位翻译维护者 |
| Open Issues | ~110 | 主要是链接更新和翻译需求 |
| 协议 | CC-BY-SA-4.0 | 自由使用,但衍生作品需同样开放 |
| 创建时间 | 2016 年 6 月 | 已持续维护超过 10 年 |
持续十年的开源维护本身就是一个信任信号。很多 GitHub 教程类项目火一阵就沉下去了,CIU 的 commit 历史显示维护节奏虽然不密集,但从未断档。最近一次更新在 2026 年 5 月。Stargazers 的增长曲线也非常稳定,每周仍有 100 左右的新增。
翻译社区的规模是我见过技术教育类项目里最大的。16 种语言已完成完整翻译,另有 13 种在翻译中。简体和繁体中文本地化都已完成,对中文读者完全友好。
关于社区反馈,一位 CSDN 评测作者给出了 8.4/10 的综合评分,其中”知识体系完整度”拿下了 9.5 的高分。但同一篇评测里也直指”实战反馈能力”只有 5.5 分。没有在线判题系统这件事,社区里几乎所有人都提到了。KDNuggets 在 2026 年初将 CIU 列为”十大面试准备仓库”之首,同时推荐了 tech-interview-handbook 和 system-design-primer 作为配套资源。
数据好看,翻译全面,链接在更新。说了这么多客观信息,我的主观判断到底是什么?
我的真实看法
我一开始对这份计划的怀疑来自一个直觉:34 万 Star 的”面试资料”还能有什么新鲜东西?市面上不缺面试资源,不缺 LeetCode 题解,不缺课程推荐清单。CIU 凭什么不一样。
翻完整个 README 和作者的个人经历之后,我的判断发生了变化。这份计划真正稀缺的地方不是它列了多少本书、贴了多少个链接,而是它传递了一种学习哲学:先理解,再实现,再做题。顺序不能乱,跳步必翻车。这个哲学在今天尤其稀缺。短视频时代的学习习惯是”看个题解 → 记住解法 → 下一题”,而 CIU 要求你从零写一个哈希表。区别在于,前者能过一道题,后者能过一类题。
不过有一件事我到现在也没完全想通。这份计划要求的全职学习强度是每天 8 到 12 小时,持续数月。对有全职工作的开发者来说,这个节奏基本不可行。John 的作息表更像是一个 gap 之后全身心投入的样本,而不是边工作边准备的参考。如果你只能在晚上和周末学习,需要自己把计划拆成 3 到 4 个月的分量。
和其他面试资源的关系其实很清晰。LeetCode 是健身房,你上去练具体的动作。CIU 是运动科学课,教你这套动作背后的肌肉群和发力原理。两者不是替代关系,是互补关系。非要二选一的话,短期冲刺选 LeetCode,长期投资选 CIU。如果你想两者都要,CIU 做主线,LeetCode 做自检,tech-interview-handbook 补行为面试部分。这是我目前看到的最省时间的组合。

一个可能被低估的点是这份计划对社招选手的价值。社招面试不是只考算法,系统设计、项目复盘、工程思维的分量同样重。CIU 的系统设计章节虽然简短,但触及了 CAP 定理、一致性哈希、负载均衡这些真实面试中高频出现的话题。配合 donnemartin 的 system-design-primer,两条线并行能覆盖绝大多数后端和全栈岗位的系统设计要求。
说到这,先把关键链接整理一下,方便你直接跳过去看。
资源地址
资源归资源。如果你只能带走一件事,选下一段。
从哈希表开始
如果你正在准备 2026 年的技术面试,或者发现自己面对算法题时”能看懂但写不出”,我的建议是:挑一个你最心虚的数据结构,用 CIU 的要求把它手写实现一遍。不是看一遍代码就过,是关掉屏幕自己写一遍。
如果你还在观望是否需要系统补基础,关注两个信号:
- 第一,你在 LeetCode 刷题时是否频繁卡在”我知道该用哈希表但写不出来”;
- 第二,你在面试中被问到”为什么”而不是”怎么做”时是否经常卡壳。如果这两个信号同时存在,这份计划就是你的解药。
一份没有代码的 GitHub 仓库,教会了我一件事:面试考核的不是你刷了多少题,是你知不知道自己在写什么。
