Skip to content

糌粑的面经笔记 ​

本目录基于 xiaolincoding.com C++面试题、cppguide.cn (张小方) 等社区资源,结合各大厂 C++ 后端/客户端/游戏岗位常见考点整理。

用途:面试速查 + 深度理解原理,每个专题包含「核心考点」「高频问答」「手写实现思路」。

大类导航 ​

本站按 3 个大类 组织:顶栏切换大类,侧边栏按小类浏览。

大类覆盖小类入口
C++fundamental · stl · smart-pointers · oop · memory · modern-cpp · metaprogramming · build · debugging · design · misc进入 C++ →
系统os · concurrency · lowlevel · cloud-native进入 系统 →
AI Infra & HPCai-infra · performance进入 AI Infra & HPC →

各小类定位:

  • C++:语言 / STL / OOP / 内存 / 现代特性 / 元编程 / 编译调试 / 设计思想 —— 通用岗核心区。
  • 系统:操作系统八股 + 并发 + 底层硬件 + 云原生 —— 后端、基础架构、系统岗。
  • AI Infra & HPC:GPU/CUDA/分布式通信 + 性能工程 —— 高性能、AI 基础设施岗。

投通用岗备齐 C++;投后端 / 系统岗重点 系统(尤其 os、concurrency);投 HPC / AI Infra 岗在 C++ 与系统打底后聚焦 AI Infra & HPC。

面试高频 Top 问题(必背,含答案) ​

1. 手写 shared_ptr / unique_ptr

答案

unique_ptr 存裸指针 + 删除器、禁拷贝只 move;shared_ptr 指针 + 控制块(强/弱计数)、拷贝增计数、归零 delete。见 手写实现专题 · 智能指针。

2. vector 扩容、push_back vs emplace_back

答案

动态数组三指针,容量不足翻倍(2/1.5)扩容、均摊 O(1);emplace_back 原地构造省临时对象。见 stl/vector.md。

3. map vs unordered_map

答案

map 红黑树 O(log n) 有序,unordered_map 哈希表 O(1) 平均无序。见 stl/map.md、stl/unordered_map.md。

4. vtable/vptr、多态

答案

含虚函数对象头部 vptr 指向类 vtable,运行期经 vptr 动态绑定。见 oop/vtable.md。

5. 虚析构 / 构造不能虚

答案

虚析构保证基类指针 delete 派生类时调到派生类析构;构造时类型未定形不能虚。见 oop/virtual-destructor.md。

6. malloc/new、free/delete

答案

malloc 只分配原始内存返 NULL,new 分配 + 构造、失败抛异常。见 memory/malloc-new.md。

7. 内存对齐 / sizeof

答案

按最大成员对齐、补 padding。见 memory/alignment.md。

8. 左值右值、移动语义、std::move、完美转发

答案

std::move 只转右值引用,真正搬在移动构造;完美转发 = 万能引用 + forward。见 modern-cpp/move-semantics.md。

9. 迭代器失效

答案

vector 扩容全失效、list/map 只删谁谁失效、unordered rehash 全失效。见 stl/iterator.md。

10. static/const/volatile/extern

答案

static 生命周期/内部链接/类成员;const 只读;volatile 防优化不保证原子;extern 外部链接。见 fundamental/keywords.md。

使用建议 ​

  • 第一遍:按「必背 Top10」把 stl、smart-pointers、oop、memory 四个文件夹吃透。
  • 第二遍:补齐 fundamental 与 modern-cpp 中的冷门细节。
  • 冲刺:对着每个 index.md 的「问题清单」自问自答,卡壳处回到对应专题 md。

提示:面试官喜欢追问「为什么」。每个专题尽量不只背结论,要能说出底层原理。

Last updated:

糌粑的面经笔记 · VitePress 版