职位题库

C++开发工程师面试题库

面向C++开发工程师相关面试,围绕C++、内存管理、智能指针、性能优化、多态等主题展开练习,结合题目考察点、回答思路、参考答案和常见误区,梳理知识要点并练习清晰表达。

132 道题目建议用时 396 分钟专项面试练习

全部题目 132 道题

109

请谈谈你对C++模板的使用经验,模板为什么会导致代码膨胀,如何控制?

考察模板编程的实践经验,对模板实例化导致代码膨胀的理解,以及控制膨胀的常用技术。
110

请实现一个简化版vector,支持push_back、size、capacity和析构。

考察对动态数组底层实现的理解,包括内存管理、对象生命周期、异常安全等。
111

局部对象、new 出来的对象和全局对象的生命周期分别由谁管理?

考察对 C++ 存储期、内存分区和析构时机的理解,以及是否踩过全局对象初始化顺序的坑。
112

unique_ptr、shared_ptr、weak_ptr 在项目中如何选型?shared_ptr 比裸指针贵在哪?

考察智能指针的语义差异、开销来源和实际选型能力。
113

虚函数的调用过程是怎样的?为什么虚函数默认不能被内联?

考察对虚函数表、对象布局、间接调用开销和去虚化优化的理解。
114

10 万条设备黑名单需要频繁按前缀查询,你选 map、unordered_map 还是其他结构?

考察对关联容器底层结构、复杂度和实际性能差异的理解,以及根据查询模式选型的能力。
115

std::move 到底做了什么?为什么返回局部变量时不要写 return std::move(x)?

考察对移动语义本质、右值引用和 NRVO 的理解。
116

请解释右值、移动语义与拷贝的区别,以及 std::move 实际做了什么。

考察候选人对 C++11 值类别、移动语义底层机制及 std::move 本质的理解,而非仅记忆语法。
117

请说明三种智能指针的适用场景与所有权语义。

考察对 unique_ptr、shared_ptr、weak_ptr 所有权模型及使用边界的掌握。
118

为什么基类析构函数需要声明为虚函数?

考察多态场景下对象销毁的正确性及虚析构的必要性。
119

迭代器在哪些情况下会失效?请结合常见容器说明。

考察对 STL 容器底层结构与迭代器失效规则的理解。
120

为什么要进行内存对齐?结构体大小如何计算?

考察对内存对齐原因、对齐规则及结构体大小计算方法的掌握。
返回面试题库