温馨提示×

linux c++面试常问什么

小樊
41
2026-10-02 03:14:39
栏目: 编程语言

在 Linux C++ 方向的面试中,通常会围绕 C++ 语言本身、Linux 系统编程、网络编程、多线程/并发、性能优化与调试、项目经验 几个大方向展开。下面按模块给你整理一份“常问清单”,适合准备社招/校招的 Linux C++ 开发岗。


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

  1. C++ 内存模型

    • 栈、堆、全局/静态区、常量区区别
    • new/delete vs malloc/free
    • 内存泄漏如何排查
  2. 指针与引用

    • 指针和引用区别
    • 智能指针(shared_ptr / unique_ptr / weak_ptr)
    • 循环引用问题
  3. 面向对象

    • 虚函数机制(虚表、多态)
    • 构造函数/析构函数调用顺序
    • 拷贝构造、移动语义(std::move)
  4. STL

    • vector / map / unordered_map 实现原理
    • 迭代器失效场景
    • emplace vs push
  5. C++11/14/17 特性

    • lambda、右值引用、auto、nullptr
    • std::thread、std::atomic
    • constexpr

二、Linux 系统编程(重点)

  1. 进程与线程

    • 进程 vs 线程区别
    • fork / exec / wait
    • 僵尸进程、孤儿进程
  2. 进程间通信(IPC)

    • 管道、命名管道
    • 共享内存、消息队列、信号量
    • socket(本地域)
  3. 文件与 IO

    • 阻塞 / 非阻塞 IO
    • select / poll / epoll
    • 零拷贝(sendfile / mmap)
  4. 信号

    • 常见信号(SIGINT、SIGPIPE、SIGCHLD)
    • 信号处理函数注意事项

三、网络编程(高频)

  1. TCP / UDP

    • 三次握手、四次挥手
    • TIME_WAIT 原因与处理
    • 粘包、拆包
  2. Socket 编程

    • socket / bind / listen / accept
    • 非阻塞 socket + epoll
    • 高并发服务器模型(Reactor / Proactor)
  3. IO 模型

    • 同步/异步、阻塞/非阻塞
    • epoll 的 LT 与 ET 模式

四、多线程与并发(必问)

  1. 线程同步

    • 互斥锁、读写锁、条件变量
    • 死锁成因与避免
  2. 原子操作

    • std::atomic
    • 内存序(memory order)
  3. 线程池

    • 如何设计线程池
    • 任务队列、锁粒度

五、性能优化 & 调试(加分项)

  1. 性能工具

    • top / htop / vmstat
    • perf / gprof
    • valgrind / AddressSanitizer
  2. 优化思路

    • 减少锁竞争
    • 内存池、对象池
    • 无锁队列

六、常见实战/项目问题

  • 你做过哪些 Linux C++ 项目?
  • 如何设计一个高并发服务器?
  • 线上 CPU 100% 怎么排查?
  • 内存暴涨如何定位?
  • 如何用 gdb 调试 core dump?

七、典型面试题示例

  • epoll 为什么比 select 高效?
  • shared_ptr 是线程安全的吗?
  • 单例模式在多线程下如何写?
  • vector 扩容机制?
  • 如何避免 TIME_WAIT 过多?

如果你愿意,我可以:

  • 给你 按难度分级的面试问题
  • 或 模拟一场 Linux C++ 面试
  • 或针对 后端 / 音视频 / 嵌入式 方向细化

你更想准备哪一块?

0 踩