后端校招 | 高分简历 + 高频 C++ 面试题整理(附GitHub题库推荐)

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

我发现很多后端同学在面试准备时:

  • Java 岗位题资源非常多
  • 但 C++ 后端面试内容分散、缺少整合

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


二、精选高频 C++ 面试题(附答题技巧)


1. newmalloc 的区别?

特性 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++ 高频题都有详细答案和笔记
  • 支持一键搜索你想复习的知识点
  • 包含腾讯、字节、阿里真实面经+题目
  • 持续更新维护中,欢迎 star ⭐

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

GitHub 面试题项目:
0voice/Campus_recruitment_interview_questions

你可能感兴趣的:(c++,java,开发语言)