C++ 暑期实习必备八股:50 题 + 准备策略

准备策略

1. 先定方向

  • 后端 / 客户端:STL、智能指针、并发、现代 C++ 权重大
  • 嵌入式 Linux:基础语法、内存、OOP 为主,并发了解即可
  • 游戏 / 高性能:内存、移动语义、STL 性能相关多问

2. 三轮复习(约 4–6 周)

  • 第一轮:50 题全部过一遍,不会的标红
  • 第二轮:只啃标红题 + 每类 Top 3,每题准备 1 个追问
  • 第三轮:8 道题绑定自己的项目,做 2 次模拟面试

3. 背诵方法

  • 结论先行,30 秒内说清主干
  • 成对记忆:指针/引用、new/malloc、深拷贝/浅拷贝
  • 对象布局、虚表、vector 扩容——画过一遍就不容易忘
  • 智能指针、lambda、移动语义——各写一小段代码跑通

4. 时间配比

  • 八股 60% + 算法 30%(Hot 100 中等题)+ 项目话术 10%
  • 每天:1.5h 八股(10 题)+ 1–2 道算法 + 10min 复习昨日错题

5. 避坑

  • 只背定义不会举例 → 每题想一个项目场景
  • 50 题全背答案全文 → 记「关键词 + 对比 + 一句例子」就够
  • 忽略算法 → 很多岗一面就手撕
  • 项目讲流水账 → 按「职责 → 技术选型 → 踩坑」准备

核心大厂开发面试题以及基础八股文资料汇总:

https://www.nowcoder.com/creation/manager/columnDetail/Mq7XWW

50 道高频题

C++ 基础(1–10)

  1. 指针和引用的区别?各自适用场景?
  2. const 修饰变量、指针、成员函数分别表示什么?
  3. 值传递、指针传递、引用传递的区别?
  4. 堆和栈的区别?各自存什么、谁分配释放?
  5. 左值和右值是什么?std::move 做了什么?
  6. #define 和 constinline 的区别?
  7. static 在全局变量、局部变量、类成员上的作用?
  8. 四种类型转换(static_cast 等)分别用在什么场景?
  9. 函数重载的条件?和重写(覆盖)有什么区别?
  10. 野指针和悬空指针怎么产生?怎么避免?

面向对象(11–20)

  1. 类对象在内存里大致长什么样?
  2. 虚函数的实现原理?vptr 和 vtable 是什么?
  3. 为什么基类析构函数通常要声明为虚函数?
  4. 构造函数里调用虚函数为什么不安全?
  5. 重载、重写、隐藏的区别?
  6. 深拷贝和浅拷贝的区别?什么时候必须自定义拷贝构造/赋值?
  7. 三法则、五法则、零法则是什么?
  8. RAII 是什么?在 C++ 里怎么体现?
  9. 构造函数和析构函数的调用顺序(单继承)?
  10. 多继承的菱形问题是什么?虚继承怎么解决?

内存管理(21–28)

  1. new/delete 和 malloc/free 的区别?
  2. 内存泄漏是什么?常见原因有哪些?
  3. 什么是内存对齐?为什么需要对齐?
  4. 栈溢出一般怎么发生?
  5. 堆上对象和栈上对象的生命周期有何不同?
  6. new 失败了会怎样?
  7. 什么是内存碎片?怎么缓解?
  8. 如何检测和定位内存泄漏?

智能指针(29–34)

  1. 为什么需要智能指针?
  2. unique_ptr 和 shared_ptr 的区别与使用场景?
  3. shared_ptr 的引用计数是怎么工作的?
  4. shared_ptr 循环引用怎么产生?weak_ptr 怎么解决?
  5. make_shared 比直接 new 好在哪里?
  6. shared_ptr 线程安全吗?

STL(35–42)

  1. vector 的底层实现和扩容机制?
  2. vector 哪些操作会导致迭代器失效?
  3. vector 和 list 怎么选?
  4. map 和 unordered_map 底层分别是什么?怎么选?
  5. emplace_back 和 push_back 的区别?
  6. 迭代器失效的常见场景有哪些?
  7. deque 和 vector 的区别?
  8. 常见 STL 容器查找、插入、删除的时间复杂度?

现代 C++ 与并发(43–48)

  1. C++11 有哪些你用过的重要新特性?
  2. 右值引用和移动语义是什么?解决什么问题?
  3. 移动构造和拷贝构造的区别?
  4. lambda 的 [=][&][x] 捕获方式区别?
  5. mutexlock_guardunique_lock 的区别?
  6. 死锁产生的条件?怎么避免?

项目结合(49–50)

  1. 项目里哪里用了 C++?为什么选这些 STL 容器或智能指针?
  2. 项目里遇到过什么内存或性能问题?怎么定位和解决的?

复习优先级

必背

1–20、29–34、49–50

实习几乎必问

重点

21–28、35–42

后端 / 客户端必考

选背

43–48

投并发相关岗再加

全部评论
C++八股按方向拆,比无脑背一本强多了
点赞 回复 分享
发布于 昨天 17:42 浙江

相关推荐

评论
3
8
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务