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++ 技术栈可以按照以下层级理解:
C++ 语言基础
↓
现代 C++ 与内存管理
↓
STL 与泛型编程
↓
多线程与并发编程
↓
操作系统与系统编程
↓
网络编程
↓
工程化与构建体系
↓
领域方向:工业软件 / CAE / Qt / VTK / HPC / 后端 / 嵌入式对于当前个人发展而言,最重要的主线是:
C++ 基础
↓
对象生命周期 / RAII / 智能指针
↓
多线程 / 线程池 / 并发控制
↓
Linux & Windows 系统编程
↓
TCP Socket / 心跳检测 / 状态同步
↓
Qt 跨平台桌面工程
↓
VTK / CAE / 工业软件可视化
↓
求解器集成 / 仿真平台 / 主控系统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 的轻量级线程池,支持任务提交、任务队列调度、工作线程复用、异步结果获取和优雅停止。
核心模块:
ThreadPool
├── worker threads
├── task queue
├── mutex
├── condition_variable
├── submit()
├── future result
└── graceful shutdown简历表达:
实现基于 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::threadmutexlock_guardunique_lockcondition_variableatomic- 生产者消费者
- 线程安全队列
- 线程池
目标:
能独立实现一个 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::threadstd::mutexstd::condition_variablestd::futurestd::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. 技能掌握程度记录模板
后续可以按下面格式记录每个技能点的掌握情况。
## 技能名称
### 当前掌握程度
- [ ] 了解概念
- [ ] 能写 Demo
- [ ] 能在项目中使用
- [ ] 能讲清楚原理
- [ ] 能回答面试问题
- [ ] 能进行工程封装或优化
### 学习记录
- 日期:
- 学习材料:
- 实现代码:
- 遇到问题:
- 解决方案:
### 可写入简历的表达
>
### 可准备的面试问题
1.
2.
3.8. 当前简历技能栏建议写法
当前保守版
C++ / 系统开发:
熟悉 C++ 基础语法、面向对象编程、STL 常用容器与 Qt 桌面端开发;具备 Windows / Linux 跨平台开发经验,了解进程管理、TCP Socket 通信、心跳检测、进程级资源监控等系统开发内容。中期提升版
C++ / 系统开发:
熟悉 C++ 对象生命周期、RAII、智能指针、STL 容器及现代 C++ 特性;掌握多线程编程、线程池、互斥锁、条件变量等并发机制;具备 Windows / Linux 跨平台开发经验,能够基于系统接口实现进程管理、资源监控与 TCP Socket 通信。工业软件方向强化版
C++ / 工程软件开发:
熟悉现代 C++、多线程编程、内存管理、STL、CMake 和跨平台工程构建;具备 Qt 桌面端、TCP Socket、Linux/Windows 系统接口、进程管理、资源监控和工业软件主控平台开发经验,了解 VTK 可视化与 CAE 软件后处理流程。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++ 工程软件 / 工业软件 / 跨平台主控系统开发方向。
短期目标:
- 把已有主控系统项目讲透。
- 补 C++ 基础机制、内存管理、STL、智能指针。
- 做一个线程池小项目。
- 做一个跨平台进程监控工具。
- 做一个 TCP 心跳监控 Demo。
- 继续沉淀 Qt + VTK / CAE 后处理经验。
中期目标:
- 形成 C++ 工业软件方向 Master Resume。
- 维护 C++ 技能库与项目库。
- 每个项目都配套 README、architecture、implementation、interview 文档。
- 将 C++ 方向打造为个人简历中的核心能力线之一。
最终希望形成的能力画像:
具备 C++ / Qt 跨平台工程开发能力,理解进程管理、资源监控、TCP 通信、多线程和工程化构建,拥有工业软件主控平台、CAE 后处理和求解器集成相关项目经验。