当前位置: 首页 > news >正文

C++面试题其一

C和C++的区别

C和C++都是广泛使用的编程语言,但它们有显著的区别:

  1. 语言范式

    • C:是一种过程化编程语言,强调过程和函数的使用。
    • C++:是一种多范式编程语言,支持面向对象编程、泛型编程和过程化编程。
  2. 类和对象

    • C:没有类和对象的概念。
    • C++:引入了类和对象的概念,支持封装、继承和多态。
  3. 标准库

    • C:标准库比较小,主要包含一些基础的函数库。
    • C++:标准库更大,包含STL(标准模板库),提供了丰富的数据结构和算法。
  4. 内存管理

    • C:主要使用mallocfree进行动态内存分配和释放。
    • C++:除了mallocfree,还提供了newdelete操作符,更适合对象的动态内存管理。
  5. 类型检查

    • C:类型检查相对宽松,支持隐式类型转换。
    • C++:类型检查更严格,支持重载、模板等特性。

C++中指针和引用的区别

  1. 定义

    • 指针:保存变量地址的变量,可以重新赋值,指向不同的变量。
    • 引用:是一个变量的别名,一旦绑定到一个变量,不能重新绑定。
  2. 语法

    • 指针:使用*&操作符。
    • 引用:使用&符号,但在使用时像普通变量一样。
  3. 内存分配

    • 指针:需要存储地址的空间。
    • 引用:不需要额外的存储空间。
  4. 初始化

    • 指针:可以不初始化。
    • 引用:必须在声明时初始化。

结构体struct和共同体union(联合)的区别

  1. 内存分配

    • struct:每个成员有自己的内存空间,总大小是所有成员大小的总和。
    • union:所有成员共享同一块内存,大小是最大成员的大小。
  2. 访问

    • struct:所有成员可以同时访问。
    • union:同一时刻只能访问一个成员,修改一个成员会影响其他成员。
  3. 用途

    • struct:用于需要同时访问多个数据的情况。
    • union:用于节省内存,需要在不同时间存储不同数据的情况。

#define和const的区别

  1. 类型检查

    • #define:是预处理指令,不进行类型检查。
    • const:是编译时常量,有类型检查。
  2. 作用范围

    • #define:在预处理阶段进行替换,不局限于某个作用域。
    • const:遵循作用域规则,只在声明的作用域内有效。
  3. 调试

    • #define:替换后无调试信息,难以调试。
    • const:有类型和作用域信息,易于调试。

重载overload,覆盖(重写)override,隐藏(重定义)overwrite的区别

  1. 重载(overload)

    • 定义:同一个作用域内,同名函数的参数列表不同。
    • 用途:增加函数的多态性,提高代码灵活性。
  2. 覆盖(重写)(override)

    • 定义:子类重新定义父类中的虚函数。
    • 用途:实现多态,允许子类提供特定实现。
  3. 隐藏(重定义)(overwrite)

    • 定义:子类定义了一个与父类同名的新函数,但参数列表不同或不是虚函数。
    • 用途:在子类中隐藏父类同名函数,防止误用父类函数。

new、delete、malloc、free之间的关系

  1. new/delete

    • new:分配对象内存并调用构造函数。
    • delete:释放对象内存并调用析构函数。
  2. malloc/free

    • malloc:分配指定字节的内存,不调用构造函数。
    • free:释放内存,不调用析构函数。

delete和delete[]的区别

  1. delete:用于释放单个对象。
  2. delete[]:用于释放数组对象。

虚函数、纯虚函数

  1. 虚函数

    • 定义:在基类中使用virtual关键字声明,允许子类重写。
    • 用途:实现运行时多态。
  2. 纯虚函数

    • 定义:在基类中声明,但不提供实现,用=0表示。
    • 用途:定义抽象类,要求子类必须实现。

STL库用过吗?常见的STL容器有哪些?算法用过几个?

  1. 常见STL容器

    • 序列式容器vectorlistdequearray
    • 关联式容器setmapmultisetmultimap
  2. 常见STL算法

    • 排序sort
    • 查找find
    • 变换transform
    • 复制copy

const的作用

  1. 常量声明const int x = 5;
  2. 常量指针const int* p;
  3. 常量成员函数int getValue() const;

虚函数的实现

通过虚函数表(vtable)实现,编译器为每个类创建一个vtable,存储虚函数指针。

堆和栈的区别

  1. 分配方式

    • :动态分配,需要手动管理(new/delete)。
    • :自动分配,函数调用结束自动释放。
  2. 存储内容

    • :动态分配的对象。
    • :局部变量和函数调用信息。

