阶段三 · 计算机核心内功(本课导读)
课程定位:这是「小白变大佬」最关键的爬坡阶段。算法、操作系统、网络、编译原理——四大内功,决定你能走多高、走多远。 前置条件:阶段二(至少掌握一门语言,因为算法要用代码实现)。 时长建议:3~6 个月。这一阶段值得慢。
一、开场案例:为什么大厂面试必考算法?
小白问老师:「老师,我 Java 写得挺顺,项目也做了,为什么大厂笔试全是算法题?这不是为难人吗?」
老师反问:「你觉得 Redis 为什么快?」
小白:「内存快啊。」
老师:「内存快只是 1 倍的关系。Redis 用『跳表』做有序集合,用『哈希表』做字典——同样的数据量,查找快了 100 倍。这不是硬件,是算法。再看你的项目:1 万条数据用 for 循环查找要 5 秒,换成哈希表 0.001 秒。5 秒和 0.001 秒的差别,就是算法和不会算法的差别。」
小白:「所以面试考算法,其实是考『这个人遇到问题,会不会用数据结构去建模』?」
老师:「对。算法不是背题,是思考方式。会算法的人,看任何系统都能看出它『用了什么数据结构』——看 Redis 看到跳表,看数据库看到 B+ 树,看消息队列看到队列。这才是大佬的视角。」
案例启示:某团队线上服务偶发超时,排查一周无果。一位算法功底扎实的工程师看了一眼代码:日志里用的是 O(n²) 的嵌套循环去重,数据量翻倍后直接爆炸。改成哈希去重,O(n),秒回。 懂算法的人,能「看」出性能问题;不懂的人,只能「猜」。
二、这一阶段学什么?
| 模块 | 对应课程 | 核心收获 |
|---|---|---|
| 数据结构与算法 | 数据结构与算法之美 ★ | 十大数据结构 + 十大算法,建立算法世界观 |
| 算法应试 | 算法面试通关 40 讲、动态规划面试宝典、业务开发算法 50 讲 | 面试通关 + 业务实战 |
| 操作系统 | 趣谈 Linux 操作系统 ★、操作系统实战 45 讲 | 进程、内存、文件系统、内核视角 |
| 网络 | 趣谈网络协议 ★、Web 协议详解与抓包实战、透视 HTTP 协议、网络编程实战、网络排查案例课 | 网络分层、TCP/IP、HTTP、抓包排查 |
| 编译原理 | 编译原理之美 ★、编译原理实战课 | 程序是怎么被翻译的(可选高阶) |
| 数学 | 程序员的数学基础课 | 逻辑、概率、排列组合,算法背后的数学 |
三、怎么学最有效?
- 算法:先理解,再实现,别背题。 每个数据结构问:它长什么样?解决什么问题?增删改查各多少复杂度?然后亲手实现一遍(数组链表、树、图),再去做题。
- 操作系统:和阶段一联动。 阶段一知道「内存是工作台」,这里深入「工作台怎么分配、怎么回收、进程怎么排队」。
- 网络:配合抓包工具。 光看书不懂,用 Wireshark 抓一次你自己的网页访问,看着三次握手、四次挥手真实发生,你就懂了。
- 做「复杂度意识」练习:每天看到一段代码,习惯性地问「这玩意儿是 O(n) 还是 O(n²)?」
四、学完检验(自测清单)
- 能手写数组、链表、栈、队列、树、图的增删改查,并说出复杂度
- 能说出二分查找、快排、归并排序的思想并手写
- 能解释进程与线程的区别、虚拟内存的作用
- 能画出 TCP 三次握手/四次挥手,并解释为什么这么设计
- 能说出 HTTP 1.0/1.1/2.0 的核心差异
- 看到一段代码能判断大概的复杂度
全打勾,进入
04_阶段四_数据库与中间件/。这一阶段如果没吃透,后面所有阶段都会「地基不稳」,务必耐心。