职位题库

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

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

105 道题目建议用时 315 分钟专项面试练习

全部题目 105 道题

49

请解释 shared_ptr 的控制块包含什么,引用计数是否线程安全?

考察对 shared_ptr 内部实现、线程安全边界及资源生命周期的理解。
50

虚函数表(vtable)和虚表指针(vptr)分别在什么时候确定?对象内存布局如何?

考察对 C++ 对象模型、动态绑定实现机制及内存布局的深入理解。
51

vector 扩容后迭代器为什么失效?如何避免?

考察对 STL 容器底层机制、迭代器失效规则及工程规避方法的掌握。
52

死锁如何现场定位?请描述排查思路和常用工具。

考察实际工程中死锁问题的排查能力,包括工具使用和逻辑分析。
53

请介绍一个你负责的项目,重点说明架构设计、难点及排障过程。

考察候选人的工程闭环能力,包括项目深度、设计取舍、故障排查和指标意识。
54

请介绍C++中三种智能指针的区别与适用场景。

考察对unique_ptr、shared_ptr、weak_ptr的语义、所有权模型和典型使用场景的理解。
55

能否用shared_ptr管理Qt对象?需要注意什么?

考察对Qt对象树所有权模型与shared_ptr引用计数模型冲突的理解。
56

vector在什么时候扩容?如何扩容?

考察对vector容量增长策略、扩容代价和迭代器失效的理解。
57

vector除了析构函数,还有什么方法可以释放内存?

考察对vector容量释放、swap技巧和shrink_to_fit的理解。
58

条件变量是如何实现线程之间同步的?

考察对条件变量、互斥量和等待通知机制的理解。
59

请解释 C++ 移动语义的作用,以及它解决了什么问题?

考察对 C++11 移动语义核心价值的理解,包括右值引用、资源转移和性能提升。
60

请介绍 C++ 中三种智能指针的特点与适用场景。

考察对 unique_ptr、shared_ptr、weak_ptr 的掌握程度,包括所有权模型和循环引用问题。
返回面试题库