关键字static的作用

  1. 局部变量:静态局部变量,生存期延长到程序结束。
  2. 类成员:静态成员变量/函数,属于类而非对象。
  3. 文件作用域:静态全局变量/函数,限制在文件内可见。

STL中map和set的原理(关联式容器)

  1. map:基于红黑树,键值对存储,支持快速查找。
  2. set:基于红黑树,唯一元素存储,支持快速查找。

include<file.h>和#include"file.h"的区别

  1. 尖括号:从标准库路径查找。
  2. 双引号:从当前目录查找,然后是标准库路径。

什么是内存泄漏?面对内存泄漏和指针越界的方法

  1. 内存泄漏:动态分配的内存未释放。

    • 方法:使用智能指针,定期检查和释放。
  2. 指针越界:指针访问非法内存。

    • 方法:使用调试工具(如Valgrind),严格检查边界。

定义和声明的区别

  1. 定义:分配内存,如int x;
  2. 声明:说明存在,不分配内存,如extern int x;

C++文件编译与执行的四个阶段

  1. 预处理:处理#include#define等预处理指令。
  2. 编译:将源码翻译为目标代码。
  3. 汇编:将目标代码转换为机器指令。
  4. 链接:将目标文件和库文件合并生成可执行文件。

STL中的vector的实现,是怎么扩容的?

vector通过动态数组实现,当容量不足时,分配更大的内存(通常是原来的两倍),复制旧数据到新内存,并释放旧内存。

相关文章:

C++面试题其一

C和C的区别 C和C都是广泛使用的编程语言&#xff0c;但它们有显著的区别&#xff1a; 语言范式&#xff1a; C&#xff1a;是一种过程化编程语言&#xff0c;强调过程和函数的使用。C&#xff1a;是一种多范式编程语言&#xff0c;支持面向对象编程、泛型编程和过程化编程。 …...

CentOS7某天的samba服务搭建操作记录(还没成功)

#CentOS7 yum软件仓库阿里云 samba服务器配置失败 sensors成功了 (花了200元组装H61测试机&#xff0c;75元的主板只有一块能用&#xff0c;垃圾板但又不完全能用&#xff09; 2024.5月的某天记录如下&#xff1a; https://blog.csdn.net/dszgf5717/article/details/53732182 …...

Qt Demo:基于TCP协议的视频传输Demo

目录 1.设计思路 2.Pro文件配置 3.头文件引入 4.界面设计 5.初始化设备函数 6.发起视频链接函数 7.初始化定时器模块函数 8.TCP链接模块函数 9.处理接收的数据线程函数 10.实现功能展示 设计思路 基于TCP协议的视频传输Demo&#xff0c;设计要实现的功能主要是TCP传输还有视频&…...

内存管理【C++】

内存分布 C中的内存区域主要有以下5种 栈&#xff08;堆栈&#xff09;&#xff1a;存放非静态局部变量/函数参数/函数返回值等等&#xff0c;栈是向下增长的【地址越高越先被使用】。栈区内存的开辟和销毁由系统自动执行 堆&#xff1a;用于程序运行时动态内存分配&#xff…...

D3D 顶点格式学习

之前D3D画三角形的代码中有这一句&#xff0c; device.VertexFormat CustomVertex.TransformedColored.Format; 这是设置顶点格式&#xff1b; 画出的三角形如下&#xff0c; 顶点格式是描述一个三维模型的顶点信息的格式&#xff1b;可以包含以下内容&#xff0c; 位置…...

gmssl vs2010编译

1、虚拟机win10 x64&#xff0c;离线安装vs2010和2010sp1补丁&#xff1b; 2、安装ActivePerl_v5.28.1.0000和nasm-2.16.03-installer-x64均是默认完整安装&#xff1b; nasm官网下载&#xff1a; Index of /pub/nasm/releasebuilds/2.16.03/win64https://www.nasm.us/pub/nas…...

容器化部署gitlab、jenkins,jenkins应用示例

一、容器化部署docker和docker conpose安装 Docker&Docker-compose的安装及部署_docker 20 使用什么版本docker-compose-CSDN博客 1.docker 安装脚本 cat >01_docker.sh<<EOF #!/bin/bash yum remove docker \docker-client \docker-client-latest \docker-co…...

基于STM32的轻量级Web服务器设计

文章目录 一、前言1.1 开发背景1.2 实现的功能1.3 硬件模块组成1.4 ENC28J60网卡介绍1.5 UIP协议栈【1】目标与特点【2】核心组件【3】应用与优势 1.6 添加UIP协议栈实现创建WEB服务器步骤1.7 ENC28J60添加UIP协议栈实现创建WEB客户端1.8 ENC28J60移植UIP协议并编写服务器测试示…...

