C++八股2

  1. 虚拟内存 虚拟内存是计算机系统内存管理的一种技术,它为每个进程提供一个独立的、连续的地址空间,即使物理内存有限或不连续。在C++编程中,操作系统通过页表将虚拟地址映射到物理内存地址上。当程序试图访问不在物理内存中的虚拟地址时,会发生缺页中断,操作系统会从磁盘上的交换文件中调入所需数据至空闲物理内存,并更新页表。这样做的好处是可以支持比实际物理内存更大的寻址空间,并允许同时运行多个程序,而无需担心它们之间的内存冲突。

  2. 指针 指针在C++中是一个变量,其值为另一个变量(对象)的内存地址。通过操作指针,可以直接读写该地址所指向的对象内容。指针可以动态地改变其所指向的内容和位置,从而实现灵活的数据结构与算法设计。例如,数组、链表、树等数据结构的底层实现都离不开指针。使用指针需要注意指针的初始化、解引用以及释放不再使用的动态内存等问题,以防止悬挂指针和内存泄漏的发生。

  3. 并发与并行
    并发:是指在同一时间段内有多个任务都在执行,但并不一定在同一时刻,即处理器交替快速执行多个任务,使得宏观上看起来像是同时进行的。在单核CPU上,真正的并行是不可能的,多线程并发实际上是上下文切换的结果。
    并行:则是指在同一时刻,有多个任务真正地同时执行,这通常需要多核CPU或多台机器才能实现。在C++中,可以通过多线程库如std::thread来创建和管理并发/并行任务。

  4. iOS软件开发与安卓软件开发的区别
    开发环境:iOS应用主要使用Xcode IDE,基于Objective-C或Swift语言;Android则使用Java、Kotlin或C++,主要通过Android Studio开发。
    操作系统架构:iOS基于封闭的苹果生态系统,设备统一,API相对稳定且严格审核;Android开放性更强,设备碎片化严重,API兼容性问题较突出。
    发布渠道:iOS应用发布必须通过App Store审核;Android应用除了Google Play外,还可以通过其他第三方市场分发。
    UI框架:iOS使用UIKit或SwiftUI构建界面;Android使用Android SDK提供的View系统。

  5. HTTP与HTTPS
    HTTP(Hypertext Transfer Protocol)是互联网上应用最为广泛的一种网络协议,用于传输超文本信息。它是无状态、明文传输的,存在被窃听、篡改、伪装等安全风险。
    HTTPS(HTTP Secure)是在HTTP协议基础上加入SSL/TLS协议层,对通信数据进行加密处理的更安全版本。通过证书机制保证服务器身份的真实性,采用协商密钥的方式确保传输过程的安全,能够有效防止数据被窃取或篡改。

  6. 堆栈
    栈(Stack):在计算机科学中,栈是一种数据结构,遵循后进先出(Last In First Out, LIFO)原则。在C++中,函数调用过程中的局部变量和返回地址等信息会被压入栈中。栈内存由编译器自动分配和回收,空间小但速度极快。
    堆(Heap):堆是另一种内存区域,主要用于存储程序在运行时动态分配和释放的内存空间,比如使用new关键字分配的内存。堆内存的大小和生命周期由程序员控制,申请和释放不及时可能导致内存泄漏或悬垂指针问题。

  7. 七层网络参考模型 七层网络模型(OSI模型)包括:
    应用层:直接与用户应用程序交互,处理特定的应用服务。
    表示层:负责数据格式转换、加密和压缩。
    会话层:建立、管理和终止会话连接。
    传输层:提供端到端的数据传输服务,TCP/IP协议中对应的是TCP和UDP。
    网络层:负责IP路由选择及逻辑寻址,决定数据包如何从源到达目的地。
    数据链路层:定义了如何在单一链路上封装数据帧并进行错误检测。
    物理层:定义了硬件接口标准,如电气特性、机械特性、功能特性和过程特性。

  8. 找出一个字符串中最长不重复字串的长度(非暴力法) 可以利用滑动窗口的思想结合哈希集合(HashSet或unordered_set)来解决此问题,避免暴力求解。具体步骤如下:
    初始化两个指针i和j,分别代表滑动窗口的左右边界。
    使用哈希集合存储窗口内的字符及其出现情况。
    当j向右移动时,不断更新哈希集合,并检查当前窗口是否满足不重复条件。
    若满足,则记录下当前窗口长度,并继续扩大窗口;若不满足,则收缩窗口左边界,直到重新满足不重复条件为止。
    最终得到的最大窗口长度即为最长不重复子串的长度。

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

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

