C++面试问题收集

news2024/9/24 5:30:39

 0 持续更新中


目录

 0 持续更新中

1 C++语言相关

1.1 malloc/free和new/delete区别

1.2 内存泄漏

1.3 堆区和栈区的区别

1.4 宏定义和const的区别

1.5 多态

1.6 类中的静态成员变量

2 操作系统相关

2.1 进程和(用户)线程的区别

2.2 系统调用

2.3 中断

2.4 进程切换

2.5 页面置换算法

2.6 虚拟内存的实现

2.7 线程间的通信

3 计算机网络

3.1 TCP和UDP的区别

3.2 TCP三次握手四次挥手

3.3 TCP和UDP的结构

4 数据库

4.1 innodb引擎

5 算法题

5.1 给定一个数组,查找重复元素


1 C++语言相关


1.1 malloc/free和new/delete区别

  • malloc/free 是c语言中的库函数。new/delete是C++中的关键字。库函数不可以重载,关键字可以。
  • malloc要自己计算内存大小。new是有编译器计算内存大小。
  • malloc返回的是void*指针。new返回的是对应类型的指针。
  • new和delete使用时会调用构造函数和析构函数,但malloc和free不会。

1.2 内存泄漏

  • 程序占有内存资源而不释放内存资源。
  • 堆内存泄漏:malloc和new后忘记free和delete。
  • 系统资源泄漏:忘记释放各种句柄。
  • 数组对象没有一个一个delete或者没用delete[]。
  • 基于基类指针生成子类对象,基类的析构函数不是虚函数导致子类调用基类的析构函数而不是自己的析构函数。

1.3 堆区和栈区的区别

  • 管理方式不同:栈是由编译器自动申请和释放的,堆是由程序员自己申请和释放的。
  • 空间大小不同。
  • 是否产生内存碎片:栈是不会产生内存碎片,堆会。
  • 堆是动态分配,栈既有动态分配又有静态分配。
  • 栈的效率高于堆。

1.4 宏定义和const的区别

2024-春招-4399-一面

答案


1.5 多态

2024-春招-4399-一面

答案


1.6 类中的静态成员变量

2024-春招-4399-一面

答案


2 操作系统相关


2.1 进程和(用户)线程的区别

  • 进程是资源分配的基本单位。线程是CPU调度的基本单位。
  • 进程切换效率低,线程切换效率。
  • 进程有独立的虚拟地址空间。线程没有,但线程有栈,pc,本地存储等独立空间。
  • 线程必须依附与进程,一个进程可以有多个线程。
  • 同一进程内的线程切换就不需要CPU切换进程。
  • 进程切换效率低,线程切换效率

2.2 系统调用

C语言调有exec()函数就可以调用一个系统调用。

  • 执行系统调用时,CPU会从用户态转变为核心态。
  • 系统要调用外部资源时需要执行系统调用,如键盘输入,打印机等。
  • 流程:传递系统调用参数->执行陷入指令(用户态) -> 执行系统调用相应服务程序(核心态)->返回用户程序。

2.3 中断

  • 硬中断:硬件相关。如—网络流量不断送进一个有限的缓冲区,使用硬中断可以要求CPU优先处理这个有限的缓冲区以免数据丢失。

  • 软中断:用户相关。应用程序通过系统调用使CPU从用户态转为内核态。

2.4 进程切换

  • 并行性:多个CPU分别运行不同的进程。
  • 并发性:CPU不断切换进程达到类似对个进程并行的效果。
  • 进程切换有个三角裤图。

2.5 页面置换算法

程序发生缺页中断,执行页面置换算法。

  • 目的:减少页面置换的次数
  • 先进先出算法。
  • 最佳置换算法。
  • 最近未使用算法。
  • 时钟页面置换算法。

2.6 虚拟内存的实现


2.7 线程间的通信

2024-春招-4399-一面

答案


3 计算机网络


3.1 TCP和UDP的区别

2024-春招-4399-一面

相同点:

  • 均属于传输层协议。
  • 为应用层提供服务。

不同点:

  • TCP是面向连接,UDP是面向未连接。
  • TCP是可靠传输,UDP是不可靠传输。
  • TCP是1对1,UDP可以多对多。
  • TCP是基于字节流(分段,分片),UDP基于报文。