用r语言处理 Excel数据当中的缺失值方法

以下是使用 R 编程语言处理 Excel 缺失数据的一些常见方法示例代码&#xff1a;&#xff08;无需循环&#xff09; 读取包含缺失数据的 Excel 文件 data <- read.csv(“your_file.csv”) 查看数据中是否有缺失值 sum(is.na(data)) 用平均值填充缺失值 data c o l u m …...

AWS 高防和阿里云高防深度对比

随着网络攻击的不断增加&#xff0c;企业对于网络安全的需求也越来越高。在这种情况下&#xff0c;高防护服务成为了企业网络安全的重要组成部分。AWS和阿里云作为全球领先的云计算服务提供商&#xff0c;都提供了高防护服务&#xff0c;但它们之间存在着一些差异。我们九河云一…...

ctfshow web 月饼杯II

web签到 <?php //Author:H3h3QAQ include "flag.php"; highlight_file(__FILE__); error_reporting(0); if (isset($_GET["YBB"])) {if (hash("md5", $_GET["YBB"]) $_GET["YBB"]) {echo "小伙子不错嘛&#xff…...

「前端+鸿蒙」核心技术HTML5+CSS3(二)

1、开发者文档 开发者文档通常由浏览器厂商或技术社区提供,包含有关Web技术(如HTML、CSS、JavaScript)的详细信息,API文档,以及最佳实践。例如,MDN Web Docs是一个广泛认可的开发者资源。 2、块级元素与行列元素 块级元素:在页面上占据整行的元素,如<div>、<…...

unity接入live2d

在bilibili上找到一个教程&#xff0c;首先注意一点&#xff0c;你直接导入那个sdk&#xff0c;并且打开示例&#xff0c;显示的模型是有问题的&#xff0c;你需要调整模型上脚本的一个枚举值&#xff0c;调整它的渲染顺序是front z to我看教程时候&#xff0c;很多老师都没有提…...

练习题-17

