Skip to content
Gains Summary
Main Navigation 首页 / Home
C++ 编程 / C++ Programming
系统与高性能 / Systems & Performance
Web 开发 / Web Development
人工智能 / Artificial Intelligence
工业软件 / Industrial Software
其他内容 / Other Topics
C++ 编程 / C++系统与性能 / SystemsWeb 开发 / Web人工智能 / AI工业软件 / Industrial

外观

Sidebar Navigation

← 其他内容 / Other Topics

项目实践 / Projects

CWFrame 项目 / CWFrame Project

1. 计算机宇宙探索器 / Computer Universe Explorer

2. CWFrame v0.1 26/3/25 前端渲染逻辑总结 / CWFrame Frontend Rendering Architecture Review

3. 🛡️ Computer-WorldFrame 项目技术面试指南 / A Technical Interview Guide for the Computer-World Frame Project

项目经历 / Project Experience

C++ 项目 / C++ Projects

1. C++ 技能要求列表 / C++ Skills and Competency Requirements

DHAttack 案例 / DHAttack Case Study

1. 某评估仿真系统主控平台项目总结 / Master Control Platform Project for an Evaluation and Simulation System

StructKernelBench 案例 / StructKernelBench Case Study

1. StructKernelBench:面向结构仿真的 CPU/GPU 核心算子优化实验平台 / A CPU-GPU Structural Simulation Kernel Optimization Platform

本页目录

C++ 技能要求列表 / C++ Skills and Competency Requirements ​

建议存放路径:E:\Github\Gains-Summary\Profile\C++\C++技能要求列表.md
本文档用于维护 C++ 方向的长期技能路线、学习清单、项目补强方向和简历表达。
当前个人定位建议:C++ 工程软件 / 工业软件 / 跨平台系统开发方向。


1. 当前 C++ 路线定位 ​

结合已有项目经历,当前不建议把 C++ 简单定位为“会 Qt 客户端开发”,而应定位为:

C++ 工程软件开发方向,重点覆盖 Qt 跨平台桌面端、工业软件主控平台、进程资源监控、TCP 通信、VTK/CAE 可视化和求解器集成。

已有经历中较有价值的关键词包括:

  • C++
  • Qt
  • Windows 11 / CentOS
  • TCP Socket
  • 心跳检测
  • 多进程管理
  • 子系统调度
  • 进程资源监控
  • CPU / 内存 / 磁盘读写监控
  • 权限组管理
  • INI 配置文件
  • VTK
  • CAE 后处理
  • 求解器集成
  • 工业软件 / 科研软件

2. C++ 技术栈总览 ​

C++ 技术栈可以按照以下层级理解:

text
C++ 语言基础
    ↓
现代 C++ 与内存管理
    ↓
STL 与泛型编程
    ↓
多线程与并发编程
    ↓
操作系统与系统编程
    ↓
网络编程
    ↓
工程化与构建体系
    ↓
领域方向:工业软件 / CAE / Qt / VTK / HPC / 后端 / 嵌入式
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

对于当前个人发展而言,最重要的主线是:

text
C++ 基础
    ↓
对象生命周期 / RAII / 智能指针
    ↓
多线程 / 线程池 / 并发控制
    ↓
Linux & Windows 系统编程
    ↓
TCP Socket / 心跳检测 / 状态同步
    ↓
Qt 跨平台桌面工程
    ↓
VTK / CAE / 工业软件可视化
    ↓
求解器集成 / 仿真平台 / 主控系统
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

3. 技能分层要求 ​

3.1 Level 1:C++ 基础语法与面向对象 ​

这是所有 C++ 岗位的基础,必须能熟练回答面试问题。

必须掌握 ​

  • 基本语法:指针、引用、const、static、inline、宏定义、命名空间、作用域、生命周期。
  • 面向对象:类与对象、构造函数、析构函数、拷贝构造、赋值运算符重载、继承、多态、虚函数、纯虚函数、抽象类、虚析构函数。
  • C++ 对象模型:虚函数表、虚函数指针、对象内存布局、多态实现原理。
  • 函数相关:函数重载、默认参数、内联函数、友元函数、运算符重载。

面试高频问题 ​

  • 指针和引用的区别是什么?
  • const 修饰指针时有哪些情况?
  • static 在局部变量、全局变量、类成员中分别有什么作用?
  • 构造函数和析构函数的调用顺序是什么?
  • 为什么基类析构函数通常要写成虚函数?
  • 虚函数和纯虚函数的区别是什么?
  • 多态是怎么实现的?
  • 深拷贝和浅拷贝有什么区别?
  • 拷贝构造函数和赋值运算符有什么区别?