相关文章

03MARL-联合策略与期望回报

文章目录 前言一、MARL问题组成二、联合策略与期望回报1.History-based expected return2.Recursive expected return 前言 多智能体强化学习问题中的博弈论知识——联合策略与期望回报 一、MARL问题组成 二、联合策略与期望回报 定义一种普遍的期望回报,能够用于…

任务8:安装大数据统计分析工具Hive

任务描述 知识点:Hive安装应用 重 点: 基于CentOS系统,安装配置Hive创建访问Hive数据库的用户,并授予访问权限 内 容: 安装Hive配置MySQL、设置远程访问权限配置HiveHive服务端、客户端访问 任务指导 1. Hive…

多线程——阻塞队列

什么是阻塞队列 相比于一般的队列,有两个特点 1.线程安全 2.带有阻塞功能 1)队伍为空时,出队列就会出现阻塞,阻塞到其他线程入队列为止 2)队伍为满时,入队列就会出现阻塞,阻塞到其他线程出队列…

中国移动宽带复机短信代码

发送”SQKDFJ“到10086、然后在10分钟之内,会收到另外一个号码发来的确认短信,回复”是“即可。

九州金榜|15岁初三男孩抑郁休学摆烂打游戏,高压教育要不得!

有一次和朋友一块聚餐,邻座是一位妈妈、和她大概七八岁的儿子,小男孩长得很帅气,没有像同龄人那样调皮捣乱,而是和妈妈很温馨的就餐。 看的出来一家人的素质很高,就餐过程中桌面保持的很整洁,交流声音也不…

你和家酿啤酒的距离,只差一台爱咕噜智能啤酒机

喝过工业啤酒,喝过精酿啤酒,但是你喝过在家自酿的啤酒吗? 啤酒是世界上消耗较多的饮料之一,而我国的啤酒年消耗量位居世界第一。近年来,随着越来越多的精酿啤酒涌入市场,精酿啤酒的概念与文化被更多消费者…

揭秘小米手机被疯狂吐槽的存储扩容技术

前段时间,在小米14的发布会上,雷布斯公布了名为“Xiaomi Ultra Space存储扩容”的技术,号称可以在512G的手机中再搞出来16G,256G的手机中再搞出8G。对于普通用户来说,能多得一些存储空间,无异是个很好的福利…

PID横向控制和仿真实现

文章目录 1. PID介绍2. PID横向控制原理3. 算法和仿真实现 1. PID介绍 PID是一种常见的控制算法,全称为Proportional-Integral-Derivative,即比例-积分-微分控制器。PID控制器是一种线性控制器,它将设定值与实际值进行比较,根据误…

Python轴承故障诊断 (11)基于VMD+CNN-BiGRU-Attenion的故障分类

目录 往期精彩内容: 前言 模型整体结构 1 变分模态分解VMD的Python示例 2 轴承故障数据的预处理 2.1 导入数据 2.2 故障VMD分解可视化 2.3 故障数据的VMD分解预处理 3 基于VMD-CNN-BiGRU-Attenion的轴承故障诊断分类 3.1 定义VMD-CNN-BiGRU-Attenion分类网…

【C#】当重复使用一段代码倒计时时,使用静态类和静态方法,实现简单的this扩展方法

