基础概念
C++ 环境搭建与编译运行
安装编译器与IDE,编写第一个程序,理解编译-链接-运行流程,作为整个学习路径的地基
建议预留 30 分钟
学习目标
- 安装并配置g++/Clang编译环境
- 编写并编译运行第一个C++程序
关键概念
- 编译器
- 链接
- main函数
- 编译流程
为什么学习
- 需要能独立搭建环境并运行程序,后续所有C++练习都依赖此能力
如何检验理解
- 能在命令行编译运行一个含main的C++程序
基础概念
变量、数据类型与输入输出
基本数据类型、变量声明、cin/cout。因已有C基础可快速过,重点掌握C++风格的IO与类型安全
建议预留 45 分钟
学习目标
- 掌握C++常用数据类型与作用域
- 熟练使用cin/cout与格式化输出
关键概念
- 基本数据类型
- cin/cout
- 常量字面量
- 类型转换
为什么学习
- 学习者已有C语法基础,仅需掌握C++与C不同的IO与类型表达方式
如何检验理解
- 能使用cin/cout完成交互式输入输出程序
核心技能
Linux 环境与命令行
掌握Linux常用命令、文件系统、进程管理和基本shell,是服务端开发的必备运行环境
建议预留 90 分钟
学习目标
- 掌握文件操作与权限管理命令
- 掌握进程查看与管理的常用命令
- 能编写简单shell脚本
关键概念
- 文件系统
- 进程管理
- shell脚本
- 权限
为什么学习
- 后端开发几乎都在Linux上进行,需要熟练掌握命令行操作
如何检验理解
- 能熟练用命令浏览文件、查看进程、管理权限并执行基本shell脚本
核心技能
Git 版本控制与协作
掌握Git工作流、分支、合并与代码评审协作流程,是团队开发的基础工具
建议预留 90 分钟
学习目标
- 掌握clone/commit/branch/merge操作
- 理解常见Git协作工作流
- 能解决合并冲突
关键概念
- 分支
- 提交
- 合并冲突
- 远程仓库
为什么学习
- 入职后一切代码协作都基于Git,需要熟练日常操作与协作流程
如何检验理解
- 能创建分支、提交修改、解决冲突并发起合并请求
基础概念
运算符与表达式
算术、逻辑、位运算符与优先级。C基础已覆盖大部分,快速巩固C++新增语法即可
建议预留 45 分钟
学习目标
- 掌握运算符优先级与结合性
- 熟练使用位运算进行高效操作
关键概念
- 算术运算符
- 位运算符
- 优先级
- 短路求值
为什么学习
- 运算符与C基本一致,基于已有C基础快速过即可
如何检验理解
- 能写出使用各类运算符且优先级正确的表达式
核心技能
CMake 工程构建
掌握CMake编写与Makefile理解,管理多文件工程与依赖,是后端大型项目的构建标准
建议预留 120 分钟
学习目标
- 掌握CMakeLists.txt基本语法
- 能组织多文件与库的构建
- 理解链接第三方依赖
关键概念
- CMakeLists
- target
- 库依赖
- 生成器
为什么学习
- 目标要求熟练CMake构建,后端项目均用CMake组织多文件工程
如何检验理解
- 能用CMake搭建一个含多源码目录的C++工程并生成可执行文件
基础概念
控制流语句
条件分支与循环、break/continue。与C一致,快速巩固后进入函数与数据结构
建议预留 60 分钟
学习目标
- 熟练使用if/switch与循环
- 理解break/continue作用
关键概念
- 条件分支
- 循环
- break/continue
为什么学习
- 控制流与C完全相同,基于C基础快速巩固即可
如何检验理解
- 能编写含分支与循环的完整逻辑程序
基础概念
函数基础与重载
函数定义、参数传递、返回值、函数重载与默认参数。从C过渡到C++的关键差异点
建议预留 90 分钟
学习目标
- 掌握值/引用/指针传参的区别
- 掌握函数重载与默认参数
- 理解返回值语义
关键概念
- 参数传递
- 函数重载
- 默认参数
- 引用
为什么学习
- 函数是代码组织核心,需理解C++与C在参数传递和重载上的差异
如何检验理解
- 能写出使用引用参数和默认参数并正确重载的函数
核心技能
数组与 std::string
一维/多维数组与C风格字符串、std::string常用操作,重点掌握标准字符串类型
建议预留 90 分钟
学习目标
- 掌握数组与C字符串使用
- 熟练std::string常用方法
- 理解字符串与容器关系
关键概念
- 数组
- std::string
- C风格字符串
- 字符串操作
为什么学习
- 数组与C一致可快速过,但std::string是后端高频容器需重点掌握
如何检验理解
- 能用std::string完成字符串拼接、查找与替换等操作
基础概念
作用域与存储期
局部/全局变量、static/extern存储期、命名空间、const。理解编译单元与链接
建议预留 60 分钟
学习目标
- 掌握static/extern语义
- 理解命名空间组织
- 掌握const使用
关键概念
- 作用域
- 存储期
- 命名空间
- const
为什么学习
- 理解变量生命周期与命名空间是写出健壮后端代码的基础
如何检验理解
- 能解释static/extern变量的存储与作用域并正确使用命名空间
基础概念
结构体与自定义类型
struct、enum、typedef/using别名。C基础已掌握,快速巩固C++差异
建议预留 45 分钟
学习目标
- 掌握struct与enum
- 掌握using/typedef别名
关键概念
- struct
- enum
- 类型别名
为什么学习
- 结构体是C基础已有知识,快速巩固后作为理解class的前置
如何检验理解
- 能定义并使用struct与enum自定义类型
核心技能
文件输入输出
fstream读写文本与二进制文件、流状态管理,后端处理数据文件的基础
建议预留 60 分钟
学习目标
- 掌握fstream读写操作
- 理解流状态与错误处理
关键概念
- fstream
- 文件读写
- 流状态
为什么学习
- 后端常需读写配置文件与数据文件,需掌握文件流操作
如何检验理解
- 能读写文本与二进制文件并正确处理流状态
核心技能
指针与动态内存管理
指针、new/delete、指针与数组关系,为智能指针与对象生命周期奠基
建议预留 120 分钟
学习目标
- 掌握指针与数组/引用关系
- 理解new/delete内存管理
- 识别内存泄漏风险
关键概念
- 指针
- 动态内存
- new/delete
- 堆与栈
为什么学习
- 内存管理是C++后端面试与开发核心,需深入理解指针与手动内存风险
如何检验理解
- 能正确使用new/delete并解释内存泄漏与悬垂指针问题
核心技能
预处理与编译链接机制
头文件组织、宏、分离编译、编译链接过程,后端工程排错的关键底层知识
建议预留 90 分钟
学习目标
- 掌握头文件与分离编译
- 理解编译-链接-运行全过程
- 掌握宏与条件编译
关键概念
- 预处理
- 编译链接
- 头文件
- 符号解析
为什么学习
- 理解编译链接能解决后端工程中的头文件与链接错误问题
如何检验理解
- 能解释编译与链接各阶段并定位常见链接错误
核心技能
数据库原理与应用
MySQL关系型数据库与Redis缓存的存储、索引、事务与基本操作,后端必备领域知识
建议预留 120 分钟
学习目标
- 掌握MySQL基本SQL与表设计
- 理解索引与事务机制
- 掌握Redis基本用法与缓存场景
关键概念
- MySQL
- 索引
- 事务
- Redis
- 缓存
为什么学习
- 目标要求熟练数据库,后端业务几乎都依赖MySQL与Redis
如何检验理解
- 能建表、编写SQL并解释索引与事务的基本原理
核心技能
面向对象:类与对象
class、成员函数、访问控制、this、构造函数与析构,实现现代C++封装的核心
建议预留 120 分钟
学习目标
- 掌握class定义与访问控制
- 掌握构造函数与析构函数
- 理解this指针与对象模型
关键概念
- class
- 构造函数
- 析构函数
- this指针
- 封装
为什么学习
- 面向对象设计是目标要求,类与对象是一切OOP与RAII的基石
如何检验理解
- 能设计含构造/析构及访问控制的类并说明对象生命周期
核心技能
模板与泛型编程
函数模板、类模板、模板推导与非类型参数,是STL与泛型设计的核心
建议预留 120 分钟
学习目标
- 掌握函数模板与类模板
- 理解模板实例化与推导
- 掌握非类型模板参数
关键概念
- 函数模板
- 类模板
- 模板推导
- 泛型
为什么学习
- 目标要求模板与泛型,面试高频且是理解STL实现的前提
如何检验理解
- 能编写可复用的泛型模板并解释模板实例化机制
核心技能
gcc/gdb 编译调试
使用gcc/g++编译选项与gdb断点调试、定位崩溃与内存问题,工程排错必备
建议预留 90 分钟
学习目标
- 掌握gcc编译选项
- 掌握gdb调试命令与断点
- 能定位段错误与逻辑错误
关键概念
- gcc
- gdb
- 断点
- 调用栈
- 段错误
为什么学习
- 目标要求gcc/gdb编译调试,线上定位与开发期排错都依赖此技能
如何检验理解
- 能用gdb打断点、查看调用栈并定位崩溃原因
核心技能
面向对象:继承与多态
虚函数、抽象类、运行时多态、基类派生类转换,设计模式与框架的基础
建议预留 120 分钟
学习目标
- 掌握继承体系与访问控制
- 掌握虚函数与运行时多态
- 理解虚表与基类转换
关键概念
- 继承
- 虚函数
- 多态
- 抽象类
- 虚表
为什么学习
- 多态是面向对象设计的核心,后端框架大量使用虚函数与接口抽象
如何检验理解
- 能设计含虚函数的多态体系并解释虚表机制
补充知识
运算符重载与拷贝语义
运算符重载、友元、拷贝构造与赋值,掌握对象复制语义基础
建议预留 60 分钟
学习目标
- 掌握运算符重载语法
- 理解拷贝构造与赋值语义
关键概念
- 运算符重载
- 友元
- 拷贝构造
- 复制语义
为什么学习
- 后端不常手写重载,但拷贝语义是理解移动语义与性能的地基
如何检验理解
- 能正确重载运算符并实现拷贝构造与赋值
补充知识
异常处理
try/catch/throw、栈展开、noexcept与异常安全,稳健后端代码的保障
建议预留 60 分钟
学习目标
- 掌握try/catch/throw
- 理解栈展开与noexcept
- 理解异常安全
关键概念
- 异常
- 栈展开
- noexcept
- 异常安全
为什么学习
- 理解异常与RAII结合的异常安全机制是写出稳健服务的关键
如何检验理解
- 能编写异常安全的代码并解释栈展开过程
核心技能
STL 概述与迭代器
STL六大组件、迭代器分类与算法容器衔接,理解标准库设计
建议预留 60 分钟
学习目标
- 理解STL六大组件
- 掌握迭代器分类与使用
关键概念
- STL
- 迭代器
- 容器
- 算法
为什么学习
- STL是后端开发核心工具,需理解迭代器与六大组件的关系
如何检验理解
- 能解释STL组件架构并使用迭代器遍历容器
核心技能
Lambda 与仿函数
匿名函数、捕获列表、std::function,配合STL算法实现函数式编程
建议预留 60 分钟
学习目标
- 掌握lambda语法与捕获列表
- 理解仿函数与std::function
- 能结合STL算法使用lambda
关键概念
- lambda
- 捕获列表
- 仿函数
- std::function
为什么学习
- Lambda在STL算法与回调中高频使用,是简洁后端代码的必备技能
如何检验理解
- 能使用lambda配合算法完成变换与谓词过滤
核心技能
智能指针与 RAII
unique_ptr、shared_ptr、weak_ptr、循环引用与RAII资源管理,现代C++内存安全核心
建议预留 90 分钟
学习目标
- 掌握三种智能指针的区别
- 理解RAII资源管理
- 识别并解决循环引用
关键概念
- unique_ptr
- shared_ptr
- weak_ptr
- RAII
- 循环引用
为什么学习
- 目标要求专家级内存管理,智能指针与RAII是避免泄漏的关键
如何检验理解
- 能正确选择智能指针管理资源并避免循环引用
核心技能
网络编程基础 (socket/TCP)
TCP/UDP、socket编程、阻塞与并发服务器模型,后端高并发服务的地基
建议预留 120 分钟
学习目标
- 掌握TCP/UDP与socket API
- 理解三次握手与连接管理
- 实现并发服务器
关键概念
- socket
- TCP/UDP
- 并发模型
- 三次握手
为什么学习
- 目标要求熟练网络编程,是服务端开发的最核心技能之一
如何检验理解
- 能用socket实现一个能处理多连接并正确收发数据的服务器
核心技能
STL 顺序容器
vector、deque、list、forward_list、array与string的特点与选择
建议预留 120 分钟
学习目标
- 掌握vector与list的内部机制
- 理解各顺序容器适用场景
关键概念
- vector
- deque
- list
- 迭代器失效
为什么学习
- 顺序容器是后端数据组织的核心,需按场景正确选用
如何检验理解
- 能根据增删改查场景选择合适容器并解释原因
核心技能
STL 关联与无序容器
set/map、unordered系列,红黑树与哈希原理,用于高效查找与索引
建议预留 120 分钟
学习目标
- 掌握set/map与unordered系列
- 理解红黑树与哈希表原理
- 掌握其复杂度特性
关键概念
- set/map
- unordered
- 红黑树
- 哈希表
- 复杂度
为什么学习
- 关联容器用于高效查找,理解底层结构对性能优化重要
如何检验理解
- 能选用合适关联容器并解释其查找复杂度与哈希冲突处理
核心技能
右值引用与移动语义
std::move、完美转发、移动构造与移动赋值,实现资源零拷贝转移
建议预留 120 分钟
学习目标
- 理解左值右值与std::move
- 掌握移动构造与移动赋值
- 理解完美转发
关键概念
- 右值引用
- std::move
- 移动语义
- 完美转发
为什么学习
- 移动语义是性能优化与内存管理专家要求的关键,能显著减少拷贝
如何检验理解
- 能实现移动构造并解释std::move何时避免拷贝
核心技能
STL 算法库
排序、查找、变换等泛型算法,与lambda和容器结合,实现高效数据处理
建议预留 120 分钟
学习目标
- 掌握常用STL算法
- 能结合lambda与迭代器使用算法
- 理解算法与容器的解耦
关键概念
- 泛型算法
- 排序
- 查找
- 变换
- 迭代器适配
为什么学习
- 熟悉STL算法避免手写轮子,是高效数据处理的核心能力
如何检验理解
- 能用STL算法库完成排序、查找、变换等数据处理任务
核心技能
现代 C++ 特性
auto、范围for、nullptr、constexpr、结构化绑定、if constexpr等11/14/17/20新特性
建议预留 120 分钟
学习目标
- 掌握auto与范围for
- 掌握constexpr与结构化绑定
- 掌握if constexpr等现代特性
关键概念
- auto
- constexpr
- 结构化绑定
- if constexpr
- nullptr
为什么学习
- 目标要求专家级现代C++特性,是现代后端代码的日常常用语法
如何检验理解
- 能用auto、范围for、结构化绑定等新特性重构旧代码
核心技能
性能优化与内存分析
复杂度分析、缓存友好性、内存泄漏检测、profile工具,目标要求熟练性能优化
建议预留 90 分钟
学习目标
- 掌握复杂度分析
- 掌握内存泄漏检测工具
- 理解缓存友好与性能调优
关键概念
- 复杂度
- 缓存友好
- profiler
- 内存泄漏
- 调优
为什么学习
- 后端强调高性能低延迟,需掌握分析与优化手段
如何检验理解
- 能用profiler定位热点并用工具检测内存泄漏
- 能分析并优化代码复杂度
核心技能
多线程与并发编程
std::thread、互斥量、条件变量、原子操作、线程池,高并发后端核心
建议预留 120 分钟
学习目标
- 掌握std::thread与线程池
- 掌握互斥量与条件变量
- 掌握原子操作与线程安全
关键概念
- 线程
- 互斥量
- 条件变量
- 原子操作
- 死锁
为什么学习
- 目标要求熟练多线程并发,是所有高并发服务的技术基础
如何检验理解
- 能编写线程安全的并发程序并正确使用锁与条件变量
核心技能
设计模式与代码组织
常见设计模式在C++中的应用与项目结构,目标要求入门级掌握
建议预留 90 分钟
学习目标
- 掌握单例/工厂/观察者等模式
- 理解模式在框架中的应用
关键概念
- 设计模式
- 单例
- 工厂
- 观察者
- 代码组织
为什么学习
- 设计模式在服务端框架中广泛应用,是阅读与复用专业代码的基础
如何检验理解
- 能识别并在项目中应用常见设计模式组织代码
核心技能
单元测试 (GTest)
GTest框架、测试用例编写与CI集成,保障代码质量与回归安全
建议预留 90 分钟
学习目标
- 掌握GTest断言与Test Fixture
- 写出有效测试用例
- 理解测试在CI中的作用
关键概念
- GTest
- 测试用例
- 断言
- Test Fixture
- CI
为什么学习
- 掌握单元测试与自动化是目标要求,企业开发与线上稳定性依赖测试
如何检验理解
- 能用GTest为关键函数编写并运行单元测试
核心技能
IO 多路复用与高并发模型
epoll/select、事件驱动、高并发服务器模型,支撑服务端高并发能力
建议预留 120 分钟
学习目标
- 掌握epoll/select原理
- 理解事件驱动与Reactor模型
- 实现高并发IO服务器
关键概念
- epoll
- select
- 事件驱动
- Reactor
- 高并发
为什么学习
- IO多路复用是后端上亿级连接与高并发的关键技术,目标要求熟练
如何检验理解
- 能用epoll实现高并发IO事件处理并能比较select/epoll差异
核心技能
综合项目实战
综合运用C++核心、并发、网络、数据库与性能优化开发完整后端服务,检验综合能力
建议预留 240 分钟
学习目标
- 整合所学能力完成完整项目
- 掌握后端工程化实践
- 形成可展示的成果
- 为入职面试提供项目支撑
关键概念
- 项目架构
- 并发服务
- 数据库集成
- 性能调优
- 工程化
为什么学习
- 综合项目是整合所有能力、向面试与入职交付出成果的关键里程碑
如何检验理解
- 能独立完成一个整合网络、并发、数据库与性能优化的后端服务并说明架构
- 能通过该项目展示简历与面试中的能力
前置关系与知识联系
- 现代 C++ 特性 → 单元测试 (GTest)
- 右值引用与移动语义 → 性能优化与内存分析
- C++ 环境搭建与编译运行 → Linux 环境与命令行
- 智能指针与 RAII → 多线程与并发编程
- 预处理与编译链接机制 → gcc/gdb 编译调试
- 面向对象:类与对象 → 运算符重载与拷贝语义
- 作用域与存储期 → 指针与动态内存管理
- 数组与 std::string → 指针与动态内存管理
- 运算符重载与拷贝语义 → 右值引用与移动语义
- C++ 环境搭建与编译运行 → 变量、数据类型与输入输出
- Linux 环境与命令行 → gcc/gdb 编译调试
- 右值引用与移动语义 → 现代 C++ 特性
- 结构体与自定义类型 → 面向对象:类与对象
- 单元测试 (GTest) → 综合项目实战
- 面向对象:类与对象 → 异常处理
- 函数基础与重载 → Lambda 与仿函数
- 智能指针与 RAII → 性能优化与内存分析
- 控制流语句 → 函数基础与重载
- Linux 环境与命令行 → CMake 工程构建
- 文件输入输出 → 数据库原理与应用
- 数组与 std::string → 文件输入输出
- 模板与泛型编程 → STL 概述与迭代器
- 指针与动态内存管理 → 模板与泛型编程
- STL 关联与无序容器 → STL 算法库
- 模板与泛型编程 → 右值引用与移动语义
- 作用域与存储期 → 预处理与编译链接机制
- 函数基础与重载 → 作用域与存储期
- 数组与 std::string → 结构体与自定义类型
- 模板与泛型编程 → Lambda 与仿函数
- C++ 环境搭建与编译运行 → Git 版本控制与协作
- 面向对象:继承与多态 → 设计模式与代码组织
- 现代 C++ 特性 → 多线程与并发编程
- 现代 C++ 特性 → 设计模式与代码组织
- 面向对象:类与对象 → 网络编程基础 (socket/TCP)
- 面向对象:类与对象 → 面向对象:继承与多态
- C++ 环境搭建与编译运行 → 预处理与编译链接机制
- 多线程与并发编程 → IO 多路复用与高并发模型
- STL 概述与迭代器 → STL 顺序容器
- STL 顺序容器 → STL 关联与无序容器
- Lambda 与仿函数 → 现代 C++ 特性
- 指针与动态内存管理 → 面向对象:类与对象
- 运算符与表达式 → 控制流语句
- 指针与动态内存管理 → 智能指针与 RAII
- 面向对象:类与对象 → 智能指针与 RAII
- 性能优化与内存分析 → 综合项目实战
- 设计模式与代码组织 → 综合项目实战
- 变量、数据类型与输入输出 → 运算符与表达式
- 函数基础与重载 → 单元测试 (GTest)
- IO 多路复用与高并发模型 → 综合项目实战
- 网络编程基础 (socket/TCP) → IO 多路复用与高并发模型
- 多线程与并发编程 → 综合项目实战
- 控制流语句 → 数组与 std::string
- STL 概述与迭代器 → STL 算法库
结合互动地图查看具体关系类型,再选择下一步。