学习目标 ​

熟悉 C++ 基础语法、面向对象编程、虚函数机制和对象生命周期,能够独立编写结构清晰的 C++ 类与模块。


3.2 Level 2:现代 C++ 与内存管理 ​

这一层是 C++ 区别于 Java、Python、JavaScript 的核心能力之一。

必须掌握 ​

  • 内存区域:栈区、堆区、全局区、静态区、常量区、代码区。
  • 内存申请与释放:new/delete、new[]/delete[]、malloc/free 及其区别。
  • 常见内存问题:内存泄漏、野指针、悬空指针、重复释放、越界访问、未初始化内存。
  • RAII:构造函数申请资源,析构函数释放资源,用对象生命周期管理文件、Socket、锁、线程等资源。
  • 智能指针:unique_ptr、shared_ptr、weak_ptr、引用计数、循环引用。
  • 移动语义:左值、右值、右值引用、std::move、移动构造、移动赋值。
  • 现代 C++ 特性:auto、decltype、nullptr、lambda、范围 for、enum class、constexpr、noexcept。

面试高频问题 ​

  • new/delete 和 malloc/free 的区别是什么?
  • 什么是 RAII?为什么 C++ 中很重要?
  • unique_ptr、shared_ptr、weak_ptr 有什么区别?
  • shared_ptr 的循环引用怎么解决?
  • 什么是右值引用?
  • std::move 真的会移动对象吗?
  • 拷贝构造和移动构造有什么区别?
  • 什么情况下会发生内存泄漏?
  • 如何排查内存泄漏?

工程价值 ​

  • 避免内存泄漏。
  • 合理管理对象生命周期。
  • 减少裸指针滥用。
  • 使用 RAII 管理文件、Socket、锁、线程等资源。
  • 写出更安全的 C++ 工程代码。

简历表达 ​

熟悉 C++ 对象生命周期、RAII 机制和智能指针使用,能够在工程开发中规避内存泄漏、悬空指针和重复释放等常见问题。


3.3 Level 3:STL 与泛型编程 ​

STL 是 C++ 工程中最常用的标准库能力,面试也经常考底层原理。

必须掌握 ​

  • 顺序容器:vector、deque、list、array。
  • 关联容器:set、map、multiset、multimap。
  • 无序容器:unordered_set、unordered_map。
  • 容器适配器:stack、queue、priority_queue。
  • 迭代器:迭代器类型、迭代器失效。
  • 算法库:sort、find、lower_bound、upper_bound、accumulate、for_each。
  • 函数对象与 lambda。
  • 模板基础:函数模板、类模板、模板特化、模板偏特化。
  • 泛型编程思想。

面试高频问题 ​

  • vector 和 list 的区别是什么?
  • vector 扩容机制是什么?
  • map 和 unordered_map 的区别是什么?
  • map 底层为什么通常是红黑树?
  • unordered_map 底层哈希冲突如何处理?
  • 什么情况下会发生迭代器失效?
  • sort 的底层大致是什么?
  • 模板和普通函数有什么区别?
  • 模板特化有什么作用?

简历表达 ​

熟悉 STL 常用容器、迭代器和算法库,了解 vector、map、unordered_map 等容器的底层特性及适用场景。


3.4 Level 4:多线程与并发编程 ​

这一层对 C++ 后端、高性能计算、工业软件、仿真系统、桌面软件都很重要。

必须掌握 ​

  • 线程基础:std::thread、join、detach、线程生命周期。
  • 互斥锁:std::mutex、std::recursive_mutex、std::timed_mutex。
  • RAII 锁管理:std::lock_guard、std::unique_lock。
  • 条件变量:std::condition_variable、等待与唤醒、虚假唤醒。
  • 原子操作:std::atomic、原子变量、内存序初步了解。
  • 线程安全问题:数据竞争、竞态条件、死锁、活锁、饥饿。
  • 生产者消费者模型。
  • 线程安全队列。
  • 线程池:工作线程、任务队列、任务提交、条件变量唤醒、优雅停止、异步结果返回。
  • 异步任务:std::future、std::promise、std::async、packaged_task。

面试高频问题 ​

  • 进程和线程的区别是什么?
  • 多线程为什么会有数据竞争?
  • mutex 的作用是什么?
  • lock_guard 和 unique_lock 的区别是什么?
  • 条件变量为什么要和锁一起使用?
  • 什么是虚假唤醒?
  • 如何避免死锁?
  • atomic 和 mutex 的区别是什么?
  • 线程池的基本原理是什么?
  • 如何实现一个简单线程池?
  • 线程池如何优雅退出?
  • 生产者消费者模型如何实现?

