【面试】测试/测开(ING3)

190. 栈和堆在内存管理上的区别


  1. 1) 栈是由系统自动分配和回收的内存。
    2)栈的存储地址是由高地址向低地址扩展的。
    3)栈是一个先进后出的结构。
    4)栈的空间大小是一个在编译时确定常数,即栈的大小是有限制的,当申请的空间大小超限时会提示overflow。
    5) 栈:就是那些由编译器在需要的时候分配,在不需要的时候自动清除的变量的存储区。里面的变量通常是局部变量、函数参数等。
    6) 栈可以视为一个临时存储空间,这种临时存放数据的特性,使得它经常用来存储局部变量,函数参数,上下文环境等。
    7)栈的效率比较高:计算机分配专门的寄存器存放栈的地址,压栈出栈都有专门的指令执行,这就决定了栈的效率比较高。
    栈


  2. 1)堆区是向上生长的用于分配程序员申请的空间。
    2)在操作系统中有记录空闲内存地址的链表(也有可能是位图等其他方式),当系统受到程序的申请时就会遍历该链表寻找第一个大于该申请空间堆(假设是FIFS,当然也有可能是其他的如段进程优先等),然后将该节点从链表中删除,并将该节点的空间分配给程序;另外,对于大多数系统,会在这块内存空间中的首地址处记录本次分配的大小,这样,代码中的delete语句才能正确的释放本内存空间。若找到的堆节点的空间大小大于所申请的空间,则系统会自动将多余的空间重新放入空闲链表中,也就是说堆在进行空间分配后还要做一些后续工作就会引入效率问题。
    3)栈是系统自动申请和释放的,而堆更加强调的是手动控制,需要手动申请和释放空间。
    4)堆可分配的空间更大,但是也有较大的开销
    5)堆是在程序执行的过程中动态分配的,它最大的特性就是动态性。堆就是那些由new分配的内存块,他们的释放编译器不去管,由我们的应用程序去控制,一般一个new就要对应一个delete。如果程序员没有释放掉,那么在程序结束后,操作系统会自动回收。
    堆

  3. 其他存储区
    1) 静态存储区
    静态变量和全局变量都存储于静态存储区。

2)常量存储区
这是一块比较特殊的存储区,他们里面存放的是常量,不允许修改。
常量字符串都存放在静态存储区,返回的是常量字符串的首地址。

  1. 堆和栈的比较
    比较
  2. 数据结构中的堆和栈
    1)栈
    ① 栈是先进后出的数据结构
    ② 是一种运算受限的线性表
    ③ 只能够在栈顶进行插入和删除元素(栈顶即高地址位置)
    2)堆
    ① 通常可以被看作一棵树的数组对象
    ② 堆中某个结点的值总是不大于或不小于其父结点的值;
    ③ 堆总是一棵完全二叉树。

191. 完全二叉树和二叉树的区别 以及在使用上的优劣

参考:完全二叉树和满二叉树

  1. 完全二叉树
    1)除了最后一层外,每一层的节点都被填满。
    2)如果最后一层存在节点,那么这些节点从左到右依次填充,不留空缺。
    3)完全二叉树的高度通常较小,具有良好的平衡性。
    4)完全二叉树在堆数据结构中广泛应用,如二叉最小堆和二叉最大堆,堆排序和优先级队列等。

完全二叉树

  1. 满二叉树
    1)满二叉树是特殊的完全二叉树
    2)所有层的节点都被填满。
    3)满二叉树的高度是固定的,由节点数量决定。
    4)满二叉树在一些特定的数据存储和检索算法中有用,但相对较少见。
    满二叉树

  2. 最优二叉树
    1)最优二叉树,也叫哈夫曼树,是指带权路径长度最小的二叉树。在哈夫曼树中,带权路径长度等于树中所有叶子节点的权值乘以它们到根节点的路径长度之和。在构造哈夫曼树的过程中,节点的权值越大,它距离根节点就越近
    2)完全二叉树的构造不需要根据节点权值来确定,而是按照深度优先的原则,一层一层从左到右地填充节点。最优二叉树的构造则是基于贪心算法,按照节点权值从小到大的顺序来构造。
    3)完全二叉树中,任何一个节点的左右子节点,如果存在,一定是连续的;而最优二叉树中,同一个节点的左右子节点可能会不连续。
    4)最优二叉树则更多地用于信息编码和压缩等领域,比如哈夫曼编码。

  3. 完全二叉树在存储和定位节点上具有优势,但在插入和删除节点时可能会增加复杂度。
    ① 完全二叉树可以使用数组来表示,不需要使用指针来表示节点之间的关系,节省了存储空间
    ② 使用数组的下标可以快速定位到某个节点
    ③ 插入和删除节点时需要将其调整成完全二叉树,调整的过程会增加操作的复杂度。

  4. 二叉树不适合存储规模太大的数据(结构相对复杂),且会出现不平衡现象使得插删查操作减慢;另外,二叉树的存储需要额外的指针来连接节点,占用了额外的空间

192. 哈希表的底层原理

参考:哈希表机器底层原理

