Linux 下 C++ 面试通常覆盖 C++ 语言本身、Linux 系统知识、网络/多线程、以及工程与排查能力。下面按常见模块给你梳理一下高频考点,适合准备面试用。
一、C++ 语言基础(必问)
- 指针 vs 引用
- const / constexpr / volatile
- const 修饰指针、成员函数
- volatile 在多线程/硬件场景的作用
- static 关键字
- 内存模型
- 栈 / 堆 / 全局区 / 代码段
- malloc/new 区别
- 构造函数 / 析构函数
- 虚函数与多态
- 智能指针
- unique_ptr / shared_ptr / weak_ptr
- 循环引用问题
- STL 常见容器
- vector / map / unordered_map 区别
- 迭代器失效问题
二、C++11/14/17 特性(很常问)
- auto / decltype
- lambda 表达式
- std::move / std::forward
- 右值引用
- 多线程库(thread / mutex / atomic)
- 可变参数模板
三、Linux 系统相关(重点)
- 进程 vs 线程
- 进程间通信(IPC)
- 多线程同步
- fork / exec / wait
- 信号处理
- SIGSEGV / SIGPIPE / SIGCHLD
- 文件 IO
- open/read/write 与 fopen 区别
- 阻塞 vs 非阻塞
- 内存管理
四、网络编程(服务端岗必问)
- TCP / UDP 区别
- TCP 三次握手 / 四次挥手
- TIME_WAIT / CLOSE_WAIT
- select / poll / epoll
- Reactor / Proactor 模型
- 惊群问题
- 粘包 / 拆包处理
- 非阻塞 IO + 边缘触发(ET)
五、多线程与并发(高频)
- 原子操作
- 内存屏障
- 无锁队列
- 线程池实现思路
- 生产者消费者模型
六、调试与性能(加分项)
- gdb 调试
- valgrind / AddressSanitizer
- strace / ltrace
- top / perf
- core dump 分析
- 内存泄漏定位
七、常见手写代码题
- 单例模式(线程安全)
- shared_ptr 实现
- 线程池
- epoll 服务端
- 生产者消费者
- 字符串 / 容器相关算法
八、项目相关问题(很重要)
- 你做过什么 Linux C++ 项目?
- 遇到过什么坑?怎么排查?
- 性能瓶颈在哪?如何优化?
如果你愿意,我可以:
- 按「初级 / 中级 / 高级」给你分难度
- 出一份 模拟面试题 + 答案
- 针对 后台 / 客户端 / 嵌入式 岗位定制
你主要面哪类岗位?