推荐小项目:C++ 轻量级线程池 ​

项目目标:

实现一个基于 C++11/14 的轻量级线程池,支持任务提交、任务队列调度、工作线程复用、异步结果获取和优雅停止。

核心模块:

text
ThreadPool
    ├── worker threads
    ├── task queue
    ├── mutex
    ├── condition_variable
    ├── submit()
    ├── future result
    └── graceful shutdown
1
2
3
4
5
6
7
8

简历表达:

实现基于 C++11 的轻量级线程池,支持任务提交、工作线程复用、任务队列调度和异步结果获取,降低频繁创建线程带来的性能开销。


3.5 Level 5:操作系统与系统编程 ​

这一层与你的“评估仿真系统主控平台”项目高度相关。

必须掌握 ​

  • 进程基础:进程概念、PID、PPID、进程状态、父子进程、僵尸进程、孤儿进程。
  • Linux 进程相关:fork、exec、wait、waitpid、kill、signal 信号、/proc 文件系统。
  • Windows 进程相关:WinAPI 基础、进程句柄、进程查询、进程终止。
  • 文件系统:文件读写、目录遍历、文件权限、文件锁。
  • IPC 进程间通信:管道、命名管道、共享内存、消息队列、Socket。
  • 系统资源监控:CPU 使用率、内存占用、磁盘读写、网络 IO、采样周期、差分计算。
  • 跨平台适配:#ifdef __linux__、_WIN32、平台相关代码封装、统一接口设计。

与已有项目的对应关系 ​

已有主控系统项目已经涉及:

  • 子系统进程启动
  • 子系统进程终止
  • 启动前残留进程检测
  • 通过进程名称识别历史进程
  • 获取进程 ID
  • 监控 CPU / 内存 / 磁盘读写
  • Windows 11 与 CentOS 跨平台适配
  • Linux 进程清理风险
  • 主系统对子系统生命周期管理

面试高频问题 ​

  • 进程和线程的区别是什么?
  • Linux 下 kill 的本质是什么?
  • 什么是信号?
  • 什么是僵尸进程?
  • 什么是孤儿进程?
  • Linux 下如何查看进程资源占用?
  • /proc 文件系统有什么作用?
  • 只根据进程名称 kill 进程有什么风险?
  • Windows 和 Linux 在进程管理上有什么差异?
  • 如何设计一个跨平台进程管理模块?
  • CPU 使用率为什么不是简单读取一个值,而通常需要计算?

简历表达 ​

具备 Windows / Linux 跨平台系统开发经验,能够基于操作系统接口实现进程查询、进程终止、进程级 CPU/内存/磁盘读写监控等功能。


3.6 Level 6:网络编程 ​

你的项目中已经涉及 TCP 和心跳检测,后续要补扎实。

必须掌握 ​

  • 网络基础:OSI 七层模型、TCP/IP 四层模型、IP、端口、Socket。
  • TCP:三次握手、四次挥手、可靠传输、流式协议、粘包、拆包、半连接队列、TIME_WAIT、CLOSE_WAIT。
  • UDP:无连接、不可靠传输、适用场景。
  • Socket 编程:server socket、client socket、bind、listen、accept、connect、send、recv。
  • IO 模型:阻塞 IO、非阻塞 IO、select、poll、epoll。
  • 心跳机制:心跳包、超时检测、断线识别、断线重连、状态同步。
  • 协议设计:消息头、消息体、长度字段、类型字段、状态码、时间戳、错误码。

与已有项目的对应关系 ​

已有主控系统项目中:

  • 主系统与五个子系统建立 TCP 连接。
  • 主系统通过心跳检测判断子系统健康状态。
  • 子系统异常退出后,主系统能够显示异常信息。
  • 主界面展示五个子系统中有几个正在运行。

面试高频问题 ​

  • TCP 和 UDP 的区别是什么?
  • TCP 为什么可靠?
  • TCP 三次握手过程是什么?
  • TCP 四次挥手过程是什么?
  • 什么是 TCP 粘包?
  • 如何解决粘包问题?
  • 心跳机制的作用是什么?
  • 心跳间隔如何设计?
  • 如何判断连接断开?
  • 如何实现断线重连?
  • select、poll、epoll 的区别是什么?

推荐小项目:TCP 心跳监控 Demo ​

项目目标:

实现一个 TCP Server 与多个 TCP Client 的健康监控系统,支持心跳包、超时检测、断线重连、状态展示和简单协议解析。

