前后端面试题》专栏集合了前后端各个知识模块的面试题,包括html,javascript,css,vue,react,java,Openlayers,leaflet,cesium,mapboxGL,threejs,nodejs,mangoDB,MySQL,Linux… 。

前后端面试题-专栏总目录

在这里插入图片描述

文章目录

  • 一、本文面试题目录
      • 31. 什么是C++中的模板元编程(TMP)?
      • 32. 解释C++中的`alignas`和`alignof`操作符。
      • 33. 什么是C++中的初始化列表?
      • 34. 解释C++中的`decltype`说明符。
      • 35. 什么是C++中的范围`for`循环?
      • 36. 解释C++中的`std::initializer_list`。
      • 37. 什么是C++中的`std::move`?
      • 38. 解释C++中的`std::function`。
      • 39. 什么是C++中的`std::bind`?
      • 40. 解释C++中的内存对齐的重要性。
  • 二、100道面试题目录列表

一、本文面试题目录

31. 什么是C++中的模板元编程(TMP)?

答案
模板元编程利用C++模板在编译期执行计算,将运行时开销转移到编译期。常见用途:

  1. 编译期计算(如阶乘)。
  2. 类型检查和转换。
  3. 代码生成。

示例代码

// 编译期阶乘计算
template <int N>
struct Factorial {static constexpr int value = N * Factorial<N-1>::value;
};// 特化终止条件
template <>
struct Factorial<0> {static constexpr int value = 1;
};int main() {constexpr int result = Factorial<5>::value; // 编译时计算为120
}

32. 解释C++中的alignasalignof操作符。

答案

  • alignof:返回类型的对齐要求(字节数)。
  • alignas:指定变量或类型的对齐方式。

示例代码

struct alignas(16) MyStruct { // 强制对齐到16字节边界char data[10];
};int main() {std::cout << alignof(MyStruct) << std::endl; // 输出16
}

33. 什么是C++中的初始化列表?

答案
初始化列表用于在构造函数体执行前初始化成员变量,效率更高,特别是对const或引用类型。

示例代码

class MyClass {
private:int value;const std::string name;
public:// 使用初始化列表MyClass(int val, const std::string& nm) : value(val), name(nm) {}// 错误:不能在构造函数体内初始化const成员// MyClass(int val, const std::string& nm) {//     value = val;//     name = nm; // 错误// }
};

34. 解释C++中的decltype说明符。

答案
decltype用于在编译时推导表达式的类型,常用于模板编程和泛型代码。

示例代码

int func() { return 42; }int main() {decltype(func()) x; // x的类型为int(func返回值的类型)int a = 10;int& b = a;decltype(b) c = a; // c的类型为int&(引用类型)
}

35. 什么是C++中的范围for循环?

答案
范围for循环(C++11引入)提供简洁的语法遍历容器或序列,等价于迭代器遍历。

示例代码

#include <vector>int main() {std::vector<int> nums = {1, 2, 3, 4};// 只读访问for (int num : nums) {std::cout << num << " ";}// 修改元素(使用引用)for (int& num : nums) {num *= 2;}
}

36. 解释C++中的std::initializer_list

答案
std::initializer_list允许函数或构造函数接受初始化列表,用于统一的初始化语法。

示例代码

#include <initializer_list>class MyVector {
private:int* data;size_t size;
public:// 接受初始化列表的构造函数MyVector(std::initializer_list<int> list) : size(list.size()) {data = new int[size];std::copy(list.begin(), list.end(), data);}
};int main() {MyVector vec = {1, 2, 3, 4}; // 使用初始化列表构造
}

37. 什么是C++中的std::move

答案
std::move用于将左值转换为右值引用,从而触发移动语义,避免不必要的拷贝。

示例代码

#include <utility>class MyString {
public:MyString(MyString&& other) noexcept { /* 移动构造函数 */ }
};int main() {MyString a;// MyString b = a; // 拷贝构造MyString c = std::move(a); // 移动构造(a变为有效但未指定状态)
}

38. 解释C++中的std::function

答案
std::function是通用多态函数包装器,可存储、复制和调用任何可调用对象(函数、lambda、成员函数等)。

示例代码

#include <functional>int add(int a, int b) { return a + b; }struct Adder {int operator()(int a, int b) const { return a + b; }
};int main() {// 存储普通函数std::function<int(int, int)> func1 = add;// 存储lambdastd::function<int(int, int)> func2 = [](int a, int b) { return a + b; };// 存储函数对象std::function<int(int, int)> func3 = Adder();// 调用int result = func1(1, 2); // 结果为3
}

39. 什么是C++中的std::bind

答案
std::bind用于创建函数对象(绑定器),将可调用对象与其参数绑定,部分应用参数或重排序。

示例代码

#include <functional>int add(int a, int b) { return a + b; }int main() {// 绑定add函数,固定第一个参数为10auto addTen = std::bind(add, 10, std::placeholders::_1);// 调用绑定的函数int result = addTen(5); // 等价于add(10, 5),结果为15
}

