温馨提示×

linux c++面试会问什么

小樊
47
2026-09-05 05:31:56
栏目: 编程语言

Linux 下 C++ 面试通常覆盖 C++ 语言本身、Linux 系统知识、网络/多线程、以及工程与排查能力。下面按常见模块给你梳理一下高频考点,适合准备面试用。


一、C++ 语言基础(必问)

  1. 指针 vs 引用
    • 区别、使用场景、能否为空
  2. const / constexpr / volatile
    • const 修饰指针、成员函数
    • volatile 在多线程/硬件场景的作用
  3. static 关键字
    • 全局、局部、类成员的区别
  4. 内存模型
    • 栈 / 堆 / 全局区 / 代码段
    • malloc/new 区别
  5. 构造函数 / 析构函数
    • 默认构造、拷贝构造、移动构造
    • 析构顺序
  6. 虚函数与多态
    • 虚表结构
    • 纯虚函数、抽象类
  7. 智能指针
    • unique_ptr / shared_ptr / weak_ptr
    • 循环引用问题
  8. STL 常见容器
    • vector / map / unordered_map 区别
    • 迭代器失效问题

二、C++11/14/17 特性(很常问)

  • auto / decltype
  • lambda 表达式
  • std::move / std::forward
  • 右值引用
  • 多线程库(thread / mutex / atomic)
  • 可变参数模板

三、Linux 系统相关(重点)

  1. 进程 vs 线程
    • 区别、通信方式
  2. 进程间通信(IPC)
    • 管道、消息队列、共享内存、信号、socket
  3. 多线程同步
    • 互斥锁、条件变量、读写锁
    • 死锁成因与避免
  4. fork / exec / wait
    • fork 后资源复制
    • 写时复制(COW)
  5. 信号处理
    • SIGSEGV / SIGPIPE / SIGCHLD
  6. 文件 IO
    • open/read/write 与 fopen 区别
    • 阻塞 vs 非阻塞
  7. 内存管理
    • 虚拟内存
    • 内存泄漏排查

四、网络编程(服务端岗必问)

  1. TCP / UDP 区别
  2. TCP 三次握手 / 四次挥手
  3. TIME_WAIT / CLOSE_WAIT
  4. select / poll / epoll
    • 区别与底层实现
  5. Reactor / Proactor 模型
  6. 惊群问题
  7. 粘包 / 拆包处理
  8. 非阻塞 IO + 边缘触发(ET)

五、多线程与并发(高频)

  • 原子操作
  • 内存屏障
  • 无锁队列
  • 线程池实现思路
  • 生产者消费者模型

六、调试与性能(加分项)

  • gdb 调试
  • valgrind / AddressSanitizer
  • strace / ltrace
  • top / perf
  • core dump 分析
  • 内存泄漏定位

七、常见手写代码题

  • 单例模式(线程安全)
  • shared_ptr 实现
  • 线程池
  • epoll 服务端
  • 生产者消费者
  • 字符串 / 容器相关算法

八、项目相关问题(很重要)

  • 你做过什么 Linux C++ 项目?
  • 遇到过什么坑?怎么排查?
  • 性能瓶颈在哪?如何优化?

如果你愿意,我可以:

  • 按「初级 / 中级 / 高级」给你分难度
  • 出一份 模拟面试题 + 答案
  • 针对 后台 / 客户端 / 嵌入式 岗位定制

你主要面哪类岗位?

0