简历表达:

实现轻量级 TCP 心跳监控 Demo,支持多客户端连接、心跳包检测、超时断连识别和连接状态管理,加深对 TCP 长连接与状态同步机制的理解。


3.7 Level 7:Qt 跨平台桌面开发 ​

这是你已有项目中最直接的技术栈,但要避免只停留在“会做界面”。

必须掌握 ​

  • Qt 基础:QWidget、QMainWindow、QDialog、QPushButton、QLabel、QTableWidget、QTreeWidget、QStackedWidget。
  • 信号与槽:signal、slot、connect、自定义信号、Lambda 连接。
  • Qt 对象模型:QObject、父子对象、自动释放机制、元对象系统。
  • Qt 事件机制:event、eventFilter、paintEvent、closeEvent。
  • Qt 多线程:QThread、moveToThread、线程间信号槽。
  • Qt 网络:QTcpServer、QTcpSocket。
  • Qt 进程管理:QProcess。
  • Qt 配置:QSettings、INI 配置文件。
  • Qt 模型视图:Model/View、TableView、TreeView。
  • Qt 样式:QSS、自定义控件。
  • 跨平台打包:Windows 打包、Linux 部署、动态库依赖。

与已有项目的对应关系 ​

已有主控平台中涉及:

  • 登录界面
  • 主界面
  • 五个子系统入口按钮
  • 权限管理入口
  • 子系统运行状态展示
  • 资源监控看板
  • 子系统详情页
  • 颜色状态标识
  • INI 配置读取
  • TCP 连接
  • 进程管理

面试高频问题 ​

  • Qt 信号槽机制是什么?
  • Qt 的父子对象机制有什么作用?
  • Qt 中如何避免界面卡顿?
  • QThread 如何正确使用?
  • Qt 中如何做跨线程 UI 更新?
  • QProcess 有什么作用?
  • QSettings 如何读取 INI?
  • Qt 如何实现 TCP 通信?
  • QWidget 和 QML 的区别是什么?
  • Qt 跨平台开发需要注意什么?

简历表达 ​

熟悉 Qt 桌面端开发,掌握信号槽机制、Qt 对象模型、QSettings 配置管理、QProcess 进程调用和 QTcpSocket 通信,具备 Windows / Linux 跨平台桌面软件开发经验。


3.8 Level 8:工程化与构建体系 ​

很多学生会写 C++ 功能,但不会组织 C++ 工程。工程化能力会明显提升项目含金量。

必须掌握 ​

  • 构建系统:CMake、Makefile、qmake。
  • 编译链接:预处理、编译、汇编、链接、头文件、静态库、动态库、链接错误。
  • 调试工具:GDB、LLDB、Visual Studio Debugger、Qt Creator Debugger。
  • 性能分析:perf、gprof、Valgrind。
  • 内存检查:AddressSanitizer、LeakSanitizer、Valgrind Memcheck。
  • 单元测试:Google Test、Catch2。
  • 日志系统:spdlog、log4cpp、自定义日志。
  • 代码规范:clang-format、clang-tidy。
  • 包管理:vcpkg、Conan。
  • CI/CD:GitHub Actions、自动构建、自动测试、多平台构建。

面试高频问题 ​

  • C++ 从源码到可执行文件经历哪些阶段?
  • 静态库和动态库有什么区别?
  • 头文件重复包含怎么解决?
  • CMake 中 target_link_libraries 是做什么的?
  • Debug 和 Release 有什么区别?
  • 如何排查链接错误?
  • 如何定位内存泄漏?
  • 如何做 C++ 单元测试?
  • 日志系统在工程中的作用是什么?

简历表达 ​

了解 C++ 工程化开发流程,掌握 CMake/qmake 构建、Debug 调试、日志记录、配置文件管理和跨平台依赖处理,能够组织和维护中小型 C++ 工程项目。


3.9 Level 9:VTK / CAE / 工业软件方向 ​

这是你当前最有辨识度的领域方向之一。

必须掌握 ​

  • CAE 基础概念:前处理、求解器、后处理、网格、节点、单元、场量、标量场、矢量场。
  • 后处理功能:模型读取、结果读取、云图显示、等值面、切片、流线、变形显示、动画。
  • VTK 基础:vtkRenderer、vtkRenderWindow、vtkActor、vtkMapper、vtkPolyData、vtkUnstructuredGrid、vtkLookupTable、vtkScalarBarActor。
  • 三维交互:旋转、平移、缩放、选择、拾取。
  • Qt + VTK 集成:QVTKOpenGLNativeWidget、Qt 界面嵌入 VTK 渲染窗口。
  • 渲染与性能:数据规模、渲染效率、内存占用、多线程加载、大模型可视化优化。