3.2 TCP三次握手四次挥手

百度的图。


3.3 TCP和UDP的结构

来自百度

4 数据库


4.1 innodb引擎

B+树


5 算法题


5.1 给定一个数组,查找重复元素

2024-春招-4399-一面

这里我回答的是用哈希表,时间复杂度是O(n);

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【论文阅读】MoCoGAN: Decomposing Motion and Content for Video Generation

MoCoGAN: Decomposing Motion and Content for Video Generation 引用: Tulyakov S, Liu M Y, Yang X, et al. Mocogan: Decomposing motion and content for video generation[C]//Proceedings of the IEEE conference on computer vision and pattern recognitio…

【Java基础】IO流(二)字符集知识

目录 字符集知识 1、GBK字符集 2、Unicode字符集(万国码) 3、乱码 4、Java中编码和解码的方法 字符集知识 字符(Character):在计算机和电信技术中,一个字符是一个单位的字形、类字形单位或符号的基本信…

最详细数据仓库项目实现:从0到1的电商数仓建设(采集部分)

1、数据库和数据仓库的区别: 数据仓库就是data warehouse,数据小卖店,相当于是对数据加工,计算然后对外提供服务,而不是单纯的存储 2、数据流转过程中数据仓库中的数据源部分 数据源部分的数据**不是只同步数据库当…

YOLOv8改进 | 图像去雾 | 特征融合注意网络FFA-Net增强YOLOv8对于模糊图片检测能力(北大和北航联合提出)

一、本文介绍 本文给大家带来的改进机制是由北大和北航联合提出的FFA-net: Feature Fusion Attention Network for Single Image Dehazing图像增强去雾网络,该网络的主要思想是利用特征融合注意力网络(Feature Fusion Attention Network)直接恢复无雾图像,FFA-Net通过特征…

海格里斯HEGERLS托盘搬运机器人四向车引领三维空间集群设备柔性运维

随着市场的不断迅猛发展变化,在物流仓储中,无论是国内还是海外,都对托盘式解决方案需求量很大。顾名思义,托盘式解决方案简单理解就是将产品放置在托盘上进行存储、搬运和拣选。 面对托盘式方案需求,行业中常见的方案是…

Wechaty 企业微信机器人报:return ‘port‘ in address

1.使用的依赖: "file-box": "^1.5.5", "qrcode": "^1.5.3", "install": "^0.13.0", "grpc/grpc-js": "^1.10.1","juzi/wechaty": "^1.0.65", "juzi/wec…

学习使用js获取当前ip地址的方法,使用第三方API获取ip地址

学习使用js获取当前ip地址的方法,使用第三方API获取ip地址 使用 DNS 查询使用第三方 API 使用 DNS 查询 DNS 是一种用于解析主机名为 IP 地址的系统。可以使用 JavaScript DNS 查询来获取本机IP地址。下面是如何使用 JavaScript 进行DNS查询的示例代码。 <p class"loc…

csp模拟题(201604-2,俄罗斯方块模拟下坠)

题目 问题描述 俄罗斯方块是俄罗斯人阿列克谢帕基特诺夫发明的一款休闲游戏。   游戏在一个15行10列的方格图上进行&#xff0c;方格图上的每一个格子可能已经放置了方块&#xff0c;或者没有放置方块。每一轮&#xff0c;都会有一个新的由4个小方块组成的板块从方格图的上方…

智慧城市物联网建设:提升城市管理效率与居民生活品质

目录 一、智慧城市物联网建设的意义 1、提升城市管理效率 2、改善居民生活品质 3、促进城市可持续发展 二、智慧城市物联网建设面临的挑战 1、技术标准与互操作性问题 2、数据安全与隐私保护问题 3、投资与回报平衡问题 三、智慧城市物联网建设的实施策略 1、制定统一…

让数据在业务间高效流转,镜舟科技与NineData完成产品兼容互认

近日&#xff0c;镜舟科技与NineData完成产品兼容测试。在经过联合测试后&#xff0c;镜舟科技旗下产品与NineData云原生智能数据管理平台完全兼容&#xff0c;整体运行高效稳定。 镜舟科技致力于帮助中国企业构建卓越的数据分析系统&#xff0c;打造独具竞争力的“数据护城河”…

