C++面试常见八股文汇总_C++后端开发面试题与答案解析

admin 百科 15
指针是变量,占用内存并存储地址,可重新赋值;引用是别名,必须初始化且不可更改。2. new/delete调用构造/析构函数,malloc/free仅分配释放内存。3. vector连续存储,扩容时复制数据,支持O(1)随机访问,中间插入删除O(n)。4. 虚函数通过vtable实现运行时多态,基类指针调用派生类函数;纯虚函数定义抽象类。

C++面试常见八股文汇总_C++后端开发面试题与答案解析-第1张图片-佛山资讯网

准备C++后端开发面试,绕不开那些经典的“八股文”问题。这些问题虽然基础,但考察深入,是筛选候选人的常用手段。核心在于理解概念背后的原理,而非死记硬背。

指针与引用的区别

这是几乎必问的基础题,关键在于说清本质和使用场景。

  • 本质不同:指针是一个存储内存地址的变量,它本身需要占用内存(如64位系统下8字节)。而引用是已存在变量的一个别名,编译器通常用指针实现,但在语法上不占独立内存空间。
  • 初始化要求:指针可以先定义再赋值,也可以为nullptr。引用必须在声明时就绑定到一个有效的对象,且之后不能更改绑定的目标。
  • 操作差异:访问指针指向的值需要用解引用操作符*。访问引用等同于访问原变量,无需额外操作。对指针进行++操作会使其指向下一个元素(按类型大小偏移),而对引用++是对原变量进行自增。
  • 应用场景:函数传参时,若需修改外部变量或避免大对象拷贝,优先用引用。当需要表示“无对象”或在运行时改变指向时,必须用指针。

new/delete 与 malloc/free 的区别

这道题区分了C风格和C++风格的内存管理,重点在于构造/析构函数的调用。

  • 语言层级newdelete是C++的操作符,由编译器支持。mallocfree是C标准库函数,需要头文件。
  • 内存分配new会自动根据对象类型计算所需内存大小。malloc需要手动指定字节数。
  • 类型安全new返回的是特定类型的指针,无需转换。malloc返回void*,必须强制转换为目标类型的指针。
  • 核心区别new不仅分配内存,还会调用对象的构造函数进行初始化。delete在释放内存前会调用对象的析构函数。mallocfree只负责内存的申请和释放,不会调用任何构造或析构函数。
  • 失败处理new失败会抛出bad_alloc异常。malloc失败返回NULL

vector 的底层原理与特点

作为STL中最常用的容器,理解其动态扩容机制至关重要。

标签: c++面试 八股文 字节 后端 c++ 区别 后端开发 标准库

发布评论 0条评论)

还木有评论哦,快来抢沙发吧~