与已有项目的对应关系 ​

你已有经历:

  • 参与某研究所公司 CAE 软件后处理部分。
  • 参与部分渲染功能开发。
  • 参与测试工作。
  • 技术栈为 Qt / C++ / VTK。

面试高频问题 ​

  • CAE 前处理、求解器、后处理分别是什么?
  • CAE 后处理主要展示什么结果?
  • VTK 的渲染流程是什么?
  • vtkActor、vtkMapper、vtkRenderer 的关系是什么?
  • Qt 如何集成 VTK?
  • 三维渲染中如何显示云图?
  • 大规模模型渲染可能遇到什么性能问题?
  • 后处理测试主要关注什么?

简历表达 ​

具备 CAE 软件后处理开发经验,参与基于 Qt/C++/VTK 的三维渲染功能开发与测试,了解工程仿真软件中模型显示、结果后处理和可视化交互的基本流程。


3.10 Level 10:高性能计算与求解器方向 ​

如果后续继续接触求解器,可以逐渐往这一层深入。

需要了解 ​

  • 数值计算基础:线性代数、矩阵运算、稀疏矩阵、迭代法、优化算法。
  • 并行计算:OpenMP、MPI、CUDA、SIMD。
  • 常用库:Eigen、BLAS、LAPACK、PETSc、Trilinos。
  • 求解器集成:命令行调用、DLL/SO 动态库集成、文件输入输出、Socket 调用、进度监控、结果解析、异常处理。
  • 性能优化:内存布局、缓存友好、并行加速、IO 优化。

与已有项目的对应关系 ​

已有主控平台后期参与了求解器集成,但目前还需要继续补充:

  • 求解器输入输出格式
  • 求解器调用方式
  • 求解器运行状态监控方式
  • 结果解析方式
  • 异常处理方式
  • 是否涉及并行计算

简历表达 ​

当前可以保守写为:

参与求解器集成与系统联调工作,协助完成主控平台与求解器模块之间的启动调用、运行状态同步和异常处理流程验证。

未来深入后可以升级为:

熟悉求解器集成流程,能够通过命令行、动态库或进程调用方式完成求解器接入,并实现输入参数管理、运行状态监控、结果文件解析和异常处理。


4. C++ 方向细分岗位与技术栈 ​

4.1 C++ 工业软件 / CAE / 仿真软件 ​

适配度:★★★★★
这是当前最推荐的方向。

技术栈 ​

  • C++
  • Qt
  • VTK
  • OpenGL
  • CMake
  • 多线程
  • 进程管理
  • 文件解析
  • 数据可视化
  • 网格处理
  • 求解器集成
  • 跨平台开发
  • Python/C++ 混合调用

代表项目 ​

  • CAE 前后处理软件
  • 三维可视化平台
  • 仿真主控系统
  • 求解器集成平台
  • 工业软件插件系统
  • 数据后处理工具

与个人经历匹配点 ​

  • 评估仿真系统主控平台
  • CAE 软件后处理部分
  • Qt / C++ / VTK
  • 求解器集成
  • 工业软件场景

4.2 C++ 跨平台客户端 / 桌面软件 ​

适配度:★★★★☆

技术栈 ​

  • C++
  • Qt
  • QML
  • WinAPI
  • Linux API
  • QProcess
  • QTcpSocket
  • 多线程
  • 本地数据库
  • 配置管理
  • 跨平台打包

代表项目 ​

  • 桌面客户端
  • 本地管理平台
  • 工具软件
  • 可视化软件
  • 工业控制台
  • 主控平台

注意事项 ​

只写“Qt 界面开发”含金量一般。
要突出:

  • 多进程
  • TCP
  • 资源监控
  • 跨平台
  • 工程化
  • 工业软件

4.3 C++ 后端开发 ​

适配度:★★★☆☆

技术栈 ​

  • C++11/14/17
  • Linux
  • TCP/IP
  • Socket
  • epoll
  • Reactor
  • 多线程
  • 线程池
  • MySQL
  • Redis
  • Protobuf
  • gRPC
  • CMake
  • GDB

代表项目 ​

  • 高并发 Web Server
  • RPC 框架
  • 线程池
  • 日志系统
  • KV 存储
  • IM 通信系统

需要补强 ​

如果想转 C++ 后端,需要重点补:

  • Linux 网络编程
  • epoll
  • Reactor
  • 线程池
  • 数据库
  • Redis
  • RPC
  • 高并发服务器项目

