MapFlow

PUBLIC LEARNING ROADMAP

C++ 后端开发工程师技能树 学习技能树

由 Skill Tree Engine 确定性生成的只读快照

36 个知识节点 · intermediate

发布者:rongyan

知识目录

基础概念

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 分钟

学习目标

  • 整合所学能力完成完整项目
  • 掌握后端工程化实践
  • 形成可展示的成果
  • 为入职面试提供项目支撑

关键概念

  • 项目架构
  • 并发服务
  • 数据库集成
  • 性能调优
  • 工程化

为什么学习

  • 综合项目是整合所有能力、向面试与入职交付出成果的关键里程碑

如何检验理解

  • 能独立完成一个整合网络、并发、数据库与性能优化的后端服务并说明架构
  • 能通过该项目展示简历与面试中的能力

前置关系与知识联系

结合互动地图查看具体关系类型,再选择下一步。