📘 Coding Interview University(编程面试大学)

📌 项目简介

这是一个完整的计算机科学学习计划,帮助你成为一名软件工程师。 ([GitHub][1])

最初作者只是写了一个简单的学习 TODO 列表,但逐渐扩展成一个系统化学习路线。

作者按照这个计划学习后,成功入职 Amazon 软件工程师岗位。 ([GitHub][1])

⚠️ 作者特别说明:

  • 不需要像他一样每天学习 8–12 小时
  • 但这个清单包含了你需要掌握的全部核心知识

🧭 一、学习计划结构(The Study Plan)

包含内容

  • 这是什么?
  • 为什么使用它?
  • 如何使用
  • 编程语言选择
  • 数据结构与算法书籍
  • 面试准备书籍
  • 每日学习计划
  • 编程题练习

👉 本质:

一套“从 0 → 面试通过”的完整路径


🧠 二、核心学习内容(Topics of Study)

这是整个项目最核心的部分👇


1️⃣ 算法基础

  • 时间复杂度 / Big-O
  • 渐进分析(Asymptotic analysis)

2️⃣ 数据结构

  • 数组(Array)
  • 链表(Linked List)
  • 栈(Stack)
  • 队列(Queue)
  • 哈希表(Hash Table)

3️⃣ 基础算法与技巧

  • 二分查找(Binary Search)
  • 位运算(Bitwise Operations)

4️⃣ 树(Trees)

  • 树基础
  • 二叉搜索树(BST)
  • 堆 / 优先队列
  • 树遍历:

    • 前序 / 中序 / 后序
    • BFS / DFS

5️⃣ 排序算法

  • 选择排序
  • 插入排序
  • 堆排序
  • 快速排序
  • 归并排序

6️⃣ 图(Graphs)

  • 有向图 / 无向图
  • 邻接矩阵 / 邻接表
  • BFS / DFS

7️⃣ 进阶知识

  • 递归(Recursion)
  • 动态规划(Dynamic Programming)
  • 设计模式(Design Patterns)
  • 组合数学 & 概率
  • NP / NP-Complete 问题
  • 字符串处理
  • Trie
  • 网络(Networking)
  • 浮点数 / Unicode / 字节序

8️⃣ 系统与底层知识

  • 程序执行原理
  • 缓存(Cache)
  • 进程与线程
  • 并发问题(锁、死锁等)
  • 内存模型(堆、栈)

9️⃣ 最终复习

系统回顾所有知识点


💼 三、求职部分(Getting the Job)

  • 优化简历
  • 找工作
  • 面试流程准备
  • 面试时的思考点
  • 向面试官提问
  • 拿到 Offer 后

📚 四、可选扩展(Optional)

⚠️ 以下是“加分项”,不是必须:


高级计算机科学内容

  • 编译器
  • 信息论
  • 密码学
  • 压缩算法
  • 计算机安全
  • 并行计算
  • 消息队列系统

高级数据结构

  • 红黑树 / AVL 树
  • B 树
  • 跳表(Skip List)
  • 并查集(Union-Find)
  • 布隆过滤器(Bloom Filter)
  • HyperLogLog

数学与算法

  • FFT(快速傅里叶变换)
  • 线性规划
  • 几何算法

系统设计(重要)

👉 适用于 4 年以上经验:

  • 可扩展性(Scalability)
  • 数据处理系统

🧪 五、刷题与练习(非常关键)

推荐平台:

  • LeetCode(强烈推荐)
  • HackerRank
  • TopCoder ([GitHub][1])

👉 核心建议:

  • 持续刷题
  • 学会分析解法
  • 总结模式(pattern)

🛠️ 六、如何使用这个仓库(How to use it)

方法 1:不使用 Git

  • 下载 ZIP
  • 用编辑器查看 Markdown

方法 2:使用 Git(推荐)

  1. Fork 仓库
  2. Clone 到本地
  3. 按学习进度打勾 [x]
  4. 提交自己的学习进度

👉 本质:

把它当成“学习进度管理系统”


⚠️ 七、作者建议(非常重要)

1️⃣ 不要怀疑自己不够聪明

  • 很多工程师都有“自己不够聪明”的不安全感
  • 这是普遍现象

2️⃣ 视频资源说明

  • 一些课程来自:

    • Coursera
    • edX
  • 有些需要等待开课


🧠 核心本质总结(给你做架构抽象)

这个项目本质是:

✅ 一个「计算机科学知识图谱 + 学习路径引擎」


如果用你熟悉的系统设计语言来拆👇

1️⃣ 数据层(知识图谱)

  • DS + Algo
  • OS / 网络
  • 数学
  • 系统设计

2️⃣ 流程层(学习路径)

类似:

基础 → 数据结构 → 算法 → 系统 → 面试

3️⃣ 执行层(训练)

  • 刷题(LeetCode)
  • 模拟面试
  • 项目实践

4️⃣ 结果层(输出)

  • Offer
  • 工程能力
  • CS 基础

🚀 一句话总结

这是目前 GitHub 上最系统的「算法 + 计算机基础 → 面试」完整路线图之一。 ([GitHub][1])

参考资料