计算机基础
想象一下,你在字节跳动的面试间里,面试官问:"HTTPS 为什么安全?TCP 三次握手过程中,如果第二个数据包丢了会发生什么?"
这些问题,本质上都在考察你的 CS 基础。
很多人以为"计算机基础"只是校招才会问的东西。错。大厂社招一样会问,而且问得更深——他们想知道你写的代码在操作系统层面是怎么跑的,你的系统设计为什么会选择 TCP 而不是 UDP,你的系统为什么会遭受 XSS 攻击。
计算机基础不是背的,是理解透才能答活的。 这套内容,就是用最直观的方式,带你把 OS、计网、数据结构与算法、安全四大模块全部过一遍。
【直观类比】 CS 基础就像建筑的钢筋水泥框架——你看不见它,但它决定了你的系统能盖多高、能承多少重量。框架没打牢,代码写得再漂亮也只是"纸糊的楼"。
知识全景
本模块覆盖四大核心领域:
学习路径指引
第一步:理解框架,而非记忆结论
CS 基础最忌讳的就是死记硬背。比如 TCP 拥塞控制,很多人能背出"慢启动→拥塞避免→快速恢复"四个阶段,但面试官追问"为什么要有慢启动?初始窗口能不能直接设大?"就直接哑火了。
正确的学习方法:先理解问题背景(当时解决的是什么问题),再看方案设计(为什么这么设计),最后才是机制细节。
第二步:用类比建立直觉
每个知识点都有对应的现实类比。比如:
- 进程 vs 线程 → 工厂 vs 车间
- 虚拟内存 → 图书馆借书系统
- TCP 流量控制 → 水管阀门
- 哈希冲突 → 抽屉里的物品挤在一起
建立直觉后再看源码和细节,事半功倍。
第三步:通过追问链检验
学习完每个模块后,用这套追问链自我检验:
- 怎么用? → 基本概念和使用场景
- 为什么? → 设计原理和取舍原因
- 边界在哪? → 极端情况、潜在问题
- 和生产有什么关系? → 线上表现、排查工具
模块详解
数据结构与算法 cs/algorithm/
从最基础的数组和链表开始,逐步深入到红黑树、B+树、跳表等高级结构。每一篇不讲空话,直接告诉你:什么时候用什么结构,为什么,怎么实现。
核心文章:
- 数组 vs 链表 —— 最容易被忽略的基础对比
- 红黑树 —— 理解平衡二叉树的工程实现
- B+树 vs B树 —— 数据库索引的数据结构基础
- LRU 缓存 —— 算法在系统设计中的典型应用
- 布隆过滤器 —— 空间效率极高的概率数据结构
计算机网络 cs/network/
HTTP/TCP/UDP 是面试高频区,但大多数候选人只能背出状态码和三次握手。真正的高手能回答"QUIC 为什么这么快"、"HTTP/2 的头部压缩是怎么实现的"。
核心文章:
- TCP 三次握手与四次挥手 —— 每次交互背后的状态机
- HTTP/1 vs HTTP/2 vs HTTP/3 —— 协议演进与性能权衡
- HTTPS 工作原理 —— TLS 握手与证书验证
- TCP 流量控制与拥塞控制 —— 网络传输的核心控制机制
- DNS 解析流程 —— 从域名到 IP 的寻址之旅
操作系统 cs/os/
进程、线程、内存管理、IO 模型——这些是理解 Java 并发和性能调优的前提。比如你搞不懂 Epoll 和 Select 的区别,就永远说不清楚 Netty 为什么快;你搞不懂虚拟内存,就理解不了 JVM 堆外内存的问题。
核心文章:
- 进程 vs 线程 vs 协程 —— 并发模型的核心差异
- IO 模型:阻塞 vs 非阻塞 vs 异步 —— Linux 五种 IO 模型全解析
- Epoll 原理 —— 高性能网络框架的基石
- 进程间通信 —— IPC 方式的对比与选型
- 死锁与解决方案 —— 产生条件、预防策略、检测方法
- 页面置换算法 —— 内存管理核心机制
安全基础 cs/security/
安全不是运维的事,是每个后端工程师的必备常识。SQL 注入、XSS、CSRF 这些攻击方式你可能听说过,但你知道怎么防御吗?你知道 JWT 和 Session 各自的优缺点吗?
核心文章:
- SQL 注入 —— 原理、危害与防御策略
- XSS 攻击 —— 跨站脚本攻击的全部分类
- CSRF 攻击 —— Token 防御与 SameSite 策略
- JWT vs Session —— 认证方式的工程权衡
- OAuth 2.0 —— 第三方授权的原理与安全考量
- TLS 握手流程 —— HTTPS 安全通信的完整过程
面试关联
CS 基础不是孤立的知识点,它和 Java 高级面试紧密相连:
- TCP/IO 模型 → NIO 与 Netty
- B+ 树 → MySQL 索引原理
- 进程/线程/内存 → JVM 运行时数据区
- 线程同步 → Java 并发编程
- 加密算法 → Redis 持久化安全
阅读建议
记住:CS 基础没有捷径,理解 > 记忆。能用自己的话把原理讲清楚的,才是真正掌握的。