4.4 C++ 高性能计算 / HPC ​

适配度:★★★★☆

适合与数学建模、仿真评估、求解器方向结合。

技术栈 ​

  • C++
  • OpenMP
  • MPI
  • CUDA
  • SIMD
  • Eigen
  • BLAS
  • LAPACK
  • 稀疏矩阵
  • 数值计算
  • 并行计算
  • 性能优化

代表项目 ​

  • 数值求解器
  • 并行计算程序
  • 物理仿真
  • 有限元计算
  • 大规模矩阵计算
  • 图像处理加速

需要补强 ​

  • 线性代数
  • 数值分析
  • 并行计算
  • Eigen
  • OpenMP
  • CUDA 或 MPI

4.5 C++ 游戏开发 / 图形渲染 ​

适配度:★★★☆☆

技术栈 ​

  • C++
  • Unreal Engine
  • OpenGL
  • Vulkan
  • DirectX
  • Shader
  • 渲染管线
  • 物理引擎
  • ECS
  • 多线程渲染

代表项目 ​

  • 游戏引擎模块
  • 小型渲染器
  • 三维可视化引擎
  • 编辑器工具
  • 物理仿真 Demo

与个人经历关联 ​

VTK 和 CAE 后处理经历可以部分迁移到图形可视化方向,但如果走游戏渲染,需要额外补:

  • OpenGL / Vulkan
  • Shader
  • 渲染管线
  • 线性代数
  • 实时渲染

4.6 C++ 嵌入式 / 自动驾驶 / 机器人 ​

适配度:★★★☆☆

技术栈 ​

  • C++
  • Linux
  • ROS / ROS2
  • 多线程
  • CMake
  • Socket
  • CAN
  • OpenCV
  • PCL
  • Eigen
  • 传感器数据处理
  • 实时系统

代表项目 ​

  • 机器人控制系统
  • 自动驾驶感知模块
  • 传感器融合
  • 运动规划
  • 工控设备软件

需要补强 ​

  • ROS2
  • Linux
  • 传感器数据处理
  • CMake
  • 实时系统基础

4.7 C++ 基础软件 / 存储 / 数据库 ​

适配度:★★★☆☆

技术栈 ​

  • C++
  • Linux
  • 文件系统
  • 内存管理
  • LSM Tree
  • B+ Tree
  • WAL
  • Buffer Pool
  • 并发控制
  • 网络通信

代表项目 ​

  • KV 数据库
  • mini Redis
  • mini MySQL
  • 日志系统
  • 文件存储引擎

需要补强 ​

  • 数据结构
  • 操作系统
  • 数据库原理
  • 并发控制
  • 存储引擎

5. 推荐学习优先级 ​

第一优先级:C++ 基础机制 ​

必须补扎实:

  • 指针和引用
  • const / static
  • 堆和栈
  • new/delete
  • 构造析构
  • 拷贝构造
  • 移动构造
  • 虚函数和虚表
  • 多态
  • 智能指针
  • RAII
  • STL 容器底层

目标:

能通过 C++ 基础面试。


第二优先级:多线程与线程池 ​

重点学习:

  • std::thread
  • mutex
  • lock_guard
  • unique_lock
  • condition_variable
  • atomic
  • 生产者消费者
  • 线程安全队列
  • 线程池

目标:

能独立实现一个 C++ 线程池,并讲清楚线程池设计。


第三优先级:Linux / Windows 系统编程 ​

重点学习:

  • 进程
  • PID / PPID
  • signal
  • kill
  • /proc
  • 进程查询
  • 进程终止
  • CPU / 内存 / 磁盘 IO 监控
  • 跨平台封装

目标:

能把已有主控系统项目中的进程管理和资源监控讲透。


第四优先级:TCP 网络编程 ​

重点学习:

  • TCP 三次握手
  • TCP 四次挥手
  • 粘包 / 拆包
  • Socket 编程
  • 心跳检测
  • 超时机制
  • 断线重连
  • 状态同步
  • 简单协议设计

目标:

能把已有主控系统项目中的 TCP 心跳检测讲透。


第五优先级:Qt 工程能力 ​

重点学习:

  • Qt 信号槽
  • Qt 对象模型
  • QThread
  • QProcess
  • QSettings
  • QTcpSocket
  • Model/View
  • 跨平台部署
  • Qt + VTK 集成

目标:

不只会写 Qt 界面,而是能做 Qt 工程软件。


第六优先级:CMake 与工程化 ​

