首页 > 后端开发 > C++ > 正文

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

裘德小鎮的故事
发布: 2025-12-18 14:20:03
原创
527人浏览过
指针是变量,占用内存并存储地址,可重新赋值;引用是别名,必须初始化且不可更改。2. new/delete调用构造/析构函数,malloc/free仅分配释放内存。3. vector连续存储,扩容时复制数据,支持O(1)随机访问,中间插入删除O(n)。4. 虚函数通过vtable实现运行时多态,基类指针调用派生类函数;纯虚函数定义抽象类。

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

准备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中最常用的容器,理解其动态扩容机制至关重要。

移乐AI
移乐AI

AI一键生成、处理各种图片

移乐AI 211
查看详情 移乐AI

立即学习C++免费学习笔记(深入)”;

  • 连续内存:vector的元素在内存中是连续存储的,这使得它能提供O(1)时间复杂度的随机访问能力,通过下标[]at()方法高效访问。
  • 动态扩容:当插入新元素导致当前容量不足时,vector会触发扩容。过程是:申请一块更大的新内存(通常是原容量的1.5倍或2倍),将旧数据复制或移动到新内存,然后释放旧内存。这个过程开销较大,但均摊下来末尾插入的时间复杂度仍是O(1)。
  • 效率考量:在末尾进行push_backpop_back非常高效。但在中间或头部插入、删除元素则效率很低,因为需要移动后续所有元素来保持内存连续性,时间复杂度为O(n)。
  • 优化技巧:如果能预估元素数量,应提前使用reserve()方法预留足够容量,避免频繁的内存分配和拷贝,显著提升性能。

虚函数与多态

这是C++面向对象三大特性之一的核心体现,常结合继承和设计模式提问。

  • 虚函数:在基类中使用virtual关键字声明的成员函数。它的存在是为了让派生类能够重写(override)该函数的行为。
  • 实现多态:通过基类的指针或引用去调用虚函数时,程序会在运行时根据指针或引用实际指向的对象类型来决定调用哪个版本的函数(基类的还是派生类的)。这被称为“动态绑定”或“晚绑定”。
  • 底层机制:编译器通常通过“虚函数表”(vtable)和“虚指针”(vptr)来实现。每个包含虚函数的类都有一个vtable,里面存放了该类所有虚函数的实际地址。该类的每个对象都包含一个隐藏的vptr,指向其所属类的vtable。调用虚函数时,程序通过vptr找到vtable,再查表得到正确的函数地址。
  • 纯虚函数:在虚函数声明后加上= 0,如virtual void func() = 0;。包含纯虚函数的类称为抽象类,不能被实例化,只能作为基类被继承。
基本上就这些。

以上就是C++面试常见八股文汇总_C++后端开发面试题与答案解析的详细内容,更多请关注php中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号