跳到正文

目录

Coding Interview University:软件工程师求职学习指南

核心判断

Coding Interview University(简称 CIU)是一份"按顺序点到底"的面试自学清单,不是教程。它把软件工程师面试要考的知识整理成一份 Markdown 任务清单,每一项都配了书、视频或练习,读者照着勾选进度,从零补齐到能应付大厂面试。

创始人 jwasham 非科班出身,最初只想为 Google 面试列一份待办清单,后来清单越滚越大。他按这份计划每天学 8-12 小时、连续几个月,最终入职 Amazon 的软件开发工程师岗位。截至 2026 年 8 月,仓库在 GitHub 上约 271K Stars、70K Forks,协议 CC-BY-SA-4.0,最近一次提交在 2023 年 11 月,之后进入低维护状态。

总览:它同时在做两件不同的事

CIU 的 README 表面上是一个文件,实际装着几条不同的线,先别混在一起:

装的是什么读者把它当什么
学习计划怎么用清单、选哪门语言、读哪些书、单日怎么安排使用手册
主题清单数据结构、算法、图、动态规划等要考的知识点条目检查清单
求职准备简历、投递、面试流程、向面试官提问临门一脚

表格之后是大量可选内容:系统设计(作者标注适合 4 年以上经验)、编译器、密码学等扩展主题,独立于主清单。

记下这张表的意义在于:知识条目管"铺开广度",每日安排的复习节奏管"对抗遗忘",求职动作管"最终目标"。三条是平行主线,最常踩的坑,就是把"勾完一遍清单"当成"已经学会"。下面分头讲。

学习计划怎么用

CIU 的用法本质上就是"勾选进度"。它依赖 GitHub 的 Markdown 任务列表,[x] 表示完成。作者推荐两种方式:

  • 熟悉 git 的人:fork 仓库、建分支,把 [ ] 改成 [x] 后提交,个人进度独立于上游。
  • 不熟悉 git 的人:直接下载 ZIP,在支持 Markdown 的编辑器里勾选。

清单按顺序从上往下排,作者明确要求"按顺序处理"。前置要求只有三条:会一点编程(变量、循环、函数)、耐心、时间。

这份清单能坚持下来的关键不在内容多,而在"拆得够细"。作者把大目标拆成几百个可勾选的条目,每完成一格就有正向反馈,进度可见,也更容易长期跟下去。保住节奏比某几天突击更重要。

主题清单的结构

选好语言后,主题清单按这个顺序展开:

  • 算法复杂度:Big-O、渐近分析,是一切的基础。
  • 数据结构:数组、链表、栈、队列、哈希表。
  • 更多知识:二分查找、位运算。
  • :二叉树、BST、堆、平衡树、遍历(前序/中序/后序/BFS/DFS)。
  • 排序:选择、插入、堆排序、快排、归并。
  • :有向/无向、邻接矩阵/邻接表、BFS、DFS。
  • 再加更多:递归、动态规划、设计模式、组合与概率、NP 问题、缓存、进程与线程、测试、字符串、Trie、Unicode、网络等。
  • 最终复习:把所有主题过一遍。

这样排的顺序是有道理的:Big-O 给你一把"衡量一切"的尺子,后面每个数据结构都要拿它来算时间与空间开销;图、DP、递归这些相对难的题目,又都建立在前面比较简单的基础之上。面试题大多可以归到少数几类模式(哈希与数组、双指针、BFS/DFS、动态规划),按主题逐类攻破,比漫无目的地刷题更有效率。

作者用 C 和 Python 两门语言学习:C 贴近底层,能理解指针和内存管理,适合"感受"数据结构;Python 简洁,面试时写代码快。书单根据语言不同各给一本打底,例如 C 配《The C Programming Language》。

每日计划:机制如何在一个推进里配合

清单在"学习计划"部分给出每日安排,把一天拆成新知识点、编码实现、做题、复习几段,并单独列出 Coding Question Practice 和 Coding Problems 两个入口,分别指到刷题练习的起点和一批具体题目。作者强调普通人不必像他那样每天 8-12 小时——他自己也花了不少时间在不需要的内容上,计划里明确提示"你不会像我做那么多"。

把前面的机制串成一个具体推进:先 fork 仓库(不熟悉 git 就下载 ZIP),选一门语言和一本打底书,按 README 顺序进入主题清单。每到一个知识点,先看配好的书或视频,再动手用代码实现一遍,能跑通就从 [ ] 勾成 [x]。同一个推进里还挂着 Coding Question Practice,遇到已学主题就做一两道题。每个主题收尾时,间隔重复(作者推荐 Anki)负责把"刚看过"变成"隔几天还能独立写出来";主清单走完后的 Final Review,再从头快过一遍,把薄弱项找出来回炉。

两条线缺一不可:只勾清单不返工,会被题目暴露;只刷题不铺知识,会在不熟悉的主题上卡住。

边界:它不覆盖什么

CIU 是软件工程师面试清单,不是前端或全栈路线图。作者在 README 里明确区分,并指向 roadmap.sh 的对应路线。它覆盖约 75% 的 CS 知识——够面试用,但不是完整 CS 课程。系统设计相关放在可选区,标注适合 4 年以上经验的候选人。

采用建议

  • 非科班、想进大厂当软件工程师:最贴合。按顺序勾选,每天 2-4 小时、持续数月,比盲目刷题更系统。
  • 已有 CS 基础、想自查:把清单当查漏补缺工具,跳过已掌握的主题。
  • 前端 / 全栈方向:不适合,改看 roadmap.sh 的对应路线。
  • 注意:仓库自 2023 年 11 月以来基本没更新,链接和课程可能失效。书单和视频大多是经典资源,仍可用,但个别外部链接需要自己确认。

常见问题

Q:刷够多少题才算准备好? A:CIU 没有给固定题数,重心在"按主题补知识 + 反复练习"。更稳的做法是覆盖所有主题、把每类题做熟并复习,而不是追求总数。

Q:需要先学 C 吗? A:不必。作者用 C 是为了贴近底层,你也可以用 Python 或 Java 一门语言全程走完。关键是理解数据结构,而不是绑定语言。

Q:系统设计怎么准备? A:CIU 把它放在可选区,适合 4 年以上经验。规划时单独看 System Design 相关资源,不要占用主题清单的进度。

GitHub:jwasham/coding-interview-university

参与讨论

使用 GitHub 登录。欢迎补充事实、异议与实践。