00 · 学习路线图(两个月完整版)
🌐 在线学习站(推荐):https://cpp-interview-prep.pages.dev —— 手机也能学,带搜索/答题/刷题卡片/进度追踪。 🖥 离线阅读版:双击 交互阅读器;
.md为内容源,改完跑tools\update.bat。
适用对象:有 C++ 基础但不清楚自己盲区、2 个月内要投游戏开发/引擎实习的同学。 核心思路:语言八股打底(第1-6周)→ 游戏专项扫盲(第7周)→ 算法+综合冲刺(第8周)。 每天投入 2~3 小时即可,重在“能讲出来”,不在“看过就算”。
一、先搞清楚:游戏岗 C++ 面试考什么
Section titled “一、先搞清楚:游戏岗 C++ 面试考什么”大厂游戏开发/引擎岗(含实习)的面试权重大概是:
| 考察项 | 占比 | 说明 |
|---|---|---|
| C++ 语言八股 | 50% | 编译链接、内存、指针、类、虚函数、STL、模板、并发、新特性 |
| 手撕代码 | 20~30% | 笔试/面试现场写题,算法题 + 少量系统设计(如线程池、单例) |
| 游戏/引擎常识 | 10~15% | 游戏循环、ECS、渲染管线概念、UE/Unity 机制(问的是概念不是实现) |
| 项目经历 | 10% | 怎么把项目讲清楚,含游戏相关的亮点 |
结论:C++ 八股是绝对大头,也是你现阶段最该砸时间的。游戏专项部分按你的要求做到“概念清楚、能说出 1-2 句亮点”即可。
二、八周总规划
Section titled “二、八周总规划”第 1 周:编译链接 + 内存模型 + 指针引用
Section titled “第 1 周:编译链接 + 内存模型 + 指针引用”- 02 编译链接与内存模型(编译四阶段、静态/动态库、内存分区、内存对齐、大小端)
- 03 指针引用与内存管理(指针/引用区别、new vs malloc、智能指针三兄弟、循环引用、内存泄漏)
- 产出:能画出“从 .cpp 到可执行文件”流程图;能手写 shared_ptr 的循环引用示例并解释 weak_ptr 解法
第 2 周:类与对象 + 继承多态
Section titled “第 2 周:类与对象 + 继承多态”- 04 类与对象(构造/析构顺序、拷贝/赋值/移动、初始化列表、深拷贝、explicit)
- 05 继承多态与虚函数(虚表机制、多态原理、菱形继承、虚继承、抽象类)
- 产出:能手画虚函数表示意图;能回答“为什么析构要虚”“空类为什么是 1 字节”
第 3 周:STL 容器
Section titled “第 3 周:STL 容器”- 06 STL容器与迭代器(各容器底层结构、扩容机制、迭代器失效、选择依据)
- 产出:一张“容器特性对照表”;能把 vector 扩容、map 底层红黑树、unordered_map 哈希讲清楚
第 4 周:模板 + 现代 C++(11 核心)
Section titled “第 4 周:模板 + 现代 C++(11 核心)”- 07 模板与泛型(模板机制、特化/偏特化、SFINAE、enable_if、可变参数模板)
- 08 现代C++新特性:C++11 部分(auto/decltype、右值引用、移动语义、完美转发、lambda、nullptr、constexpr、智能指针)
- 产出:能手写完美转发代码;能解释“为什么 std::move 不是移动”
第 5 周:现代 C++(14/17/20)+ 并发入门
Section titled “第 5 周:现代 C++(14/17/20)+ 并发入门”- 08 现代C++新特性:14/17/20 部分(结构化绑定、if constexpr、fold 表达式、concepts、协程、三向比较)
- 09 并发与多线程:线程/互斥/锁/死锁
- 产出:能讲清“协程 vs 线程”;能手写死锁并说明如何避免
第 6 周:并发进阶 + 设计模式 + 性能
Section titled “第 6 周:并发进阶 + 设计模式 + 性能”- 09 并发与多线程:condition_variable、atomic/内存序、线程池、单例线程安全
- 10 设计模式与工程实践(单例/工厂/观察者/状态/命令/对象池)
- 11 性能优化进阶(缓存友好、虚函数开销、内存池)
- 产出:能手写线程安全单例(C++11 magic static 版);能说出游戏里为什么用对象池/ECS
第 7 周:游戏/引擎专项(概念扫盲,不写代码)
Section titled “第 7 周:游戏/引擎专项(概念扫盲,不写代码)”- 12 游戏开发专项概念(游戏循环、固定/可变步长、数学基础、ECS、碰撞、空间分区)
- 13 游戏引擎专项概念(渲染管线、DrawCall、UE 的 UObject/反射/GC、Unity 的 Mono/IL2CPP)
- 产出:能对着面试官把“游戏主循环”和“ECS 优点”各讲 1 分钟
第 8 周:手撕代码 + 综合冲刺 + 模拟面试
Section titled “第 8 周:手撕代码 + 综合冲刺 + 模拟面试”- 14 高频手撕代码题库(排序/链表/树/DP/滑动窗口等)
- 15 高频八股题库合集(全库快速过一遍,卡壳的回去补对应章节)
- 16 项目梳理与面试策略(简历话术、项目怎么讲)
- 至少 2 次模拟面试(让我帮你模拟,或者你对着墙讲)
三、每日学习法(每天 2~3 小时)
Section titled “三、每日学习法(每天 2~3 小时)”0:00-0:30 复习:把前一天学的高频题 Q&A 快速过一遍(不看答案讲)0:30-2:00 学新章节:读核心知识 → 看代码例子 → 读高频题 Q&A2:00-2:30 输出:合上文档,把今天学到的一个考点讲给自己听/写笔记/画图三条铁律:
- 输出为主:能讲出来才算会。每章末尾自测是底线,每周日做一次“合书复述”。
- 追本溯源:不要死记答案,每道八股题要能说出“为什么”(比如内存对齐是为了 CPU 访问效率)。
- 标记盲区:做题时把“不会/半会不会”的题目记下来,第二天第一件事优先补。
四、各章 ↔ 高频面试题对照(学完看表自查)
Section titled “四、各章 ↔ 高频面试题对照(学完看表自查)”| 章节 | 学完你应该能秒答的代表题 |
|---|---|
| 02 | 编译四阶段?静态/动态库区别?全局变量放哪?sizeof 怎么算内存对齐?大小端怎么判断? |
| 03 | 指针与引用区别?new/malloc 区别?shared_ptr 循环引用?野指针怎么避免? |
| 04 | 构造析构顺序?拷贝/移动什么时候触发?初始化列表为什么快?空类大小?explicit 干嘛用? |
| 05 | 虚表怎么组织的?多态为什么不生效的情况?菱形继承怎么解决?析构为什么必须虚? |
| 06 | vector 扩容机制?map 为什么用红黑树?unordered_map 冲突怎么解决?迭代器失效? |
| 07 | 模板实例化时机?函数模板能偏特化吗?SFINAE 是什么?怎么展开参数包? |
| 08 | move 是做什么的?完美转发?lambda 捕获原理?constexpr vs const?C++20 有哪些新东西? |
| 09 | 死锁四条件?lock_guard vs unique_lock?虚假唤醒?内存序?线程池? |
| 10 | 单例的线程安全实现?观察者/状态/命令在游戏里的应用?对象池为什么省内存? |
| 11 | 虚函数有性能开销吗?什么是缓存友好?怎么定位性能瓶颈? |
| 12 | 游戏主循环?固定 vs 可变步长?ECS 优缺点?四元数为什么用? |
| 13 | 什么是 DrawCall?怎么减少?UE 的 UObject/反射/GC?Unity IL2CPP vs Mono? |
| 14 | 快排/链表反转/最长回文子串/二叉树遍历/背包问题…… |
| 15 | 全部八股的浓缩版本,用于最后冲刺 |
| 16 | 项目怎么讲才加分?被问“你最大难点”怎么答? |
五、进阶提示(面试官爱追问的方向)
Section titled “五、进阶提示(面试官爱追问的方向)”- 会一道题 ≠ 会一类题:比如问完 shared_ptr,一定会追问“weak_ptr 原理”“循环引用”“线程安全吗”“make_shared 和 new 的区别”。对应章节都写了,务必看完 Q&A 全部追问。
- 游戏岗会考“C++ 在游戏里的实际应用”:内存池/对象池、ECS 数据布局、多线程 job system、缓存友好——这些在第 10/11/12 章都有,属于加分项,别跳过。
- 手撕代码注意基本功:笔试白板题经常考“手写智能指针”“手写字符串类”“手写线程池”,第 14 章专门收录了。
六、考前最后一周检查清单
Section titled “六、考前最后一周检查清单”- 能不看资料讲完
15-高频八股题库合集里的 80% 以上 - 手写代码:排序、链表反转、二分、BFS/DFS、背包、字符串类 各能 15 分钟内写完
- 游戏专项:能各讲 1 分钟“游戏循环”“ECS”“渲染管线概念”
- 项目:有 2~3 个可讲的项目/练习,每个能讲 3 分钟含亮点与难点
- 简历:投递前发我帮你看一遍
- 完成过 1~2 次模拟面试(找我)
进度记录(每周日更新):
- 资料库:07~16 章节文档已补齐(2026-08-13),学习尚未开始
- 第1周:
02/03已通读(用户自述“做完了”)- 第2周:
04已通读;05已完成自测 → 精批见05文档 9.1 节(5、9 题知识性错误已修正,7、10 题需补完整)- 第3周:
- 第4周:
- 第5周:
- 第6周:
- 第7周:
- 第8周: