基础概念
C++基础语法与语言入门
从零掌握变量、数据类型、控制流、函数、数组等基础写法,建立编译-运行循环,是零基础者的唯一起跑点
建议预留 90 分钟
学习目标
- 掌握基础类型、变量作用域与控制结构
- 建立文件-编译-运行的最小工作流
关键概念
- 变量与基本类型
- 控制流
- 函数
- 数组
为什么学习
- 目标要求独立编写正确C++代码,语法必须达到能熟练书写并解释每行的程度
如何检验理解
- 在不查资料下写出并运行一个含分支循环与数组操作的单文件程序
- 能逐行解释自己代码中每个声明与控制流的作用
基础概念
Git与版本控制入门
掌握clone/commit/branch/merge,用于管理个人项目作品并与远程仓库协作,是工程化与读开源的基础
建议预留 60 分钟
学习目标
- 掌握git日常提交与回退操作
- 理解分支与远程仓库工作流
关键概念
- commit
- branch
- merge
- remote
为什么学习
- 目标要求产出可管理、可提交的项目作品并阅读开源代码,Git是基础工具需能熟练操作
如何检验理解
- 能对一个真实目录完成init/commit/分支/合并操作
- 能从GitHub成功clone并提交一次改动
核心技能
类与对象基础
学习封装、构造析构、访问控制、this指针等OOP核心概念,是所有面向对象编程的根基
建议预留 120 分钟
学习目标
- 掌握类的定义、构造析构与封装
- 理解this指针与对象生命周期
关键概念
- 封装
- 构造函数
- 析构函数
- this
为什么学习
- 工程与面试都要求熟练运用类设计,需能在小项目中靠手工正确写出类
如何检验理解
- 能独立写出含构造/析构/封装的类并解释生命周期
- 能通过类正确管理一个简单资源对象
核心技能
编译工具链与CMake基础
理解g++编译流程、头文件与编译单元分工、链接及CMake,支撑后续中小型项目构建
建议预留 60 分钟
学习目标
- 掌握g++多文件编译与常见选项
- 掌握CMake最小项目搭建
关键概念
- 编译单元
- 链接
- 头文件
- CMake
为什么学习
- 构建工具为标配,目标要求能独立构建中小型项目产物
如何检验理解
- 能用单条g++命令编译多文件到可执行文件
- 能写一个构建单个目标的CMakeLists并运行成功
核心技能
指针、引用与内存管理基础
掌握指针/引用/new-delete与对象生命周期,是理解后续资源管理与定位内存问题的地基
建议预留 90 分钟
学习目标
- 掌握指针/引用与new-delete配对
- 理解堆栈与对象作用域生命周期
关键概念
- 指针
- 引用
- new/delete
- 堆栈分配
为什么学习
- 目标把指针安全与内存管理列为必修,需在概念上彻底搞清指针引用的本质区别
如何检验理解
- 能解释指针与引用的区别并正确选型
- 能识别堆/栈上对象的生命周期差异
核心技能
C++11核心特性总览(auto/nullptr/范围for)
掌握auto、decltype、nullptr、范围for等语言现代化基础,是后续一切现代C++写法前提
建议预留 75 分钟
学习目标
- 掌握auto/decltype类型推导
- 掌握nullptr与范围for
关键概念
- auto
- decltype
- nullptr
- 范围for
为什么学习
- 现代特性是目标熟练项,需在代码中主动改用modern写法
如何检验理解
- 能自动用auto与范围for改写旧式代码
- 能解释nullptr相对NULL的优势
补充知识
文件输入输出与流处理
学习iostream与文件流基本用法,便于写出读文件/写日志的后端命令行小工具
建议预留 60 分钟
学习目标
- 掌握ifstream/ofstream基本读写
- 掌握格式化输出
关键概念
- iostream
- 文件流
- 格式化
为什么学习
- 项目需文件读写但非核心难点,掌握基本文件流操作即可
如何检验理解
- 能用文件流读写一个文本配置文件并验证结果
核心技能
模板编程基础与模板推导
学习函数/类模板与参数推导,是理解STL容器底层泛型机制与面试的基础
建议预留 120 分钟
学习目标
- 掌握函数/类模板与推导规则
- 理解特化与偏特化契机
关键概念
- 函数模板
- 类模板
- 模板推导
- 特化
为什么学习
- STL与泛型是现代C++核心,需理解模板实例化与推导机制以读懂容器源码
如何检验理解
- 能写一个可复用的模板函数并解释实例化过程
- 能为常见类型编写简单的类模板
核心技能
const与constexpr编译期求值
掌握const语义与constexpr,理解编译期常量,是面试内存与只读语义的高频考点
建议预留 75 分钟
学习目标
- 掌握const的各类修饰语义
- 理解constexpr编译期求值
关键概念
- const
- constexpr
- 只读语义
为什么学习
- const语义是语言机理与面试必考,需要理解其编译期/运行期含义
如何检验理解
- 能正确写出const成员函数并解释语义
- 区分constexpr编译期与const运行期求值
核心技能
Alignment、内存布局与对象表示
理解对象大小、对齐、结构体内存布局与位域,是面试语言底层机理与内存优化的考点
建议预留 60 分钟
学习目标
- 理解对象大小与内存布局
- 掌握对齐与位域场景
关键概念
- 内存对齐
- 对象表示
- 位域
为什么学习
- 目标要求掌握虚表/内存布局等底层机理用于面试,需理解struct对齐与对象表示
如何检验理解
- 能预测并验证一个结构体sizeof与内存offset
- 能解释对象对齐可能引入的内存空洞
补充知识
命名空间与控制流代码组织
学习头文件原则、using声明与代码分层实践,帮助写出可读可维护的工程代码
建议预留 60 分钟
学习目标
- 掌握头文件包含与防御式声明
- 理解命名空间组织
关键概念
- 命名空间
- 头文件原则
- include guard
为什么学习
- 代码规范与可读性是软性要求,需掌握头文件与命名空间的良好组织习惯
如何检验理解
- 能合理划分声明/定义/实现分层并说明理由
基础概念
操作系统基础(进程线程/虚拟内存/堆栈)
了解进程与线程、虚拟内存、堆栈区别,是理解C++运行时内存行为与并发基础
建议预留 60 分钟
学习目标
- 理解进程线程与虚拟内存
- 理解堆栈与地址空间概念
关键概念
- 进程
- 线程
- 虚拟内存
- 堆栈
为什么学习
- 目标建议了解OS概念以加深对程序与内存运行的理解,达入门应用级别即可
如何检验理解
- 能解释进程与线程、堆与栈的区别
- 能结合内存分配理解程序崩溃的可能原因
核心技能
GDB调试与Valgrind/ASan入门
掌握GDB断点/单步/查看变量与内存,配合Valgrind与ASan检查,定位崩溃与越界
建议预留 90 分钟
学习目标
- 掌握GDB断点、单步、查看变量
- 掌握ASan等sanitizer构建与报告解读
关键概念
- GDB断点
- 单步执行
- AddressSanitizer
- Valgrind
为什么学习
- 调试工具链是目标必修成熟工具,需能在真实崩溃现场熟练用GDB与sanitizer定位
如何检验理解
- 能用GDB对一个崩溃程序设断点并查看变量定位根因
- 能用ASan/Valgrind跑出一个程序并指出越界报告
核心技能
右值引用与移动语义
理解左/右值、移动构造、移动赋值、std::move与完美转发,是理解STL高效与拷贝控制核心
建议预留 120 分钟
学习目标
- 掌握左/右值与移动构造
- 理解std::move与完美转发意图
关键概念
- 右值引用
- 移动语义
- std::move
- 完美转发
为什么学习
- 移动语义是现代C++性能与面试核心依赖,需理解其原理并能在自制类中运用
如何检验理解
- 能解释std::move与拷贝的区别
- 能判断值语义下何时发生移动以提升效率
核心技能
STL标准库容器
熟练vector/list/deque/map/unordered_map等容器与迭代器失效规则,是STL能力地图核心
建议预留 120 分钟
学习目标
- 掌握各容器特性与复杂度对比
- 掌握迭代器失效与元素删除安全写法
关键概念
- vector
- map/unordered_map
- 迭代器失效
- 复杂度
为什么学习
- STL熟练是本目标最高优先级之一,需达到针对场景秒选容器并规避失效的正确运用
如何检验理解
- 能据访问/插入场景选出合适容器并解释复杂度
- 能写出代码规避vector/list迭代器失效问题
核心技能
lambda表达式与函数对象
学习lambda捕获、泛型lambda与std::function回调,是STL算法与事件回调的常用手段
建议预留 90 分钟
学习目标
- 掌握lambda捕获列表与语法
- 掌握std::function封装回调
关键概念
- lambda捕获
- 泛型lambda
- std::function
为什么学习
- 现代C++常写lambda传参,需掌握捕获语义避免悬垂问题
如何检验理解
- 能正确写出捕获特定作用域的lambda并传给算法
- 能解释引用捕获导致悬垂的场景
核心技能
多态、虚函数与运行期类型识别
掌握继承体系、虚表、override/final与dynamic_cast,是OOP三大特性与面试重灾考点
建议预留 110 分钟
学习目标
- 掌握虚函数与多态实现
- 掌握纯虚函数与运行期类型识别
关键概念
- 虚函数表
- override
- dynamic_cast
- 抽象基类
为什么学习
- 面向对象设计与语言机理双重要求,需理解虚函数实现原理并能合理设计继承
如何检验理解
- 能以基类指针实现多态并可解释虚表机制
- 能用override/final正确约束派生类
核心技能
RAII与现代智能指针
掌握unique/shared/weak_ptr与RAII资源管理范式,是文档化避免内存泄漏的核心武器
建议预留 120 分钟
学习目标
- 掌握RAII与unique/shared/weak指针
- 理解智能指针所有权与循环引用
关键概念
- RAII
- unique_ptr
- shared_ptr
- weak_ptr
为什么学习
- 目标把内存泄漏定位列为必修,智能指针熟练是其直接解法
如何检验理解
- 能用三类智能指针重构一段裸指针new/delete代码
- 能指出循环引用场景并改用weak_ptr
核心技能
运算符重载与拷贝控制规则
掌握五大特殊成员函数、移动赋值与Rule of Zero/Five,是深拷贝浅拷贝面试点核心
建议预留 90 分钟
学习目标
- 掌握五大特殊成员函数生成规则
- 掌握Rule of Zero/Five实践
关键概念
- 拷贝/移动构造
- Rule of Zero
- 深拷贝浅拷贝
- 运算符重载
为什么学习
- 拷贝控制是语言机理与面试必考,需按Rule of Zero/Five设计正确类
如何检验理解
- 能据成员类型判断应采用的Rule of Zero或Five
- 能写出自制类的复制与移动重载并测对
核心技能
STL算法库与函数式组合
掌握<algorithm>排序/查找/变换与lambda组合,用标准库替代手写循环提升代码质量
建议预留 90 分钟
学习目标
- 掌握常用算法库调用
- 掌握算法与lambda组合惯用法
关键概念
- 排序查找
- transform
- sort/upper_bound
- 函数式组合
为什么学习
- STL算法运用是熟练项,需能把常见任务映射到标准算法并组合lambda
如何检验理解
- 能用algorithm对容器完成排序、查找、过滤并输出
- 能把典型手写循环改写为算法+lambda组合
补充知识
标准库基础组件(string/chrono等)
掌握string、chrono、utility等常用组件,是日常后端开发高频工具
建议预留 60 分钟
学习目标
- 掌握string与chrono常用API
- 理解utility工具组件用途
关键概念
- std::string
- chrono
- std::pair/tuple
为什么学习
- 这些组件随实战自然习得,掌握基础API用于写代码即可,非难点
如何检验理解
- 能写出处理字符串与计时计费的片段代码
- 能熟练对std::string做拼接与查找转换操作
核心技能
数据结构与基础算法(STL落地)
用手写并用STL容器还原链表、栈、树、哈希及排序,具备复杂度分析能力
建议预留 180 分钟
学习目标
- 掌握线性表、树、哈希与排序实现
- 掌握时空复杂度分析方法
关键概念
- 链表
- 二叉树
- 哈希表
- 复杂度分析
为什么学习
- 数据结构与算法为目标必修领域,需在面向面试与项目时手写并能分析复杂度
如何检验理解
- 能用STL容器或手写还原链表/二叉树遍历并分析复杂度
- 能在项目里为数据选择合适的数据结构
核心技能
开源代码阅读方法论
学会从GitHub下项目、读README、理目录、精读核心模块并借助文档调试理解他人代码
建议预留 120 分钟
学习目标
- 掌握开源项目阅读与拆解流程
- 掌握借助调试与文档读懂代码的方法
关键概念
- README分析
- 目录结构
- 示例驱动
- 按核心模块精读
为什么学习
- 看懂开源代码是明确里程碑,需有一整套筛选/精读/调试的方法并实践
如何检验理解
- 能选定一个开源库并讲清其目录结构与核心模块流程
- 能为某开源项目的最小编译构建并跑通它的示例
补充知识
模板元编程与type_traits概览
概览enable_if、type_traits与可变参数模板,仅达能读懂开源高级模板即可
建议预留 90 分钟
学习目标
- 认识type_traits与enable_if常见写法
- 了解SFINAE出现于源码时如何理解
关键概念
- type_traits
- enable_if
- SFINAE
为什么学习
- 元编程偏进阶与读源码需要,目标仅为能看懂而非主动编写,降到识别级
如何检验理解
- 能大致读懂一段enable_if约束了的调用处意图
核心技能
异常安全与错误处理
理解try/catch、noexcept与异常安全级别,写出稳健程序并权衡返回值与异常
建议预留 75 分钟
学习目标
- 掌握try/catch与noexcept
- 理解异常安全级别与策略
关键概念
- 异常抛出捕获
- noexcept
- 事务式回滚
为什么学习
- 目标要求异常/错误处理稳健,需掌握抛出捕获与资源清理的权衡选择
如何检验理解
- 能编写带异常回滚的资源管理函数
- 能解释返回值与异常在不同场景的取舍
核心技能
C++17特性(结构化绑定/optional/string_view)
掌握结构化绑定、optional、string_view与变长模板等C++17写法,写出更现代安全的代码
建议预留 100 分钟
学习目标
- 掌握结构化绑定与if初始化
- 掌握optional/variant/string_view
关键概念
- 结构化绑定
- std::optional
- std::string_view
为什么学习
- 现代特性为目标熟练项且是当前通用开发的常见写法,需能主动应用
如何检验理解
- 能用optional与string_view重构旧接口并减少隐患
- 能顺手使用结构化绑定遍历容器
核心技能
内存泄漏与指针错误定位实战
面向悬空/野/空指针与double-free/dangling,用ASan针对型修复泄漏与越界,形成防御习惯
建议预留 120 分钟
学习目标
- 掌握典型指针错误的成因与识别
- 掌握用扫描工具定位并修复泄漏
关键概念
- 悬空指针
- double-free
- ASan报告
- 内存泄漏定位
为什么学习
- 目标把识别并修复指针问题与内存泄漏定位判为熟练核心,是本路径定海神针节点
如何检验理解
- 能在程序中制造并逐类指出悬空/野/double-free根因
- 能用ASan/Valgrind找出内存泄漏并修复至报告清零
补充知识
单元测试与可测性设计
了解GoogleTest基本用法并为核心逻辑编写简单单测验证正确性
建议预留 90 分钟
学习目标
- 掌握GoogleTest断言与用例组织
- 理解可测性设计思想
关键概念
- GoogleTest
- TEST/TEST_F
- 断言
- 依赖注入
为什么学习
- 测试属于合理掌握项,达能为核心纯函数写单测验证即可
如何检验理解
- 能用GoogleTest给一个函数写断言并跑绿
- 能拆分接口使核心逻辑可脱离副作用测试
核心技能
面试高频考点系统梳理
汇总虚表/const与static/拷贝控制/STL容器选型/内存模型等考点并形成清晰口头表述
建议预留 150 分钟
学习目标
- 串起虚表/const/static等机理考点
- 形成STL与内存面试答题框架
关键概念
- 虚函数表
- const/static语义
- STL选型
- 内存模型
为什么学习
- 面试表述是明确目标,需把散落机理知识点串成能条理化讲清的口试体系
如何检验理解
- 能脱稿讲清虚函数表与多态内存布局
- 能就STL选型与拷贝控制给出结构化面试回答
核心技能
并发与多线程基础
掌握std::thread/mutex/lock_guard/条件变量与async,理解数据竞争死锁基本问题
建议预留 120 分钟
学习目标
- 掌握std::thread与互斥锁RAII
- 理解数据竞争与死锁基本概念
关键概念
- std::thread
- mutex
- lock_guard
- 竞态与死锁
为什么学习
- 目标对并发定位为入门级推荐,达会用RAII锁写出无数据竞争的小并发即可
如何检验理解
- 能改用lock_guard保护共享数据并避免裸锁
- 能识别一处竞态并说明死锁成因
核心技能
独立完成中小型C++实战项目作品
从需求拆解、模块设计到编码构建,完整产出一个可运行命令行/后端工具并以CMake交付Git仓库
建议预留 600 分钟
学习目标
- 掌握需求拆解与模块划分
- 闭环运用CMake+STL+智能指针+测试产出作品
关键概念
- 需求分析
- 模块设计
- 工程交付
- 作品Demo
为什么学习
- 完整项目作品是目标最终验收物,需综合运用STL/内存/算法/构建/测试迁移至真实需求
如何检验理解
- 产出一个可独立运行并文档齐备的CMake项目并被demo演示
- 项目能在ASan下0泄漏0越界并通过git提交可复现
前置关系与知识联系
- C++17特性(结构化绑定/optional/string_view) → 独立完成中小型C++实战项目作品
- 指针、引用与内存管理基础 → RAII与现代智能指针
- 右值引用与移动语义 → 运算符重载与拷贝控制规则
- C++基础语法与语言入门 → 指针、引用与内存管理基础
- 模板编程基础与模板推导 → lambda表达式与函数对象
- RAII与现代智能指针 → 并发与多线程基础
- C++11核心特性总览(auto/nullptr/范围for) → C++17特性(结构化绑定/optional/string_view)
- 指针、引用与内存管理基础 → 操作系统基础(进程线程/虚拟内存/堆栈)
- 多态、虚函数与运行期类型识别 → 面试高频考点系统梳理
- STL标准库容器 → 数据结构与基础算法(STL落地)
- 模板编程基础与模板推导 → STL标准库容器
- 运算符重载与拷贝控制规则 → 单元测试与可测性设计
- 类与对象基础 → 多态、虚函数与运行期类型识别
- STL算法库与函数式组合 → C++17特性(结构化绑定/optional/string_view)
- 类与对象基础 → 运算符重载与拷贝控制规则
- STL标准库容器 → 标准库基础组件(string/chrono等)
- 异常安全与错误处理 → 并发与多线程基础
- 右值引用与移动语义 → RAII与现代智能指针
- 指针、引用与内存管理基础 → 模板编程基础与模板推导
- 指针、引用与内存管理基础 → GDB调试与Valgrind/ASan入门
- RAII与现代智能指针 → 异常安全与错误处理
- 模板编程基础与模板推导 → 模板元编程与type_traits概览
- Alignment、内存布局与对象表示 → 面试高频考点系统梳理
- 开源代码阅读方法论 → 独立完成中小型C++实战项目作品
- 编译工具链与CMake基础 → GDB调试与Valgrind/ASan入门
- RAII与现代智能指针 → 内存泄漏与指针错误定位实战
- 数据结构与基础算法(STL落地) → 独立完成中小型C++实战项目作品
- C++基础语法与语言入门 → 文件输入输出与流处理
- 运算符重载与拷贝控制规则 → 面试高频考点系统梳理
- C++11核心特性总览(auto/nullptr/范围for) → const与constexpr编译期求值
- C++基础语法与语言入门 → C++11核心特性总览(auto/nullptr/范围for)
- const与constexpr编译期求值 → 多态、虚函数与运行期类型识别
- 指针、引用与内存管理基础 → Alignment、内存布局与对象表示
- 内存泄漏与指针错误定位实战 → 独立完成中小型C++实战项目作品
- 多态、虚函数与运行期类型识别 → 开源代码阅读方法论
- 模板编程基础与模板推导 → 右值引用与移动语义
- Git与版本控制入门 → 开源代码阅读方法论
- 指针、引用与内存管理基础 → 右值引用与移动语义
- STL标准库容器 → STL算法库与函数式组合
- C++基础语法与语言入门 → Alignment、内存布局与对象表示
- lambda表达式与函数对象 → STL算法库与函数式组合
- C++基础语法与语言入门 → 编译工具链与CMake基础
- C++基础语法与语言入门 → 类与对象基础
- 模板编程基础与模板推导 → 单元测试与可测性设计
- 指针、引用与内存管理基础 → 异常安全与错误处理
- C++基础语法与语言入门 → 模板编程基础与模板推导
- 右值引用与移动语义 → 模板元编程与type_traits概览
- C++11核心特性总览(auto/nullptr/范围for) → lambda表达式与函数对象
- GDB调试与Valgrind/ASan入门 → 内存泄漏与指针错误定位实战
结合互动地图查看具体关系类型,再选择下一步。