40. 解释C++中的内存对齐的重要性。

答案
内存对齐要求数据地址是其大小的整数倍,主要影响:

  1. 性能:未对齐的内存访问可能需要多次读取。
  2. 兼容性:某些硬件平台强制要求对齐访问。
  3. 结构体大小:编译器可能插入填充字节以满足对齐要求。

示例代码

struct Unaligned {char c;     // 1字节int i;      // 4字节(通常对齐到4字节边界,因此c后填充3字节)
};              // 总大小8字节struct Aligned {int i;      // 4字节char c;     // 1字节char padding[3]; // 手动填充3字节,使总大小为8字节
};int main() {std::cout << sizeof(Unaligned) << std::endl; // 输出8std::cout << sizeof(Aligned) << std::endl;   // 输出8
}

二、100道面试题目录列表

文章序号C++面试题100道
1C++面试题及详细答案100道(01-10)
2C++面试题及详细答案100道(11-20)
3C++面试题及详细答案100道(21-30)
4C++面试题及详细答案100道(31-40)
5C++面试题及详细答案100道(41-50)
6C++面试题及详细答案100道(51-60)
7C++面试题及详细答案100道(61-70)
8C++面试题及详细答案100道(71-80)
9C++面试题及详细答案100道(81-90)
10C++面试题及详细答案100道(91-100)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/pingmian/93243.shtml
繁体地址,请注明出处:http://hk.pswp.cn/pingmian/93243.shtml
英文地址,请注明出处:http://en.pswp.cn/pingmian/93243.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

给纯小白的 Python 操作 Excel 笔记

&#x1f9f0; 1. 先装工具电脑键盘按 Win R&#xff0c;输入 cmd&#xff0c;回车&#xff0c;把下面一行粘进去回车&#xff0c;等它跑完。 bashpip install openpyxl——————————————————&#x1f6e0;️ 2. 打开一个空白的 Excel 打开 Jupyter Notebook…

HTML 常用属性介绍

目录 HTML 属性 HTML 属性速查表 一、通用属性&#xff08;所有元素适用&#xff09; 二、链接与引用相关属性 三、表单与输入控件属性 四、媒体与多媒体属性 五、事件属性&#xff08;常用 JavaScript 事件&#xff09; 六、其他常用属性 核心通用属性 id 属性 cla…

HTML5练习代码集:学习与实践核心特性

本文还有配套的精品资源&#xff0c;点击获取 简介&#xff1a;HTML5作为新一代网页标准&#xff0c;对Web开发提供了更丰富的功能和工具。本练习代码集专门针对HTML5的核心特性&#xff0c;包括语义化标签、离线存储、多媒体支持、图形绘制等&#xff0c;以及CSS3的3D效果和…

【RH134知识点问答题】第 10 章:控制启动过程

目录 1. 请简要说明 RHEL9 的启动过程。 2. 系统重启和关机的命令分别是什么? 3. Systemd target 是什么&#xff1f; 4. 重置丢失的 root 密码需要哪些步骤&#xff1f; 5. 如何让系统日志在重启后持久保留 1. 请简要说明 RHEL9 的启动过程。 答&#xff1a;①开机自检…

Apollo10.0学习之固态雷达与IMU的外参标定

固态雷达&#xff08;如Livox、禾赛等非旋转式激光雷达&#xff09;与IMU&#xff08;惯性测量单元&#xff09;的外参标定&#xff08;Extrinsic Calibration&#xff09;是自动驾驶、机器人定位&#xff08;如LIO-SAM、FAST-LIO&#xff09;的关键步骤。1. 标定原理 外参标定…

HTML5实现古典音乐网站源码模板1

文章目录 1.设计来源1.1 网站首页1.2 古典音乐界面1.3 著名人物界面1.4 古典乐器界面1.5 历史起源界面 2.效果和源码2.1 动态效果2.2 源代码 源码下载万套模板&#xff0c;程序开发&#xff0c;在线开发&#xff0c;在线沟通 作者&#xff1a;xcLeigh 文章地址&#xff1a;http…

40 C++ STL模板库9-容器2-vector

C STL模板库9-容器2-vector 文章目录C STL模板库9-容器2-vector一、基础概念1. 类型成员&#xff08;Type Members&#xff09;2. 模板参数二、构造函数1. 语法2. 示例三、元素访问1. 函数说明2. 示例代码四、容量操作1. 函数说明2. 关键点说明3. 关键操作解析4. 操作示例五、修…

GPT-5系列文章2——新功能、测试与性能基准全解析

引言 2025年8月&#xff0c;OpenAI正式发布了其新一代旗舰模型GPT-5。与业界此前期待的AGI(人工通用智能)突破不同&#xff0c;GPT-5更像是OpenAI对现有技术的一次深度整合与用户体验优化。本文将全面解析GPT-5的新特性、实际测试表现以及官方发布的基准数据&#xff0c;帮助开…

