COVERAGE

每个主题,都有练习落点。

下表对应当前52章:18章基础与34章后续内容。覆盖记录不表示已经掌握,也不保证覆盖所有未来面试题。

章节与能力图解例子与源码练习面试
01 · 第一份程序:保存、编译与顺序执行
从终端和纯文本文件开始,逐个读懂第一份C++程序,再用两个小整数例子解释初始化、赋值、独立副本与重新编译。
2 个图解7 份文件章内阶梯与练习6
02 · 类型与表达式:先运算,再保存
从类型和字面量出发,亲手预测整数除法、初始化、转换时机、const和标量auto,最后区分无符号回绕、有符号越界与浮点舍入。
2 个图解11 份文件章内阶梯与练习6
03 · 控制流:选择与重复
先读懂条件、分支和循环的下一步,再独立完成半开区间累计与偶数计数,追踪短路、更新和提前退出。
2 个图解14 份文件章内阶梯与练习6
04 · 普通函数:参数、调用与返回
沿着一次调用追踪形参、返回值与调用者,练习默认实参、简单重载和有范围的计数函数。
2 个图解14 份文件章内阶梯与练习6
05 · 引用与const:副本和同一个对象
用具名整数追踪别名、参数写回、只读路径与借用有效期;从状态变化理解auto和局部返回。
2 个图解14 份文件章内阶梯与练习6
06 · 指针:地址、空值与有效访问
分清改目标与改指向,跟踪指针副本、可选借用、const分层和最后一次合法访问。
2 个图解14 份文件章内阶梯与练习6
07 · 类与对象:状态、接口和销毁顺序
把状态和允许的操作放进同一个类型,追踪初始化、失败不变和正常退出时的销毁过程。
2 个图解17 份文件章内阶梯与练习6
08 · 拥有一组数据:array、vector与string
从类型实参和合法下标开始,区分元素数量与预留容量,再用独立复制和溢出前检查建立可靠的序列操作。
2 个图解16 份文件章内阶梯与练习6
09 · 遍历与借用:范围、视图与失效
用同一组读数比较下标、迭代器与范围for;让视图借用已有元素,再逐步判断存活、长度、重分配和记录身份。
3 个图解16 份文件章内阶梯与练习6
10 · 算法与lambda:表达处理意图
从手动计数走到查找、排序、累计和谓词;分清调用时机、闭包持有的状态,以及算法怎样修改元素或范围。
2 个图解16 份文件章内阶梯与练习6
11 · 关联容器与适配器:查找、唯一性与访问顺序
先识别一对值与绑定方式,再区分按键查询、插入和计数;用同一批小任务比较有序集合、哈希表、双端容器、队列与栈。
2 个图解10 份文件章内阶梯与练习6
12 · 复制与移动:追踪对象、调用与结果
先区分表达式类别、const和对象寿命,再预测复制/移动构造与赋值;用标量日志和容器值理解std::move、返回值与Rule of Zero。
2 个图解11 份文件章内阶梯与练习6
13 · 真实资源与RAII:独占拥有
追踪new创建的真实对象由谁释放,再用unique_ptr管理正常退出、提前返回、转交和接口接管;分清空拥有者、有效借用与释放责任。
2 个图解8 份文件章内阶梯与练习6
14 · 共享拥有与回调寿命
用最后一个强拥有者、weak_ptr的lock以及回调自带的状态,判断对象何时仍可用;再检查C++20 std::function的空状态和可复制目标要求。
2 个图解7 份文件章内阶梯与练习6
15 · 定义模板与concepts
从会填模板实参走到定义模板,按实参推导、编译期分支与约束选择可用接口;再用转发引用解释泛型调用如何保留表达式类别。
2 个图解8 份文件章内阶梯与练习6
16 · 错误处理与输入解析
把合法零、没有值和失败分开传递:先从输入得到经过完整检查的候选值,再提交修改;用真实资源观察异常展开,并判断noexcept承诺怎样影响明确的移动选择。
2 个图解12 份文件章内阶梯与练习6
17 · 多文件编译、链接与构建
把头文件、实现与main组成真正的项目,沿预处理、编译、汇编、链接追踪产物;亲自制造缺定义和重复入口的链接错误,再用明确目标与可复现命令恢复。
2 个图解8 份文件章内阶梯与练习6
18 · 测试与调试:独立定位失败
从独立期望与实际检查次数开始,用同一处整数除法错误练习失败退出、LLDB定位、改源重编译和边界复测;分清断言被移除与检查真正执行。
2 个图解5 份文件章内阶梯与练习6
19 · 数组、哈希与双指针:重复工作从哪里删掉
DSA / hash / two-pointers / sliding-window
3 步2 个例子2 道练习6
20 · 二分、排序与堆:保留哪些候选
DSA / binary-search / heap / sort
4 步2 个例子2 道练习6
21 · 递归、树与图:沿着依赖和边访问
DSA / recursion / tree / DFS / BFS
4 步2 个例子2 道练习6
22 · 动态规划与解题表达:状态必须回答一句话
DSA / DP / recurrence / interview
4 步2 个例子2 道练习6
23 · 进程、系统调用与文件描述符
Linux / POSIX / process / file descriptor
3 步2 个例子2 道练习6
24 · 虚拟内存、页表与 mmap
Linux / virtual memory / mmap
3 步2 个例子2 道练习6
25 · 线程、互斥锁与死锁
threads / mutex / deadlock
3 步2 个例子2 道练习6
26 · 条件变量、有界队列与关闭协议
condition variable / queue / shutdown
3 步2 个例子2 道练习6
27 · 原子操作与 happens-before
atomics / memory ordering / happens-before
3 步2 个例子2 道练习6
28 · TCP 字节流、分包、超时与背压
TCP / framing / timeout / backpressure
3 步2 个例子2 道练习6
29 · CPU cache、缓存一致性与 SIMD
cache / coherence / SIMD / false sharing
3 步2 个例子2 道练习6
30 · 可信测量、原始样本与性能模型
benchmark / Amdahl / roofline / raw samples
3 步2 个例子2 道练习6
31 · 并行分解、分块与负载均衡
parallel decomposition / partition / load balance
3 步2 个例子2 道练习6
32 · Reduction、scan 与数值正确性
reduction / scan / numerical accuracy
4 步2 个例子2 道练习6
33 · Host/device、传输与异步生命周期
host device / transfer / async / lifetime
3 步2 个例子2 道练习6
34 · Kernel 索引、边界与 grid-stride loop
kernel indexing / bounds / grid-stride
3 步2 个例子2 道练习6
35 · 合并访问、共享内存与同步范围
coalescing / shared memory / barrier
3 步2 个例子2 道练习6
36 · Tensor shape、stride 与 GEMM 分块
tensor / stride / GEMM / tiling
3 步2 个例子2 道练习6
37 · HIP:从 CPU 数据到一次 kernel 调用
amd / C++20 / 工作原理
3 步2 个例子2 道练习6
38 · Streams 与 events:用依赖组织异步工作
amd / C++20 / 工作原理
3 步2 个例子2 道练习6
39 · ROCm 各层:一次请求由谁负责
amd / C++20 / 工作原理
3 步2 个例子2 道练习6
40 · HIP Reduction:从正确性到 profiling 问题
amd / C++20 / 工作原理
3 步2 个例子2 道练习6
41 · Tensix 与 tiles:先安排数据,再安排计算
tenstorrent / C++20 / 工作原理
3 步2 个例子2 道练习6
42 · TTNN 与 Metalium:不同抽象保留同一份数学合同
tenstorrent / C++20 / 工作原理
3 步2 个例子2 道练习6
43 · Reader、compute、writer:缓冲区里的生产与消费
tenstorrent / C++20 / 工作原理
3 步2 个例子2 道练习6
44 · Tenstorrent 端到端例子:让每一层对同一结果负责
tenstorrent / C++20 / 工作原理
3 步2 个例子2 道练习6
45 · WSE 与 PE:把数据放在拥有它的计算节点旁边
cerebras / C++20 / 工作原理
3 步2 个例子2 道练习6
46 · CSL 与 host:装载、启动、回读是一份共同合同
cerebras / C++20 / 工作原理
3 步2 个例子2 道练习6
47 · 多PE scan:消息里到底应该传什么
cerebras / C++20 / 工作原理
3 步2 个例子2 道练习6
48 · 功能模型、simulator 与硬件:分别证明什么
cerebras / C++20 / 工作原理
3 步2 个例子2 道练习6
49 · AST、IR 与 SSA:同一个表达式的三种表示
compiler / C++20 / 工作原理
3 步2 个例子2 道练习6
50 · 优化首先要合法:别名、溢出与浮点重排
compiler / C++20 / 工作原理
3 步2 个例子2 道练习6
51 · Tensor lowering 与内存规划:值什么时候可以共用一块空间
compiler / C++20 / 工作原理
3 步2 个例子2 道练习6
52 · ABI、装载与 runtime:找到函数还不等于能安全调用
compiler / C++20 / 工作原理
3 步2 个例子2 道练习6

从覆盖主题到真正练会

当前路线包含 78 个学习单元,其中 35 个用于基础教材、M1 与 G0,3 个用于系统、网络和 IR 补授。任务、图解和参考答案都不能代替独立作业的实际验收。

vector、归约、矩阵、时间线、缓存行、kernel 索引与 TCP 另有可改变输入的机制实验。图中逻辑结果可以测试,真实设备的调度与性能仍须对应环境验证。

应用训练另有 12 套追问与强弱答案对照12 套求职工作坊24 个厂商进阶实践。先用分级诊断决定从哪里补课,实际通过 G0 再进入主项目。