C++面试八股文清单

张开发
2026/5/29 3:18:51 15 分钟阅读
C++面试八股文清单
一、C基础核心必问1. 指针 vs 引用核心区别指针可以为空可重新指向引用必须初始化不可更改绑定对象 面试加分点引用本质是“受限指针语义层”2. const 关键字常见问法const int a; int const a; // 一样 const int* p; // 指向常量 int* const p; // 常量指针 const int* const p;// 都不可变 口诀const 看右边没有看左边3. 堆 vs 栈项栈堆管理编译器程序员速度快慢大小小大 面试加分栈溢出 vs 内存泄漏4. 内存分区栈区堆区全局/静态区常量区代码区 常问static变量在哪→ 静态区二、类与对象高频5. struct vs class默认权限structpublicclassprivate 本质几乎一样6. 构造函数 / 析构函数构造初始化析构释放资源 高频析构函数为什么要虚函数✔ 防止“父类指针删除子类对象”资源泄漏7. 拷贝构造函数A(const A other); 什么时候调用传值返回对象初始化8. 深拷贝 vs 浅拷贝 核心浅拷贝拷贝指针深拷贝拷贝数据 面试加分避免 double free9. this 指针 本质指向当前对象三、三/五法则重点10. Rule of Three / Five如果类涉及资源管理必须实现构造函数拷贝构造析构函数C11扩展移动构造移动赋值四、多态核心考点11. 虚函数virtual void func(); 实现机制vtable虚函数表12. 多态实现条件继承虚函数基类指针调用13. 纯虚函数 抽象类virtual void func() 0; 抽象类不能实例化14. 虚函数表高频深入 本质每个类一个 vtable对象中有 vptr 指针 面试加分多继承 → 多个vptr五、C11/14/17新特性15. autoauto x 10; 自动推导类型16. nullptr 替代 NULL类型安全17. 智能指针重点unique_ptr独占shared_ptr引用计数weak_ptr解决循环引用 面试经典shared_ptr 为什么线程不安全18. 右值引用⭐⭐⭐int a 10; 用途移动语义完美转发19. movestd::move(x); 本质强制转为右值20. 完美转发std::forwardT(arg);六、STL必考21. vector vs listvectorlist底层数组链表访问快慢插入慢快22. map vs unordered_mapmapunordered_map实现红黑树哈希有序✔✘23. set / unordered_set 和 map 类似只存 key24. 迭代器失效vector扩容 → 全失效erase → 当前失效七、多线程25. 线程创建std::thread t(func);26. 线程同步mutexlock_guardunique_lock27. 条件变量std::condition_variable 用于线程等待/唤醒28. 死锁 解决加锁顺序统一使用 try_lock29. 原子操作std::atomicint 无锁线程安全八、网络/工程向30. new vs mallocnewmalloc类型CC调用构造✔✘31. delete vs free delete 会调用析构函数32. 内存泄漏 常见原因new 不 delete智能指针循环引用33. RAII非常重要 核心思想用对象生命周期管理资源lock_guard智能指针34. 虚析构 多态删除Base* p new Derived; delete p; // 必须虚析构35. 编译过程预处理编译汇编链接36. 静态链接 vs 动态链接动态库.so运行时加载37. 内联函数inline 减少函数调用开销38. 宏 vs inline 宏不安全无类型检查⭐ 必背虚函数 / 多态智能指针右值引用 / moveSTLvector/map多线程mutex/死锁new vs malloc深拷贝/浅拷贝

更多文章