1)哈希表(Hash Table)是一种常用的数据结构,用于实现键值对映射关系。它支持在平均常数时间内进行插入、删除和查找操作
2)哈希表的底层原理是将每个键(key)通过一个哈希函数(Hash Function)转换成一个索引(index),然后将该键值对存储在对应索引的位置上。当需要查找一个键值对时,再通过哈希函数计算出该键对应的索引,并在该索引位置上查找该键值对,从而实现快速查找。即:f表示哈希函数,而将key作为其参数来计算f(key)索引位置,将value存储到该位置上
3)哈希函数通常是将键值映射到一段固定长度的数字串,这个数字串可以看做是该键的指纹(fingerprint),可以用来唯一地标识该键。一个好的哈希函数应该能够尽量避免键的碰撞(Collision),即不同的键映射到同一个索引上的情况,否则会影响哈希表的性能。
4)为了解决碰撞问题,哈希表通常采用开放地址法(Open Addressing)或链地址法(Chaining)等方法来解决。在开放地址法中,当发生碰撞时,会继续往下一个空闲位置插入,直到找到一个空闲位置;而在链地址法中,每个索引位置上存储的是一个链表,当发生碰撞时,会将新的键值对添加到链表的末尾。

193. Linux的软连接和硬链接

参考:Linux中的软连接和硬链接

在Linux的文件系统中,保存在磁盘分区中的文件不管是什么类型都给它分配一个编号,称为索引节点号inode

  1. 软连接
    1)软连接其实就类似于咱们的快捷方式
    2)每次软连接都是建立一个新的inode,文件的内容是指向源文件的指针
    3)当源文件被删除,软连接就会找不到该文件或目录
    4)软连接的建立: ln -s [filename] soft
    5)当源文件不存在时也是可以建立软连接的

  2. 硬链接
    1)硬链接必须源文件和inode存在,并且时共享一个inode,只是增加了连接数
    2)当删除源文件的时候,只要硬链接的数量大于等于1就不会真正删除源文件
    3)硬链接不可以跨文件系统
    4)硬链接相当于是给文件创建了一个别名,同一个inode说明是同一个文件
    5)硬链接的建立:ln [filename] hard

软硬连接

194. 产品上线之后应该关注哪些问题

1)上线前进行回归测试,保证主流程的流通性
2)上线后进行灰度测试:使用少量的数据将所有的业务流程走完,保证数据的正确性和流程的畅通完整性
3)上线之后还要进行监控和故障排查,确保系统的稳定性和可靠性
4)还要收集用户的反馈,可用于进行下一次的迭代

195. 刷卡、输密码、取款、余额查询以及取卡操作就功能、性能、安全性、易用性、弱网以及高并发设计测试用例

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

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

相关文章

Kubernetes的minikube

文章目录 环境概述准备安装启动和集群交互dashboard创建deployment创建service启用addon清理参考 环境 RHEL 9.3Docker Community 24.0.7miniKube v1.32.0 概述 minikube可以快速的在macOS、Linux和Windows上搭建本地的Kubernetes集群,帮助Kubernetes小白快速上手…

鲁大师2023年牛角尖颁奖盛典揭晓,年度最强产品诞生

1月18日,鲁大师2023年度牛角尖颁奖典礼在四川省内江市威远县船石湖豪生温泉度假酒店完美落幕。 本届鲁大师牛角尖颁奖盛典举办地选在了威远县可谓是深有其意,其名称的由来最早可追溯到隋朝,取“威名远震”之意。而这也与鲁大师牛角尖奖项的设…

用通俗易懂的方式讲解:使用Llama-2、PgVector和LlamaIndex,构建大模型 RAG 全流程

近年来,大型语言模型(LLM)取得了显著的进步,然而大模型缺点之一是幻觉问题,即“一本正经的胡说八道”。其中RAG(Retrieval Augmented Generation,检索增强生成)是解决幻觉比较有效的…

自建呼叫中心还是使用云呼叫中心?

随着云呼叫技术的逐渐普及,云呼叫中心在全国的推广,越来越多中小企业开始使用云呼叫中心开展企业外呼及电话客服业务。但还是有很多企业坚持使用传统的自建呼叫中心。那么云呼叫中心跟自建呼叫中心有什么区别呢?企业又该作何选择?…

百德朗王晓明:用差异化创新,解决智能楼控项目深层痛点

近年来,国家对物联网产业的支持政策不断释放,《“十四五”数字经济发展规划》明确提出了要加速空间信息基础设施升级。作为AIoT控制系统核心技术引领者是如何看待物联网时代下的智慧楼宇与能源应用发展的呢?近日,百德朗联合创始人…

回归预测 | Matlab实现GA-APSO-MBP、GA-MBP、MBP、BP多输入单输出回归预测

回归预测 | Matlab实现GA-APSO-MBP、GA-MBP、MBP、BP多输入单输出回归预测 目录 回归预测 | Matlab实现GA-APSO-MBP、GA-MBP、MBP、BP多输入单输出回归预测预测效果基本描述程序设计参考资料 预测效果 基本描述 1.Matlab实现GA-APSO-MBP、GA-MBP、MBP、BP多输入单输出回归预测&…

