计算机基础不是需要一次背完的题库,而是理解软件运行边界的四组模型:网络解释数据如何跨主机传递,操作系统解释程序如何使用硬件,数据结构决定信息如何组织,算法则决定计算如何推进。

四条主线如何衔接

学习网络时,先建立分层视角,再追踪一次请求经历的 DNS、TCP、TLS 和 HTTP。重点不只是记协议字段,而是能解释超时、重传、连接复用与拥塞控制如何影响接口延迟。抓包分析比单纯背诵更容易形成可靠理解。

操作系统部分应围绕资源抽象展开:进程和线程对应执行与隔离,虚拟内存连接地址空间与物理内存,文件系统组织持久化数据,I/O 多路复用解决大量连接的等待问题。学习每个机制时,都应追问它解决了什么竞争或成本,以及应用程序能观察到哪些现象。

数据结构与算法最好结合学习。数组、链表、哈希表、树和图提供不同的访问与更新能力;二分、搜索、回溯、动态规划和贪心则在这些结构上探索答案。复杂度分析用于估算增长趋势,但工程选择还要考虑缓存局部性、常数成本、数据规模和可维护性。

推荐练习方式

每个主题采用“模型—实验—复盘”三步。先画出关键组件与状态变化,再用最小实验验证,例如用 curl 和抓包观察连接、用系统工具查看进程与内存、手写一种结构并记录操作复杂度。最后把异常结果写成解释,确认自己能区分事实、假设与环境差异。

不要把四个专题割裂。线程阻塞可能源于网络等待,数据库索引依赖树结构,缓存淘汰会用到哈希表与链表,消息队列性能又同时受磁盘 I/O、批处理算法和网络协议影响。跨主题追踪一条真实链路,往往比重复刷孤立问题更有效。

自检清单

  • 能否从输入 URL 开始解释一次请求的完整路径?
  • 能否说明线程切换、缺页和系统调用为何有成本?
  • 能否根据读写模式选择合适的数据结构?
  • 能否证明算法正确性并估算时间、空间复杂度?
  • 遇到线上现象时,能否设计实验缩小问题范围?

掌握基础的标准不是术语数量,而是面对陌生系统时仍能借助模型推导、借助工具验证,并清楚说明方案的边界。