重点学习:

  • CMake
  • qmake
  • 静态库 / 动态库
  • Debug / Release
  • GDB
  • Valgrind
  • AddressSanitizer
  • Google Test
  • spdlog
  • clang-format
  • GitHub Actions

目标:

能组织和维护中型 C++ 工程。


6. 建议补充的 C++ 小项目 ​

6.1 C++ 轻量级线程池 ​

目标 ​

补强多线程与并发能力。

功能要求 ​

  • 支持固定数量工作线程
  • 支持任务队列
  • 支持任务提交
  • 支持 future 获取异步结果
  • 支持优雅停止
  • 支持异常处理

技术点 ​

  • std::thread
  • std::mutex
  • std::condition_variable
  • std::future
  • std::packaged_task
  • RAII
  • 任务队列

简历表达 ​

实现基于 C++11 的轻量级线程池,支持任务提交、工作线程复用、任务队列调度和异步结果获取,降低频繁创建线程带来的性能开销。


6.2 跨平台进程监控工具 ​

目标 ​

强化已有主控系统项目中的进程管理与资源监控能力。

功能要求 ​

  • Windows / Linux 进程列表
  • 进程名称查询
  • 进程 PID 获取
  • CPU 使用率监控
  • 内存占用监控
  • 磁盘读写监控
  • 进程终止
  • 进程详情展示
  • 日志记录
  • Qt 界面展示

技术点 ​

  • C++
  • Qt
  • Windows API
  • Linux /proc
  • 条件编译
  • 资源采样
  • QTableWidget / ModelView
  • 日志系统

简历表达 ​

实现跨平台进程监控工具,支持 Windows / Linux 下进程查询、CPU/内存/磁盘读写监控与进程终止操作,加深对操作系统接口和 C++ 跨平台封装的理解。


6.3 TCP 心跳监控 Demo ​

目标 ​

补强 TCP 网络编程与心跳检测机制。

功能要求 ​

  • TCP Server
  • 多 TCP Client
  • 心跳包发送
  • 心跳超时检测
  • 断线识别
  • 断线重连
  • 状态码设计
  • 日志记录
  • 简单界面或命令行展示

技术点 ​

  • Socket 编程
  • TCP 长连接
  • 心跳检测
  • 超时机制
  • 状态同步
  • 多线程
  • 协议设计

简历表达 ​

实现轻量级 TCP 心跳监控 Demo,支持多客户端连接、心跳包检测、超时断连识别和连接状态管理,加深对 TCP 长连接与状态同步机制的理解。


6.4 Qt + VTK 可视化 Demo ​

目标 ​

补强 CAE 后处理与三维可视化方向。

功能要求 ​

  • Qt 界面嵌入 VTK 渲染窗口
  • 读取简单三维模型
  • 显示点、线、面数据
  • 支持旋转、平移、缩放
  • 支持颜色映射
  • 支持简单标量场云图
  • 支持截图保存

技术点 ​

  • Qt
  • VTK
  • QVTKOpenGLNativeWidget
  • vtkRenderer
  • vtkActor
  • vtkMapper
  • vtkLookupTable
  • 三维交互

简历表达 ​

实现基于 Qt + VTK 的三维可视化 Demo,支持模型加载、基础交互和标量场颜色映射,加深对 CAE 后处理渲染流程的理解。


7. 技能掌握程度记录模板 ​

后续可以按下面格式记录每个技能点的掌握情况。

markdown
## 技能名称

### 当前掌握程度

- [ ] 了解概念
- [ ] 能写 Demo
- [ ] 能在项目中使用
- [ ] 能讲清楚原理
- [ ] 能回答面试问题
- [ ] 能进行工程封装或优化

### 学习记录

- 日期:
- 学习材料:
- 实现代码:
- 遇到问题:
- 解决方案:

### 可写入简历的表达

> 

### 可准备的面试问题

1. 
2. 
3.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28

8. 当前简历技能栏建议写法 ​

当前保守版 ​

text
C++ / 系统开发:
熟悉 C++ 基础语法、面向对象编程、STL 常用容器与 Qt 桌面端开发;具备 Windows / Linux 跨平台开发经验,了解进程管理、TCP Socket 通信、心跳检测、进程级资源监控等系统开发内容。
1
2

中期提升版 ​

text
C++ / 系统开发:
熟悉 C++ 对象生命周期、RAII、智能指针、STL 容器及现代 C++ 特性;掌握多线程编程、线程池、互斥锁、条件变量等并发机制;具备 Windows / Linux 跨平台开发经验,能够基于系统接口实现进程管理、资源监控与 TCP Socket 通信。
1
2

