全系列路线

计算机学习路线

依次学习编程、算法、计算机组成、操作系统、网络与数据库。

7 个阶段42 章预计 30 小时
学习进度0/42 章完成
0%
开始学习程序、类型、控制流与函数
先修内容

适合具备基础代数知识、准备学习计算机专业课程的读者。

学习阶段

01

编程与科学计算基础

6 章

程序设计、数据表示、数组计算、测试、版本管理与数值实验。

  1. 01

    程序、类型、控制流与函数

    C00 · 1
    未开始
  2. 02

    集合数据、文件与错误处理

    C00 · 2
    未开始
  3. 03

    数组、向量化与数值精度

    C00 · 3
    未开始
  4. 04

    数据可视化与计算实验

    C00 · 4
    未开始
  5. 05

    测试、版本控制与环境管理

    C00 · 5
    未开始
  6. 06

    编程与科学计算综合项目

    C00 · 6
    未开始
02

数据结构、算法与复杂度

6 章

数据结构、排序、动态规划、图算法、复杂度与可计算性。

  1. 07

    序列、栈、队列、树与堆

    C01 · 1
    未开始
  2. 08

    哈希表、图与并查集

    C01 · 2
    未开始
  3. 09

    分治、贪心与排序

    C01 · 3
    未开始
  4. 10

    动态规划与图算法

    C01 · 4
    未开始
  5. 11

    渐近复杂度、归约与可计算性

    C01 · 5
    未开始
  6. 12

    数据结构与算法综合复习

    C01 · 6
    未开始
03

数据处理、实验设计与可复现计算

6 章

数据清理、变换记录、实验设计、统计比较与环境管理。

  1. 13

    数据质量、清理与模式验证

    C02 · 1
    未开始
  2. 14

    数据变换、血缘与版本

    C02 · 2
    未开始
  3. 15

    对照、随机化与功效分析

    C02 · 3
    未开始
  4. 16

    指标、统计比较与多重检验

    C02 · 4
    未开始
  5. 17

    实验追踪、环境封装与制品

    C02 · 5
    未开始
  6. 18

    数据处理与实验设计综合复习

    C02 · 6
    未开始
04

计算机组成

6 章

二进制表示、数字逻辑、指令集、流水线、缓存与输入输出。

  1. 19

    二进制与数值表示

    C03 · 1
    未开始
  2. 20

    数字逻辑与时序电路

    C03 · 2
    未开始
  3. 21

    指令集与汇编程序

    C03 · 3
    未开始
  4. 22

    处理器与流水线

    C03 · 4
    未开始
  5. 23

    存储层次与缓存

    C03 · 5
    未开始
  6. 24

    输入输出与性能分析

    C03 · 6
    未开始
05

操作系统

6 章

进程、调度、线程同步、虚拟内存与文件系统。

  1. 25

    进程与系统调用

    C04 · 1
    未开始
  2. 26

    处理器调度

    C04 · 2
    未开始
  3. 27

    线程与同步

    C04 · 3
    未开始
  4. 28

    死锁与资源分配

    C04 · 4
    未开始
  5. 29

    虚拟内存与分页

    C04 · 5
    未开始
  6. 30

    文件系统与崩溃恢复

    C04 · 6
    未开始
06

计算机网络

6 章

网络分层、以太网、IP 路由、传输协议与网络测量。

  1. 31

    网络分层与时延

    C05 · 1
    未开始
  2. 32

    以太网与交换

    C05 · 2
    未开始
  3. 33

    IP 地址与路由

    C05 · 3
    未开始
  4. 34

    UDP 与 TCP

    C05 · 4
    未开始
  5. 35

    DNS、HTTP 与 TLS

    C05 · 5
    未开始
  6. 36

    网络测量与故障排查

    C05 · 6
    未开始
07

数据库

6 章

关系模型、SQL、数据规范化、索引、事务与恢复。

  1. 37

    关系模型与键

    C06 · 1
    未开始
  2. 38

    SQL 查询与聚合

    C06 · 2
    未开始
  3. 39

    函数依赖与规范化

    C06 · 3
    未开始
  4. 40

    索引与查询计划

    C06 · 4
    未开始
  5. 41

    事务与隔离

    C06 · 5
    未开始
  6. 42

    数据库日志与恢复

    C06 · 6
    未开始

阶段自测

  1. 学完 C00 · 编程与科学计算综合项目

    完成《编程与科学计算基础》后,检查各章练习的解答,并说明计算中使用的条件。

  2. 学完 C01 · 数据结构与算法综合复习

    完成《数据结构、算法与复杂度》后,检查各章练习的解答,并说明计算中使用的条件。

  3. 学完 C02 · 数据处理与实验设计综合复习

    完成《数据处理、实验设计与可复现计算》后,检查各章练习的解答,并说明计算中使用的条件。

  4. 学完 C03 · 输入输出与性能分析

    完成《计算机组成》后,检查各章练习的解答,并说明计算中使用的条件。

  5. 学完 C04 · 文件系统与崩溃恢复

    完成《操作系统》后,检查各章练习的解答,并说明计算中使用的条件。

  6. 学完 C05 · 网络测量与故障排查

    完成《计算机网络》后,检查各章练习的解答,并说明计算中使用的条件。

  7. 学完 C06 · 数据库日志与恢复

    完成《数据库》后,检查各章练习的解答,并说明计算中使用的条件。

综合练习

练习完成进度:0/7

难度 3/5

《编程与科学计算基础》综合练习

设计函数 sumFiniteIntegers(tokens),输入 ["1","2","bad","3"] 时采用“发现非法项即失败”策略。写出返回契约、失败结果和至少三个边界测试。

