Appearance
糌粑的面经笔记
本目录基于 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 & HPC | ai-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。
提示:面试官喜欢追问「为什么」。每个专题尽量不只背结论,要能说出底层原理。