工业软件方向强化版 ​

text
C++ / 工程软件开发:
熟悉现代 C++、多线程编程、内存管理、STL、CMake 和跨平台工程构建;具备 Qt 桌面端、TCP Socket、Linux/Windows 系统接口、进程管理、资源监控和工业软件主控平台开发经验,了解 VTK 可视化与 CAE 软件后处理流程。
1
2

9. 当前最应该补的知识清单 ​

C++ 基础机制 ​

  • [ ] 指针与引用
  • [ ] const
  • [ ] static
  • [ ] 堆与栈
  • [ ] new/delete
  • [ ] 构造函数
  • [ ] 析构函数
  • [ ] 拷贝构造
  • [ ] 移动构造
  • [ ] 虚函数
  • [ ] 虚表
  • [ ] 多态
  • [ ] RAII
  • [ ] 智能指针
  • [ ] STL 容器底层

多线程 ​

  • [ ] std::thread
  • [ ] mutex
  • [ ] lock_guard
  • [ ] unique_lock
  • [ ] condition_variable
  • [ ] atomic
  • [ ] 生产者消费者
  • [ ] 线程安全队列
  • [ ] 线程池
  • [ ] future / promise / async

系统编程 ​

  • [ ] 进程与线程区别
  • [ ] PID / PPID
  • [ ] Linux signal
  • [ ] kill 原理
  • [ ] /proc 文件系统
  • [ ] Windows 进程句柄
  • [ ] 进程资源监控
  • [ ] CPU 使用率计算
  • [ ] 内存占用统计
  • [ ] 磁盘读写监控
  • [ ] 跨平台封装

网络编程 ​

  • [ ] TCP 三次握手
  • [ ] TCP 四次挥手
  • [ ] TCP 粘包 / 拆包
  • [ ] Socket 编程
  • [ ] 心跳检测
  • [ ] 超时机制
  • [ ] 断线重连
  • [ ] 简单协议设计
  • [ ] select / poll / epoll

Qt ​

  • [ ] 信号槽
  • [ ] QObject 对象模型
  • [ ] 父子对象机制
  • [ ] 事件机制
  • [ ] QThread
  • [ ] QProcess
  • [ ] QSettings
  • [ ] QTcpSocket
  • [ ] Model/View
  • [ ] QSS
  • [ ] Qt 跨平台部署

工程化 ​

  • [ ] CMake
  • [ ] qmake
  • [ ] 静态库
  • [ ] 动态库
  • [ ] GDB
  • [ ] Visual Studio Debugger
  • [ ] Valgrind
  • [ ] AddressSanitizer
  • [ ] Google Test
  • [ ] spdlog
  • [ ] clang-format
  • [ ] GitHub Actions

工业软件 / CAE ​

  • [ ] CAE 前处理 / 求解器 / 后处理
  • [ ] 网格
  • [ ] 节点与单元
  • [ ] 标量场 / 矢量场
  • [ ] VTK 渲染流程
  • [ ] Qt + VTK 集成
  • [ ] 云图显示
  • [ ] 等值面
  • [ ] 切片
  • [ ] 三维交互
  • [ ] 求解器集成流程

10. 当前路线总结 ​

当前最适合的发展方向不是泛泛的“C++ 开发”,而是:

C++ 工程软件 / 工业软件 / 跨平台主控系统开发方向。

短期目标:

  1. 把已有主控系统项目讲透。
  2. 补 C++ 基础机制、内存管理、STL、智能指针。
  3. 做一个线程池小项目。
  4. 做一个跨平台进程监控工具。
  5. 做一个 TCP 心跳监控 Demo。
  6. 继续沉淀 Qt + VTK / CAE 后处理经验。

中期目标:

  1. 形成 C++ 工业软件方向 Master Resume。
  2. 维护 C++ 技能库与项目库。
  3. 每个项目都配套 README、architecture、implementation、interview 文档。
  4. 将 C++ 方向打造为个人简历中的核心能力线之一。

最终希望形成的能力画像:

具备 C++ / Qt 跨平台工程开发能力,理解进程管理、资源监控、TCP 通信、多线程和工程化构建,拥有工业软件主控平台、CAE 后处理和求解器集成相关项目经验。

最后更新于:

Pager
上一篇3. 🛡️ Computer-WorldFrame 项目技术面试指南 / A Technical Interview Guide for the Computer-World Frame Project
下一篇1. 某评估仿真系统主控平台项目总结 / Master Control Platform Project for an Evaluation and Simulation System

持续记录,持续成长

Copyright © Tidenflow