以下题目来自2024年5月清华大学“丘成桐数学科学领军计划数学水平考试”。第11题本人参考了网友Fiddie (数学兔的极大理想&#xff09;的解答&#xff0c;原网址是 https://mp.weixin.qq.com/s/q9slRWL4iO_TcSdkmbfbbw. 第10题&#xff1a;在10维列向量构成的内积空间 V V V中…...

乐高小人分类项目

数据来源 LEGO Minifigures | Kaggle 建立文件目录 BASE_DIR lego/star-wars-images/ names [YODA, LUKE SKYWALKER, R2-D2, MACE WINDU, GENERAL GRIEVOUS ] tf.random.set_seed(1)# Read information about dataset if not os.path.isdir(BASE_DIR train/):for name in …...

个人关于ChatGPT的用法及建议

概述 这里只是个人常用的几个软件&#xff0c;做一下汇总&#xff0c;希望对各位有用。 如果有更高认知的朋友&#xff0c;请留下你的工具名称&#xff0c;提醒我一下&#xff0c;谢谢&#xff5e; 常用的chatgpt模型工具&#xff1a; 以下是一些知名的例子&#xff1a; 文…...

神经网络的工程基础(二)——随机梯度下降法|文末送书

相关说明 这篇文章的大部分内容参考自我的新书《解构大语言模型&#xff1a;从线性回归到通用人工智能》&#xff0c;欢迎有兴趣的读者多多支持。 本文涉及到的代码链接如下&#xff1a;regression2chatgpt/ch06_optimizer/stochastic_gradient_descent.ipynb 本文将讨论利用…...

常见的几种编码方式

常见的编码方式及其特点&#xff1a; 编码方式的设计是为了适应不同的字符集和应用需求&#xff0c;因此它们在表示字符时使用的位数和字节数各不相同 常见编码方式及其位数和字节数 ASCII&#xff08;American Standard Code for Information Interchange&#xff09;&#x…...

ubuntu移动硬盘重命名

因为在ubuntu上移动硬盘的名字是中文的&#xff0c;所以想要改成英文的。 我的方法&#xff1a; 将移动硬盘插到windows上&#xff0c;直接右键重命名。再插到ubuntu上名字就改变了。 别人的方法&#xff1a; ubuntu下如何修改U盘名字-腾讯云开发者社区-腾讯云 在自带的软件…...

VUE框架前置知识总结

一、前言 在学习vue框架中&#xff0c;总是有些知识不是很熟悉&#xff0c;又不想系统的学习JS&#xff0c;因为学习成本太大了&#xff0c;所以用到什么知识就学习什么知识。此文档就用于记录零散的知识点。主要是还是针对与ES6规范的JS知识点。 以下实验环境都是在windows环…...

LM2596 DC-DC开关电源芯片的实战应用与优化设计

1. LM2596芯片基础与工作原理 LM2596这颗DC-DC降压芯片可以说是电子工程师的老朋友了&#xff0c;从工业设备到消费电子产品都能见到它的身影。我第一次用它是在大学做智能车项目时&#xff0c;需要把12V电池电压降到5V给单片机供电。当时对比了几款芯片后选择了LM2596&#xf…...

别再傻傻克隆了!Conda 4.14+ 一键重命名虚拟环境的正确姿势(附版本检查)

Conda虚拟环境重命名终极指南&#xff1a;从版本检查到高效实践 在Python开发中&#xff0c;虚拟环境管理是每个开发者必备的核心技能。作为最流行的Python环境管理工具之一&#xff0c;Conda在4.14版本引入了一个革命性功能——直接重命名虚拟环境。这个看似简单的改进&#…...

深入解析SD卡CMD指令集:从寄存器操作到数据传输实战

1. SD卡基础寄存器全解析 当你把一张SD卡插入读卡器时&#xff0c;系统瞬间就能识别出容量和型号&#xff0c;这个过程背后其实是SD卡内部寄存器的功劳。这些寄存器就像SD卡的"身份证"和"体检报告"&#xff0c;存储着所有关键信息。我刚开始接触嵌入式开发…...

3.28 学习笔记

3.28 学习笔记web金融项目实战1.对于需求分析仔细研读需求规格说明书&#xff0c;以及相关文档&#xff0c;理解项目的目标和流程2.对于编写测试点&#xff08;1&#xff09;进行界面检查&#xff08;2&#xff09;从正确的业务流程编写&#xff0c;执行&#xff0c;查看对应功…...

【方案、开源】从零到国一:空地协同消防无人机系统全栈技术解析

1. 空地协同消防无人机系统设计思路 第一次接触这个项目时&#xff0c;我和很多同学一样感到无从下手。直到把整个系统拆解成几个核心模块&#xff0c;思路才逐渐清晰。这个系统的关键在于"空地协同"四个字&#xff0c;简单说就是让无人机和小车像两个配合默契的消防…...

OpenClaw安全防护:限制Qwen3.5-4B-Claude的文件访问范围

OpenClaw安全防护&#xff1a;限制Qwen3.5-4B-Claude的文件访问范围 1. 为什么需要限制文件访问范围 上周我在调试一个OpenClaw自动化任务时&#xff0c;差点酿成大错。当时我让Qwen3.5-4B模型帮我整理项目文档&#xff0c;结果它"聪明"地扫描了整个用户目录&#…...

4种SOCD模式深度解析:从键盘冲突到竞技优势的技术实现

4种SOCD模式深度解析&#xff1a;从键盘冲突到竞技优势的技术实现 【免费下载链接】socd SOCD cleaner tool for epic gamers 项目地址: https://gitcode.com/gh_mirrors/so/socd 在竞技游戏的世界里&#xff0c;每一次按键都可能是胜利与失败的分水岭。当玩家同时按下相…...

EEGLAB进阶实战:从原始EEG到ERP成分的精准提取与可视化分析

1. EEGLAB入门&#xff1a;理解ERP分析的核心流程 第一次接触EEGLAB时&#xff0c;我被它强大的功能和复杂的界面弄得晕头转向。经过多次实战&#xff0c;我发现理解ERP分析的完整流程是关键。就像做菜需要先备料再烹饪一样&#xff0c;EEG数据处理也需要遵循特定步骤。 原始EE…...

OpenClaw配置优化:提升GLM-4.7-Flash响应速度的3个技巧

OpenClaw配置优化&#xff1a;提升GLM-4.7-Flash响应速度的3个技巧 1. 为什么需要优化GLM-4.7-Flash的响应速度 上个月我在本地部署了OpenClaw对接GLM-4.7-Flash模型&#xff0c;最初的使用体验并不理想。一个简单的文件整理任务需要等待近20秒才能开始执行&#xff0c;而复杂…...

快速集成A2A Agent

面我们提到可以将MCP服务也封装为一个Tool&#xff08;AIFunction&#xff09;让Agent调用&#xff0c;这里A2A Agent也是一样的道理。 这样做的好处是&#xff1a;让MAF中的Agent像调用本地函数一样调用远程A2A Agent 或 MCP Server。 下面的代码展示了在MAF中将A2A Card转换…...