我发现很多后端同学在面试准备时:
所以我整理了 GitHub 上高频 C++ 后端面试题 + 答案解析,今天精选 5 道送给你:
new
和 malloc
的区别?特性 | new |
malloc |
---|---|---|
返回类型 | 指定类型指针 | void* |
构造函数 | 会调用构造函数 | 不会调用 |
释放方式 | delete |
free |
重载支持 | 支持重载 | 不支持 |
异常处理 | 分配失败抛异常 | 返回 NULL |
答题建议:不要只背表格,重点突出:“new
是操作符,支持构造/析构函数;malloc
是函数,只负责内存分配。”
答题建议:可配合画图说明 Base* p = new Derived();
时如何通过 vptr 调用 Derived
的虚函数。
std::move
和右值引用的作用?std::move
不是移动函数,而是 将左值转换为右值引用示例:
std::vector<int> v1 = {1, 2, 3};
std::vector<int> v2 = std::move(v1); // v1 的资源“偷”给了 v2
面试官问:“一个结构体如下所示,sizeof 是多少?”
struct A {
char a;
int b;
char c;
};
sizeof(A)
是 12
,因为会有字节对齐填充字节建议配合图示解释每个字段的起始位置,展示你真的理解了原理。
shared_ptr
vs unique_ptr
区别类型 | 是否共享所有权 | 支持复制? | 场景 |
---|---|---|---|
unique_ptr |
❌ 仅一个拥有者 | ❌ 不可复制 | 独占资源管理,如文件句柄 |
shared_ptr |
✅ 多个共享 | ✅ 可复制 | 多方共享数据,如缓存池 |
答题建议:强调生命周期管理、引用计数机制、循环引用陷阱(可联讲 weak_ptr
)
我把这些 C++ 面试题 + 操作系统 + Redis + 数据库等内容,整理成了一个开源项目:
项目地址:
0voice/Campus_recruitment_interview_questions
✨ 项目亮点:
如果你也在准备 C++ 后端方向的面试,不妨点个赞 + 收藏支持我 ❤️
我会继续整理 C++ 知识点、系统设计题、项目实践思路分享。
GitHub 面试题项目:
0voice/Campus_recruitment_interview_questions