如何准备 C++ 后端面试?后端校招?

82 阅读3分钟

其实很多后端同学在面试准备时都会发现,Java 岗位题资源非常多,但 C++ 后端面试内容分散、缺少整合,所以我整理了 GitHub 上高频 C++ 后端面试题 + 答案解析,拆解给各位同学阅读学习。

高频 C++ 面试题答题技巧

1. newmalloc 的区别?

特性newmalloc
返回类型指定类型指针void*
构造函数会调用构造函数不会调用
释放方式deletefree
重载支持支持重载不支持
异常处理分配失败抛异常返回 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++ 高频题都有详细答案和笔记

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

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

✅ 汇总近两年1000+面试题 视频讲解

如果你也在准备 C++ 后端方向的面试,不妨点个赞 + 收藏支持我 ❤️
我会继续整理 C++ 知识点、系统设计题、项目实践思路分享。

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

👉 0voice/Campus_recruitment_interview_questions