查看提示

解析与求和分开;失败对象要保留非法项索引,且失败时不得发布部分总和。

展开分步解答

契约可定义成功返回 {ok:true,sum:number,count:number},失败返回 {ok:false,index:number,token:string}。逐项解析到索引 2 时 "bad" 不是有限整数,因此返回 {ok:false,index:2,token:"bad"},不返回部分和 3。边界测试至少覆盖空数组成功得 0、负数可求和、首项非法立即失败以及超出安全整数范围失败。

结果核验:把 bad 改为 4 后应成功得到 sum=10、count=4;原输入的失败索引按零起始计数确为 2,且输出中没有可误用的 partialSum。

难度 4/5

《数据结构、算法与复杂度》综合练习

无向正权图边为 AB=1、AC=4、BC=2、BD=5、CD=1。用 Dijkstra 算法求从 A 到各点最短距离和到 D 的路径,并给出二叉堆实现复杂度。

查看提示

每次固定当前距离最小的未访问点,按 A、B、C、D 的顺序松弛。

展开分步解答

初始 d(A)=0。由 A 得 d(B)=1、d(C)=4;固定 B 后把 d(C) 改为 3、d(D) 改为 6;固定 C 后把 d(D) 改为 4;最后固定 D。距离为 A:0、B:1、C:3、D:4,到 D 的路径 A-B-C-D。邻接表加二叉堆复杂度为 O((V+E)logV)。

结果核验:路径权重 1+2+1=4;其余显然候选 A-C-D=5、A-B-D=6 都更长,所有边权为正满足 Dijkstra 前提。

难度 4/5

《数据处理、实验设计与可复现计算》综合练习

A/B 实验两组各 100 人,A 转化 20 人、B 转化 25 人。计算转化率差、合并比例标准误和 z 值,并判断是否达到双侧 1.96 阈值。

查看提示

合并比例 p=(20+25)/200;标准误为 √[p(1-p)(1/100+1/100)]。

展开分步解答

两组转化率为 0.20、0.25,差为 0.05。合并比例 p=0.225,标准误 √[0.225·0.775·0.02]≈0.0591,故 z=0.05/0.0591≈0.85,小于 1.96,不能按该预设阈值宣称差异显著。

结果核验:近似 95% 差值区间为 0.05±1.96·0.0591≈[-0.066,0.166],包含 0,与 z 判断一致。

难度 4/5

《计算机组成》综合练习

一个任务执行2000000 条指令,平均每条1.5 周期,频率为1.5 GHz;随后串行传输200000 字节,启动时间0.1 毫秒,带宽每秒 100000000 字节。求总时间以及处理器计算加速两倍后的总时间。

查看提示

先由指令数和频率求处理器时间,再把启动和数据传输时间相加。两阶段按题设串行执行。

展开分步解答

处理器时间为两毫秒,传输阶段为零点一加二,等于两点一毫秒,因此总计四点一毫秒。计算加速两倍后,计算阶段为一毫秒,传输阶段仍为两点一毫秒,总计三点一毫秒。

结果核验:两种方案的时间差均来自计算阶段减少的一毫秒;总加速比为四点一除以三点一,约一点三二。

难度 4/5

《操作系统》综合练习

两个线程各把同一计数器增加一次,初值为 0。说明未经同步的读改写为何可能只留下计数一,并设计既保护内存更新又向文件提交最终计数的顺序。假设写入成功后还要求文件同步完成。

查看提示

列出两个线程先后读取零的交错;锁保护共享内存的整个读改写,同步文件还需要单独的系统接口。

展开分步解答

若两个线程都先读到零,各自加一再写回,最终值为一。用同一互斥锁保护读取、加一和写回后,两次操作顺序执行,最终值为二。等待两线程完成后,由单一写入者把二写入文件,检查写入返回值,再调用文件同步接口并处理错误。

结果核验:互斥后的两次状态变化为零到一、一到二;若文件写入或同步失败,应保留失败状态,不能把内存计数二当作已经持久保存的证据。

难度 4/5

《计算机网络》综合练习

一条单向链路速率为每秒 100000000 位,传播时延为两毫秒。发送1000 字节分组,忽略排队、处理和协议头,求单向到达时间。说明两次不同时间测得的往返时延能否直接推导单向传播时延。

查看提示

先把字节换成位,计算发送时延,再叠加传播时间;往返测量还包含反向路径与应答处理。

展开分步解答

分组为八千位,发送时延为零点零八毫秒,加上两毫秒传播,单向到达时间为两点零八毫秒。往返结果还受反向路径、排队和响应端处理影响;只有额外假设路径对称且其他开销已知时才能按相应模型估计单向传播。

结果核验:八千除以一亿等于零点零零零零八秒,换算为零点零八毫秒。若链路速率加倍,传播时延保持两毫秒,单向总时间降为两点零四毫秒。

难度 4/5

《数据库》综合练习

账户甲余额 100 元,账户乙余额 50 元,事务把 20 元从甲转入乙。写出事务成功后的余额与总额不变量,并说明日志已提交但部分数据页尚未写回时,重做恢复需要达到什么结果。

查看提示

扣款和入款属于同一事务;持久提交记录决定事务结果,恢复需把已提交修改反映到数据页。

展开分步解答

成功后甲为八十、乙为七十,总额仍为一百五十。若持久日志完整记录了该事务且提交已经持久化,恢复应重做尚未反映到数据页的修改,最终恢复到八十与七十。重复应用日志需要依靠日志位置或幂等操作避免重复扣款。

结果核验:恢复后的余额和为八十加七十等于一百五十。只保留扣款会使总额变成一百三十,直接暴露事务原子性被破坏。

参考资料