c++八股3

  1. 多态:在C++中,如果类B继承自A,并且定义了虚函数f(), 类C又继承自B但没有重写f(),那么当你执行如下代码:
Cpp
C *c = new C();
c->f();

调用的将是B类中实现的f()方法,因为C没有提供自己的覆盖版本。若要调用A类(基类)的方法,可以使用显式调用父类的成员函数语法,例如在C类中:

Cpp
class C : public B {
public:void f() override {B::f(); // 显式调用B类中的f()方法// 或者执行C类自己的逻辑}
};
  1. 二叉树、平衡二叉树(如AVL树或红黑树)、B+树和红黑树访问一个元素的时间复杂度分析:
    ● 二叉树:最坏情况下(即树退化为链表时),时间复杂度为O(n)。
    ● 平衡二叉树:如AVL树或红黑树,其高度保持在logN级别,所以访问一个元素的时间复杂度为O(logN)。
    ● B+树:在数据库索引等场景常见,通常用于磁盘存储,内部节点不存储数据,所有叶子节点在同一层,因此查找任意键值的时间复杂度也是O(logN)。
    ● 红黑树:一种自平衡二叉查找树,同样保证了查找、插入、删除操作的时间复杂度为O(logN)。
  2. 堆和栈的区别:
    ○ 栈(Stack):由编译器自动分配和释放;空间较小但快速,常用于存储局部变量、函数参数和返回地址等。栈内存分配是连续的、后进先出(LIFO)原则。
    ○ 堆(Heap):由程序员手动申请和释放(通过new和delete关键字);空间较大但分配和回收相对慢,用于动态创建对象和数组等,大小可变。
  3. 注意:在C++中,new关键字是在堆上实例化对象的,而不是栈上。栈上的对象通常是直接声明和初始化的,生命周期与所在作用域相关联。
  4. 四次挥手:这是TCP连接断开的过程,包括FIN(结束)、ACK(确认)、FIN+ACK、ACK四个阶段,确保双方都已知晓连接关闭并释放资源。半连接:通常指的是TCP的“半开连接”,即三次握手过程中服务器收到SYN报文并发送了SYN+ACK回应,但客户端没有回复ACK,此时服务器端会维持一个半连接状态。TCP与UDP区别:
    ○ TCP提供面向连接、可靠传输的服务,有流量控制、拥塞控制和错误校验机制,无消息长度限制,但存在一定的延迟和额外开销。
    ○ UDP则是无连接的,不保证消息的顺序和可靠性,但是传输效率高,适用于实时应用如音视频流传输。UDP的数据包有一个最大长度限制,由MTU(最大传输单元)决定,通常在IP层会有大约65535字节的限制,但实际上由于头部开销,有效负载会更小。
  5. 进程和线程的区别:
    ○ 进程是操作系统资源分配的基本单位,每个进程拥有独立的内存空间、文件描述符集和其他系统资源,互不影响;
    ○ 线程是CPU调度和执行的基本单位,同一进程内的多个线程共享进程的内存空间和全局变量,切换代价小,通信便捷。
  6. 程序从硬盘到CPU执行过程:
    ○ 首先,操作系统加载器将硬盘上的可执行文件读入内存,这个过程包括读取程序的代码段、数据段以及必要的资源;
    ○ 操作系统为该程序创建一个新的进程,并为其分配相应的内存空间;
    ○ 控制权转移到新进程,CPU开始执行程序的第一条指令;
    ○ 程序运行过程中,根据需要创建线程,线程在进程中并发执行,共享进程资源;
    ○ CPU通过分时复用的方式在不同线程间切换,使得多任务能够同时进行。

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

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

相关文章

onlyoffice导入字体

1.进入容器 docker exec -it onlyoffice-server bash 2.删除自带字体 cd /var/www/onlyoffice/documentserver/core-fonts/ rm -rf * 3.退出容器 exit 1.将字体放入/home/Fonts/ ,如果不存在可以新建 2.执行docker cp /home/Fonts onlyoffice-server:/var/www/only…

avcodec send_packet和receive_frame

下面是解码的过程代码,对输入给解码器的pkt桢类型进行判断,关键桢打印出is key frame,解码出来的桢根据pict_type打印桢类型出I/P/B桢类型,从这里也可以看出来,没解码之前,AVPacket只能得到是否关键帧&…

Zung氏焦虑症测试SAS

SAS被称为焦虑自评量表,是一种用来测量焦虑症状程度以及观察治疗过程中变化情况的心理量表。主要用于评估心理状态,辅助参考数据,也是焦虑评定的标准。焦虑自评量表系是由William W.K. Zung编制的,该量表已成为心理咨询师、心理医…

【Python基础】一文搞懂:Python中文件路径的处理方式

文章目录 1 引言2 os 模块2.1 常用函数2.2 示例 3 pathlib 模块3.1 常用类和方法3.1 示例 4 比较 os 和 pathlib5 实例演示5.1 使用 os 模块5.2 使用 pathlib 模块5.3 封装为pathlib_example.py脚本 6 结语 1 引言 在 Python 编程中,正确处理文件路径是一个常见且重…

【GitHub项目推荐--克隆你的声音】【转载】

今天推荐一个黑科技开源项目,只需要你 5 秒钟的声音对话,就能克隆出你的声音,而且能够实时的生成你任意语音。 是不是很顶? 我举个例子,如果我这里有 300 条你说话的语音,我把你的语音数据用这个开源项目…

为求增长,这家消金公司也开始发力小微

来源 | 镭射财经(leishecaijing) 消金公司业务转向,小微贷越来越香,已成消金行业近年转型奋进的一个插曲。 为求业绩增长,拓宽获客基数,越来越多的消金公司不再局限于单一的C端客群,将目光瞄向…

Android jar包编译及集成

Jar包编译和集成有两种编译方式,mk和bp,Android 7版本之后逐渐采用bp格式编译,目前14版本还是兼容mk方式编译,具体写法入下: Android jar包编译 mk: 如果需要打包到systemimg,则需要将此jar包添…

MOJO基础语法

文章目录 打印变量及方法声明结构体python集成 打印 print("Hello Mojo!")变量及方法声明 变量: 使用’ var ‘创建一个可变的值,或者用’ let 创建一个不可变的值。 方法: 方法可以使用python中的def 方法声明,也引…

vue组件中data为什么必须是一个函数?

在Vue组件中,data为组件的私有数据对象,每个实例都必须要有自己独立的数据对象。为了确保每个实例都有独立的数据对象,Vue规定data必须是一个函数,而不是一个简单的对象。 当data是一个简单的对象时,所有组件的实例会…

认知觉醒(九)

认知觉醒(九) 专注力——情绪和智慧的交叉地带 第一节 情绪专注:一招提振你的注意力 用元认知来观察自己的注意力是一件很有意思的事情,相信你可以轻易观察到这种现象:身体做着A,脑子却想着B。 跑步的时候,手脚在…

录第第五十八天——每日温度,下一个更大元素|

单调栈 栈里的元素保持单调递增或者递减,栈内元素是元素下标。单调栈的本质是空间换时间,因为在遍历的过程中需要用一个栈来记录右边第一个比当前元素高的元素,优点是整个数组只需要遍历一次求一个元素右边第一个更大元素,单调栈…

行业分享----dbaplus174期:美团基于Orchestrator的MySQL高可用实践

记录 MySQL高可用方案-MMM、MHA、MGR、PXC https://blog.csdn.net/jycjyc/article/details/119731980 美团数据库高可用架构的演进与设想 https://tech.meituan.com/2017/06/29/database-availability-architecture.html

js事件委托是什么?

事件委托是一种 JavaScript 编程技术,用于在父元素上设置事件监听器,以捕获其子元素的事件。这种技术通常用于动态生成元素的场景,其中子元素的增删改频繁,如果直接在子元素上设置事件监听器,会使得代码复杂且难以维护…

C语言实现双向链表

1.版本一 由于节点之间的连接变多 所以我们最好提前将前驱节点和后继节点用变量保存下来 以免等下在进行节点之间的指向时出错 #include <stdio.h> #include <stdlib.h> #include <stdbool.h> // 节点类 typedef struct Node {// 数据域int data;// 指针域…

【python playwright 安装及验证】

python playwright pip install playwright pip install playwright -i http://mirrors.aliyun.com/pypi/simple/ playwright codegen -o script.py -b chromium --ignore-https-errors --viewport-size “2560,1440” --proxy-server “http://100.8.64.8:60497” https://w…

Harbor安装

采用原生的方式安装Harbor 下载Harbor安装包&#xff1a;https://github.com/goharbor/harbor/releases/download/v2.3.4/harbor-offline-installer-v2.3.4.tgz 拖拽到Linux并解压&#xff1a; tar -zxvf harbor-offline-installer-v2.3.4.tgz -C /usr/local/修改Harbor配置文…

webpack的性能优化(二)——减少打包体积

优化webpack性能时&#xff0c;主要集中在两个方面&#xff1a;优化构建后的结果和优化构建时的速度。前一篇文章已经介绍了如何通过webpack的分包来优化构建后的结果。而在本篇文章中&#xff0c;我们将从减少打包体积的角度来探讨。 1.通过CDN链接引入第三方库 CDN是指通过相…

基于Python编程实现简单网络爬虫实现

引言 网络爬虫&#xff08;英语&#xff1a;web crawler&#xff09;&#xff0c;也叫网络蜘蛛&#xff08;spider&#xff09;&#xff0c;是一种用来自动浏览万维网的网络机器人。其目的一般为编纂网络索引。 --维基百科 网络爬虫可以将自己所访问的页面保存下来&#xff0c…

python 通过定时任务执行pytest case

这段Python代码使用了schedule库来安排一个任务&#xff0c;在每天的22:50时运行。这个任务执行一个命令来运行pytest&#xff0c;并生成一个报告。 代码开始时将job_done变量设为False&#xff0c;然后运行预定的任务。一旦任务完成&#xff0c;将job_done设置为True并跳出循…

Netty-Netty实现自己的通信框架

通信框架功能设计 功能描述 通信框架承载了业务内部各模块之间的消息交互和服务调用&#xff0c;它的主要功能如下&#xff1a; 基于 Netty 的 NIO 通信框架&#xff0c;提供高性能的异步通信能力&#xff1b; 提供消息的编解码框架&#xff0c;可以实现 POJO 的序列化和反…