00 · 使用指南:怎么学这套资料
定位:这是《C++ 实习面试备战》的姊妹项目——C++ 之外,游戏客户端/引擎岗一面还会从操作系统、计算机网络、图形学抽题。本项目只讲面经里反复出现的高频考点,不追求无死角覆盖;学法和 C++ 库完全一致。 学完标准:三门各能撑起 10 分钟的连环追问;图形学两章对引擎向岗位是必选项。主线六章之外,连环追问已经写进正文:死锁与 futex、Reactor/Proactor、NAT 打洞与可靠 UDP、三种剔除、菲涅尔与 IBL。面试当天早上过一遍晨读速查。
一、章节地图与优先级
Section titled “一、章节地图与优先级”| 章 | 主题 | 优先级 | 说明 |
|---|---|---|---|
| 01 进程线程与内存 | 操作系统 | ★★★ | 虚拟内存、地址空间、死锁、futex、缓存行 |
| 02 IO 多路复用与零拷贝 | 操作系统 | ★★☆(服务器向 ★★★) | epoll 三兄弟 + 零拷贝 + Reactor/Proactor |
| 03 TCP 与 UDP | 计算机网络 | ★★★ | UDP、NAT、可靠 UDP、帧同步/状态同步 |
| 04 HTTP/HTTPS 与 Socket | 计算机网络 | ★★☆ | TLS + 从 URL 到页面 + socket 编程 |
| 05 渲染管线与空间变换 | 图形学 | ★★★(引擎向必考) | 管线、剔除、重心坐标、四元数 |
| 06 光照阴影与后处理 | 图形学 | ★★★(引擎向)/ ★★☆(客户端向) | PBR / 菲涅尔 / IBL / 阴影 / TAA |
| 晨读速查 | 工具 | 面试当天 | 六章金句压成一页,不替代正文 |
建议顺序:01→02→03→04(OS+网络一组)和 05→06(图形学一组),两组可互换;总预算 6~8 天。引擎方向优先保证 05/06。
二、每章的学习闭环(和 C++ 库一样)
Section titled “二、每章的学习闭环(和 C++ 库一样)”- 精读正文:对比表 + 面试金句 + 代码骨架,别跳「面试金句」——那是答案的骨架。
- 章末自测(每章 10 题):合上书在答题区写,写完自动保存(本地服务运行时同步到
notes/我的作答记录.md)。 - 自评打分(❌/🟡/✅),然后找私教说一句「处理 XX 章精批」——逐题判定 + 标准答案 + 采分点 + 记忆钩子 + 追问预演。
- 卡住就写进右下角「疑问收件箱」:落盘到
notes/疑问收件箱.md,私教统一解答。 - 每天 10 分钟:刷题卡片 随机抽 Q&A。面试当天早上先过 晨读速查。
三、与 C++ 库的衔接(重要)
Section titled “三、与 C++ 库的衔接(重要)”正文里提到的 两位数章节编号(如「02 章 大小端」「09 章线程同步」「11 章分配器」「12/13 章数学与管线」)指的都是 《C++ 实习面试备战》库的章节(那边端口 8480)。这些引用是刻意的:三门课的很多考点和 C++ 八股是同一张图的两面——
| 本项目 | C++ 库对应章 | 呼应点 |
|---|---|---|
| 01 虚拟内存 / malloc | 02 内存模型 / 11 分配器 | 虚拟地址↔内存分区;malloc↔引擎自研分配器 |
| 01 线程与协程 | 09 并发 | 线程同步原语 ↔ 内核 futex 视角 |
| 02 epoll | 09 线程池 | 网络线程 ↔ 任务系统 |
| 03 UDP 协议设计 | 02 内存对齐→字节序 / 21(若并入) | 长度前缀、字节序转换 |
| 05/06 管线 | 12 数学 / 13 渲染概念 | MVP↔变换矩阵;管线↔DrawCall |
交叉着复习,两边互相加固。
四、文件结构(给未来的你)
Section titled “四、文件结构(给未来的你)”notes/— 内容真源。00 使用指南,01 到 06 六章,07 晨读速查,外加作答记录和疑问收件箱。web/— Astro + Starlight 站点。构建产物在web/dist。tools/—build_site.py把笔记迁进站点。local-server.bat开 8481,并同步作答和收件箱。
改了内容后:python tools/build_site.py && cd web && npm run build(或直接让私教跑)。
- 打开 01 进程线程与内存 开始读;
- 读完做章末自测 → 说「处理 01 章精批」;
- C++ 库那边的主线(12/13 游戏专项)继续并行,互不干扰。