利用cursor+MCP实现浏览器自动化释放双手

小伙伴们&#xff0c;我们今天利用cursorMCP实现浏览器自动化&#xff0c;释放双手&#xff0c;工作效率嘎嘎提升&#xff01;前期准备&#xff1a;安装node.js网址&#xff1a;https://nodejs.org/zh-cn下载下来安装即可。 下载browser-tools-mcp扩展程序&#xff1a;下载扩展…

指针/边界索引混淆梳理

在处理数组/链表等数据结构时&#xff0c;时常混淆长度和指针序号。处理技巧&#xff1a;使用0-base索引。则区间长度 rightIndex - LeftIndex 1总长度 lastIndex - firstIndex 1链表创建一个dummy节点&#xff0c;添加到head前&#xff0c;则可认为从索引0开始。末尾指针判…

LeetCode 刷题【43. 字符串相乘】

43. 字符串相乘 自己做 解1&#xff1a;矩阵计数 class Solution { public:string multiply(string num1, string num2) {int len1 num1.size();int len2 num2.size();if (num1[0] 0 || num2[0] 0) //结果为0的情况return "0";//存储计算过程的矩阵vector…

NLP数据增强方法及实现-A

目录 词替换 主要参考&#xff1a;paddlenlp/data_aug模块 词替换数据增强策略也即将句子中的词随机替换为其他单词进行数据增强&#xff0c;这里我们将介绍如何使用paddlenlp.dataaug.WordSubstitute进行词级别替换的数据增强。 WordSubstitute 参数介绍&#xff1a;aug_ty…

EhViewer安卓ios全版本类下载安装工具的完整路径解析

开发一款类似EhViewer的下载安装工具&#xff08;集下载管理、应用部署等功能于一体&#xff09;&#xff0c;需要经历从需求锚定到落地发布的系统性流程。以下从需求拆解到技术落地的全维度指南&#xff0c;将帮你理清开发脉络&#xff0c;避开常见陷阱。安装 GitHub - huangy…

MySQL 主键详解:作用与使用方法

在 MySQL 数据库中&#xff0c;主键&#xff08;Primary Key&#xff09; 是表结构设计中最重要的约束之一。它不仅是数据唯一性的保障&#xff0c;也是多表关联、查询优化的核心工具。本文将从 主键的作用 和 主键的用法 两个方面进行讲解&#xff0c;并配合代码示例帮助理解一…

lib.dom.d.ts

lib.dom.d.ts 是一个 TypeScript 类型声明文件&#xff0c;它是 TypeScript 标准库的一部分&#xff0c;用于定义浏览器 DOM&#xff08;文档对象模型&#xff09;相关的类型和接口。这个文件为开发者提供了浏览器中所有内置的 DOM 类型的定义&#xff0c;包括 localStorage、d…

Spring 工具类:StopWatch

StopWatch 是 Spring 框架提供的一个简单而强大的计时工具类&#xff0c;用于测量代码块的执行时间。它特别适合在开发阶段进行性能分析、调试和优化。 基本使用方法 // 创建 StopWatch 实例&#xff08;可指定 ID&#xff09; StopWatch stopWatch new StopWatch("性能分…

解决 VSCode 运行 Python 时 ModuleNotFoundError: No module named ‘open_webui‘ 问题

目录 1. 问题原因分析 2. 解决思路 3. 解决步骤 3.1 打开或创建 .vscode/launch.json 3.2 添加调试配置 3.3 配置说明 3.4 运行测试 4. 总结 在使用 VSCode 调试 Python 项目时&#xff0c;我们经常会遇到类似下面的错误&#xff1a; Exception has occurred: ModuleN…

Python基础-数据结构

数据结构 Python提供了四种主要的内置数据结构&#xff1a;列表&#xff08;List&#xff09;、元组&#xff08;Tuple&#xff09;、字典&#xff08;Dictionary&#xff09;和集合&#xff08;Set&#xff09;。每种数据结构都有其特定的用途和特性。 Python数据结构概览&…

NLP学习之Transformer(1)

初识 Transformer &#xff08;1&#xff09; 1.简介 1.1主要特点&#xff1a; self-attention&#xff1a; 自注意力机制&#xff0c;Transformer的核心是自注意力机制&#xff0c;它允许模型在处理某个位置的输入时&#xff0c;能够直接与其他位置的输入交互&#xff0c;而不…

C语言笔记6:C高级 part1

1.gcc 编译器 编译流程 预处理-》编译》汇编》链接》 E 预处理的命令 S 编译汇编代码 -c汇编阶段命令 -o 输出对应的文件GDB调试工具2.作用域存储分类// C高级部分知识多&#xff0c; 加上这周 我学的知识量有点爆炸。家里又有事情&#xff0c;这周末要回老家 争取下周补齐吧。…