后端校招 | 高频 C++ 面试题整理

🎯 一、为什么专门做一期 C++ 面试题分享?

其实很多后端同学在面试准备时都有发现一个问题即

  • Java 岗位题资源非常多

  • 但 C++ 后端面试内容分散、缺少整合

所以我整理了 GitHub 上高频 C++ 后端面试题 + 答案解析,今天精选 5 道拆解给大家看

🔍 二、精选高频 C++ 面试题答题技巧

1. new 和 malloc 的区别?

特性 new malloc
返回类型 指定类型指针 void*
构造函数 会调用构造函数 不会调用
释放方式 delete free
重载支持 支持重载 不支持
异常处理 分配失败抛异常 返回 NULL

🔹 答题建议: 不要只背表格,重点突出:“new 是操作符,支持构造/析构函数;malloc 是函数,只负责内存分配。”

2. 虚函数表机制(vtable)是怎么实现的?

  • 编译器为每个有虚函数的类生成一个虚函数表(vtable)

  • 每个对象包含一个指向该类虚函数表的指针(vptr)

  • 虚函数调用时,通过 vptr 查找 vtable 中对应函数地址,进行动态绑定

🔹 答题建议: 可配合画图说明 Base* p = new Derived(); 时如何通过 vptr 调用 Derived 的虚函数。

3. C++11 中 std::move 和右值引用的作用?

std::move 不是移动函数,而是 将左值转换为右值引用

搭配右值引用,实现 资源的所有权转移

可避免不必要的深拷贝,提高性能(如返回大型对象、容器优化)

🔹 示例:

std::vector<int> v1 = {1, 2, 3};
std::vector<int> v2 = std::move(v1);  // v1 的资源“偷”给了 v2

4. 内存对齐规则 + 字节对齐面试陷阱

面试官问:“一个结构体如下所示,sizeof 是多少?”

struct A {
  char a;
  int b;
  char c;
};
  • sizeof(A) 是 12,因为会有字节对齐填充字节

  • 答题时要讲:按最大成员对齐 + 编译器对齐限制

🔹 建议配合图示解释每个字段的起始位置,展示你真的理解了原理。

5. 智能指针 shared_ptr vs unique_ptr 区别

类型 是否共享所有权 支持复制? 场景
unique_ptr ❌ 仅一个拥有者 ❌ 不可复制 独占资源管理,如文件句柄
shared_ptr ✅ 多个共享 ✅ 可复制 多方共享数据,如缓存池

🔹 答题建议: 强调生命周期管理、引用计数机制、循环引用陷阱(可联讲 weak_ptr)

🎁 GitHub 面试题项目推荐

我把这些 C++ 面试题 + 操作系统 + Redis + 数据库等内容,整理成了一个开源项目:

📘 项目地址: 👉 0voice/Campus_recruitment_interview_questions

✨ 项目亮点:

✅ 每道 C++ 高频题都有详细答案和笔记

✅ 支持一键搜索你想复习的知识点

✅ 包含腾讯、字节、阿里真实面经+题目

alt

持续更新维护中,欢迎 star ⭐

#面试题##面经##大厂##秋招##应届生#
全部评论

相关推荐

评论
点赞
2
分享

创作者周榜

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