C++软件工程师面试题主要分为基础语法、面向对象编程、内存管理、STL应用等核心模块,结合应届生和有经验的岗位需求设计。以下是高频考点整理:
一、基础语法与概念
-
关键字与作用
-
const
:常量修饰符,static
:静态存储期控制 -
virtual
与inline
:虚函数实现多态,内联函数优化调用开销 -
struct
与class
:默认访问权限不同,class
支持继承
-
-
构造函数与析构函数
-
构造函数不能为虚函数,析构函数可为纯虚函数(实现抽象类)
-
深拷贝与浅拷贝:深拷贝需复制资源指针,浅拷贝仅复制指针
-
二、面向对象编程
-
核心特性
-
封装、继承、多态:通过虚函数实现运行时多态,构造函数/析构函数控制对象生命周期
-
单例模式实现:使用静态成员变量和私有构造函数
-
三、内存管理
-
内存分配与释放
-
new
与malloc
:new
分配对象内存并调用构造函数,malloc
仅分配原始内存 -
智能指针(
shared_ptr
与weak_ptr
):管理动态内存,避免内存泄漏
-
-
内存区域
- 栈(局部变量)与堆(动态分配):栈内存自动释放,堆需手动管理
四、STL容器与算法
-
常用容器
-
vector
(动态数组)与list
(双向链表):vector
底层使用连续内存,list
节点分散 -
map
(红黑树)与unordered_map
(哈希表):map
有序,unordered_map
无序
-
-
算法应用
- 深拷贝实现:手动复制资源指针,避免双重释放
五、其他高频考点
-
异常处理
- 构造函数/析构函数可抛出异常,但需注意资源释放
-
网络基础
- TCP与UDP区别:TCP可靠、面向连接,UDP无连接、不可靠
总结 :面试重点围绕C++核心特性展开,应届生需侧重基础语法和面向对象概念,有经验的岗位则更关注内存管理、STL应用及实际问题解决能力。建议结合项目经验,准备具体案例分析。