Redis持久化方案RDB和AOF

Redis两种持久化方案 RDB持久化AOF持久化 RDB持久化 RDB全称Redis Database Backup file(Redis数据备份文件),也被叫做Redis数据快照。简单来说就是把内存中的所有数据都记录到磁盘中。当Redis实例故障重启后,从磁盘读取快照文…

2024年pmp的考试时间是什么时候?

2024最新考试时间已经出来了:分别是 3月、6月、8月、11月,四次,具体考试日期还需要关注官网的进一步通知。 一、PMP报考条件 年龄满足 22 周岁有官方授权的培训机构给的 35个PDU(学时) 就能报名。 是不是相当于没有…

13 STM32-随机数发生器 (RNG)

13.1 随机数发生器 (RNG)简介 RNG 处理器是一个以连续模拟噪声为基础的随机数发生器,在主机读数时提供一个 32 位的随机数. RNG 提供由模拟量发生器产生的 32 位随机数,两个连续随机数的间隔为 40 个 PLL48CLK 时钟信号周期 13.2 RNG框图 随机数发生器采用模拟电路…

SpringCloud整合Zookeeper代替Eureka案例

文章目录 本期代码下载地址zookeeper简介zookeeper下载安装新建服务提供者测试 新建消费者测试 本期代码下载地址 地址:https://github.com/13thm/study_springcloud/tree/main/days4 zookeeper简介 zookeeper是一个分布式协调工具,可以实现注册中心功能 关闭Lin…

C语言第二弹---C语言基本概念(下)

✨个人主页: 熬夜学编程的小林 💗系列专栏: 【C语言详解】 【数据结构详解】 C语言基本概念 1、字符串和\02、转义字符3、语句和语句分类3.1、空语句3.2、表达式语句3.3、函数调⽤语句3.4、复合语句3.5、控制语句 4、注释4.1、注释的两种形…

MySQL存储函数与存储过程习题

创建表并插入数据: 字段名 数据类型 主键 外键 非空 唯一 自增 id INT 是 否 是 是 否 name VARCHAR(50) 否 否 是 否 否 glass VARCHAR(50) 否 否 是 否 否 ​ ​ sch 表内容 id name glass 1 xiaommg glass 1 2 xiaojun glass 2 1、创建一个可以统计表格内记录…

【数据结构和算法】删除链表的中间节点

其他系列文章导航 Java基础合集数据结构与算法合集 设计模式合集 多线程合集 分布式合集 ES合集 文章目录 其他系列文章导航 文章目录 前言 一、题目描述 二、题解 三、代码 四、复杂度分析 前言 这是力扣的 2095 题,难度为中等,解题方案有很多种…

Pytest参数化-你不知道的使用技巧

前言 unittest单元测试框架使用DDT进行数据驱动测试,那么身为功能更加强大且更加灵活的Pytest框架怎么可能没有数据驱动的概念呢?其实Pytest是使用pytest.mark.parametrize装饰器来实现数据驱动测试的,那么今天我们就简单来说说在它是如何进…

shopee店铺选品规划:如何在Shopee平台上进行店铺选品规划

在如今激烈竞争的电商市场上,一个有效的选品策略对于卖家来说至关重要。在Shopee平台上进行店铺选品规划时,卖家可以遵循以下步骤来制定一个成功的选品策略。 先给大家推荐一款shopee知虾数据运营工具知虾免费体验地址(复制浏览器打开&#…

高德地图绘制 GPX 数据路线

高德地图绘制 GPX 数据路线 .gpx 文件是在分享地图路径时最常用的一种数据格式。里面包含了路径点的相关信息,每个点还有可能拥有自己的时间、距离等信息。 一直想自己导出自己的 gpx 路线,然后导入到地图中查看这个路线的具体信息,今天细致…

CentOS 7上安装Anaconda 详细教程

目录 1. 下载Anaconda安装脚本2. 校验数据完整性(可选)3. 运行安装脚本4. 遵循安装指南5. 选择安装位置6. 初始化Anaconda7. 激活安装8. 测试安装9. 更新Anaconda10. 使用Anaconda 1. 下载Anaconda安装脚本 首先需要从Anaconda的官方网站下载最新的Anac…

千万不要在方法上打断点!千万不要!

我上周遇到了一个莫名其妙的搞心态的问题,浪费了我好几个小时。 气死我了,拿这几个小时来敲(摸)代(摸)码(鱼)不香吗? 主要是最后问题的解决方式也让我特别的无语&#…

Redis实现好友功能

好友功能是目前社交场景的必备功能之一,一般好友相关的功能包含有:关注/取关、我(他)的关注、我(他)的粉丝、共同关注等这样一些功能。 1.关注和取关 1.设计思路 总体思路我们采用MySQL Redis的方式结合…

【Ant Design of Vue】Modal.confirm无法关闭的bug

一、问题 在使用 Ant Design Vue 的 Modal.confirm 确认框时&#xff0c;出现了点击取消和确定后 Modal.confirm 确认框无法关闭的问题 二、代码 代码完全是 copy 的官网的代码&#xff0c;但是 copy 到本地后就会出现上述问题 <template><a-button click"sho…