欢迎来到《小5讲堂》 大家好,我是全栈小5。 这是《C#》序列文章,每篇文章将以博主理解的角度展开讲解, 特别是针对知识点的概念进行叙说,大部分文章将会对这些概念进行实际例子验证,以此达到加深对知识点的理解和掌握。…

多特征变量序列预测(三)——CNN-Transformer风速预测模型

目录 往期精彩内容: 前言 1 多特征变量数据集制作与预处理 1.1 导入数据 1.2 数据集制作与预处理 2 基于Pytorch的CNN-Transformer 预测模型 2.1 定义CNN-Transformer预测模型 2.2 设置参数,训练模型 3 模型评估与可视化 3.1 结果可视化 3.2 …

高效构建Java应用:Maven入门和进阶(五)

高效构建Java应用:Maven入门和进阶(五) Maven实战案例:搭建微服务Maven工程框架5.1 项目需求和结构分析5.2项目搭建和统一构建 总结 Maven实战案例:搭建微服务Maven工程框架 5.1 项目需求和结构分析 需求案例&#xf…

SSH镜像、systemctl镜像、nginx镜像、tomcat镜像

目录 一、SSH镜像 二、systemctl镜像 三、nginx镜像 四、tomcat镜像 五、mysql镜像 一、SSH镜像 1、开启ip转发功能 vim /etc/sysctl.conf net.ipv4.ip_forward 1sysctl -psystemctl restart docker 2、 cd /opt/sshd/vim Dockerfile 3、生成镜像 4、启动容器并修改ro…

常用python代码大全-python使用argparse模块处理命令行参数

argparse 是 Python 的一个标准库模块,用于从命令行解析参数。这个模块使编写用户友好的命令行接口变得更加简单。下面是一个使用 argparse 模块处理命令行参数的示例代码: import argparse# 创建 ArgumentParser 对象 parser argparse.ArgumentParser…

使用Python模拟掷骰子游戏的技术指南

引言: 掷骰子游戏是一种非常经典的娱乐活动,通过投掷骰子来获取随机数值,并根据规则进行比较和判断。本文将介绍如何使用Python模拟掷骰子游戏,并通过案例讲解帮助读者更好地理解和实践。 实现步骤: 1. 导入必要的库…

【编码魔法师系列_构建型4】原型模式(Prototype Pattern)

学会设计模式,你就可以像拥有魔法一样,在开发过程中解决一些复杂的问题。设计模式是由经验丰富的开发者们(GoF)凝聚出来的最佳实践,可以提高代码的可读性、可维护性和可重用性,从而让我们的开发效率更高。通…

10.抽象工厂模式

江湖上再也没人找林家的麻烦了。因为林平之一怒之下将辟邪剑谱公诸天下。一下子印出去几万份,江湖上人人都能轻而易举的得到这本无尚武学;然而江湖人士却陷入深深的矛盾之中: 不练,别人练了,分分钟秒杀你;练…

SV-7041T 30W网络有源音箱校园教室广播音箱,商场广播音箱,会议广播音箱,酒店广播音箱,工厂办公室广播音箱

SV-7041T 30W网络有源音箱 校园教室广播音箱,商场广播音箱,会议广播音箱,酒店广播音箱,工厂办公室广播音箱 SV-7041T是深圳锐科达电子有限公司的一款2.0声道壁挂式网络有源音箱,具有10/100M以太网接口,可将…

我为什么要写RocketMQ消息中间件实战派上下册这本书?

我与RocketMQ结识于2018年,那个时候RocketMQ还不是Apache的顶级项目,并且我还在自己的公司做过RocketMQ的技术分享,并且它的布道和推广,还是在之前的首席架构师的带领下去做的,并且之前有一个技术神经质的人&#xff0…

LeetCode第155题 - 最小栈

题目 设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈。 push(x) —— 将元素 x 推入栈中。 pop() —— 删除栈顶的元素。 top() —— 获取栈顶元素。 getMin() —— 检索栈中的最小元素。 示例: 输入: [&q…