【SysBench】Linux 安装 sysbench-1.20

安装目的是为了对 MySQL 8.0.x 、PostgreSQL 进行基准测试。 0、sysbench 简介 sysbench 是一个可编写脚本的多线程基准测试工具&#xff0c;基于 LuaJIT 。 它最常用于数据库基准测试&#xff0c;但也可以 用于创建任意不涉及数据库服务器的复杂工作负载。 sysbench 附带以…

服务注册与发现:Nacos

为什么需要服务注册与发现 假设 mafeng-user 用户微服务部署了多个实例&#xff08;组成集群模式&#xff09;&#xff0c;如下图所示&#xff1a; 会出现以下几个问题&#xff1a; mafeng-order订单微服务发出Http远程调用时&#xff0c;该如何得知mafeng-user实例的IP和端口…

【机器学习智能硬件开发全解】(五)—— 政安晨:嵌入式系统基本素养【总线、地址、指令集、微架构】

在智能硬件领域中&#xff0c;一个核心概念是嵌入式系统&#xff0c;整体结构可以分为以下几个主要组成部分&#xff1a; 控制器&#xff1a;控制器是嵌入式系统的核心&#xff0c;负责处理和执行系统中的各种任务和功能。它通常由中央处理器&#xff08;CPU&#xff09;和相关…

Android studio 性能调试

一、概述 Android studio 的Profiler可用来分析cpu和memory问题&#xff0c;下来进行说明介绍。 二、Android studio CPU调试 从开发模拟器或设备中启动应用程序&#xff1b; 在 Android Studio 中&#xff0c;通过选择View > Tool Windows > Profiler启动分析器。 应…

【NeurIPS】解决离线强化学习中的互模拟缺陷,FaceChain团队联合出品

一、论文 本文介绍被机器学习顶级国际会议NeurIPS 2023接收的论文 "Understanding and Addressing the Pitfalls of Bisimulation-based Representations in Offline Reinforcement Learning"&#xff0c;https://arxiv.org/abs/2310.17139 开源代码 https://gith…

【Python】进阶学习:计算一个人BMI(身体质量指数)指数

【Python】进阶学习&#xff1a;计算一个人BMI&#xff08;身体质量指数&#xff09;指数 &#x1f308; 个人主页&#xff1a;高斯小哥 &#x1f525; 高质量专栏&#xff1a;Matplotlib之旅&#xff1a;零基础精通数据可视化、Python基础【高质量合集】、PyTorch零基础入门教…

android seekbar thumb 上添加进度值并居中

环境:android studio 、java 项目需要在进度条的滑块上显示进度值并居中, UI设计图: 代码实现效果图: 浅色模式: 深色模式: 由于一开始没有自定义seekbar, 使用源码Seekar, 滑块要求时带圆角,所以需要设置thumbOffset 使滑条和滑块衔接顺畅。想实现UI效果,需要对文…

Hadoop大数据应用:HDFS 集群节点缩容

目录 一、实验 1.环境 2.HDFS 集群节点缩容 二、问题 1.数据迁移有哪些状态 2.数据迁移失败 一、实验 1.环境 &#xff08;1&#xff09;主机 表1 主机 主机架构软件版本IP备注hadoop NameNode &#xff08;已部署&#xff09; SecondaryNameNode &#xff08;已部署…

为什么手机和电视ip地址不一样

在数字化时代&#xff0c;我们每天都会与各种电子设备打交道&#xff0c;其中最常见的就是手机和电视。当我们连接到互联网时&#xff0c;这些设备都会被分配一个独特的IP地址&#xff0c;用于在网络上进行标识和通信。然而&#xff0c;您可能已经注意到&#xff0c;即使手机和…

【linux线程(二)】线程互斥与线程同步

&#x1f493;博主CSDN主页:杭电码农-NEO&#x1f493;   ⏩专栏分类:Linux从入门到精通⏪   &#x1f69a;代码仓库:NEO的学习日记&#x1f69a;   &#x1f339;关注我&#x1faf5;带你学更多操作系统知识   &#x1f51d;&#x1f51d; Linux线程 1. 前言2. 多线程互…