【面试】测试/测开(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.rhkb.cn/news/244044.html

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

相关文章

仰暮计划|“她告诉我,大部分时间她都是一个家庭主妇,负责照料家务和小孩,但她从来没有停止她对知识的追求”

我来到河南省开封市兰考县南北庄村内一个宁静而温馨的小院子,那里居住着一位九十多岁的高龄老人,她就是张奶奶。张奶奶是村里的一位高龄老人,拥有着丰富的人生经历。我对她的故事非常充满好奇,所以特地来到张奶奶的家中&#xff0…

测试开发基础 | 计算机网络篇(二):物理层与数据链路层

【摘要】 计算机网络知识是自动化测试等技术基础,也是测试面试必考题目。霍格沃兹测试学院特别策划了本系列文章,将带大家一步步夯实计算机网络的基础知识。由于物理层知识在互联网软件研发工作中用到的并不多,所以可以仅做一个简单的了解。物…

理解PCIE设备透传

PCIE设备透传解决的是使虚拟机直接访问PCIE设备的技术,通常情况下,为了使虚拟机能够访问Hypervisor上的资源,QEMU,KVMTOOL等虚拟机工具提供了"trap and emulate", Virtio半虚拟化等机制实现。但是这些实现都…

MySQL之数据库DDL

文章目录 MySQL数据库基本操作数据定义DDL对数据库的常用操作创建表修改表格式结构 MySQL数据库基本操作 首先我们先了解SQL的语言组成,他分为四个部分 数据定义语言(DDL)数据操纵语言(DML)数据控制语言(…

three.js从入门到精通系列教程004 - three.js透视相机(PerspectiveCamera)滚动浏览全景大图

<!DOCTYPE html> <html><head><meta charset"UTF-8"><title>three.js从入门到精通系列教程004 - three.js透视相机&#xff08;PerspectiveCamera&#xff09;滚动浏览全景大图</title><script src"js/three.js"&g…

Python 自动化办公:一键批量生成 PPT

Stata and Python 数据分析 一、导读 在实际工作中&#xff0c;经常需要批量处理Office文件&#xff0c;比如需要制作一个几十页的PPT进行产品介绍时&#xff0c;一页一页地制作不仅麻烦而且格式可能不统一。那么有什么办法可以一键生成PPT呢&#xff1f;Python提供的pptx 包…

mysql生成最近24小时整点时间临时表

文章目录 生成最近24小时整点生成最近30天生成最近12个月 生成最近24小时整点 SELECT-- 每向下推1行, i比上次减去1b.*, i.*,DATE_FORMAT( DATE_SUB( NOW(), INTERVAL ( -( i : i - 1 ) ) HOUR ), %Y-%m-%d %H:00 ) AS time FROM-- 目的是生成12行数据( SELECTa FROM( SELECT…

【Python从入门到进阶】47、Scrapy Shell的了解与应用

接上篇《46、58同城Scrapy项目案例介绍》 上一篇我们学习了58同城的Scrapy项目案例&#xff0c;并结合实际再次了项目结构以及代码逻辑的用法。本篇我们来学习Scrapy的一个终端命令行工具Scrapy Shell&#xff0c;并了解它是如何帮助我们更好的调试爬虫程序的。 一、Scrapy Sh…

CTF CRYPTO 密码学-5

题目名称&#xff1a;山岚 题目描述&#xff1a; 山岚 f5-lf5aa9gc9{-8648cbfb4f979c-c2a851d6e5-c} 解题过程&#xff1a; Step1&#xff1a;根据题目提示栅栏加密 分析 观察给出的密文发现有f、l、a、g等字符有规律的夹杂的密文中间&#xff0c;看出都是每3个字符的第1…

P9232 [蓝桥杯 2023 省 A] 更小的数

[蓝桥杯 2023 省 A] 更小的数 终于本弱一次通关了一道研究生组别的题了[普及/提高−] 一道较为简单的双指针题,但一定有更好的解法. 题目描述 小蓝有一个长度均为 n n n 且仅由数字字符 0 ∼ 9 0 \sim 9 0∼9 组成的字符串&#xff0c;下标从 0 0 0 到 n − 1 n-1 n−1&a…

k8s使用ingress实现应用的灰度发布升级

v1是1.14.0版本nginx ,实操时候升级到v2是1.20.0版本nginx&#xff0c;来测试灰度发布实现过程 一、方案&#xff1a;使用ingress实现应用的灰度发布 1、服务端&#xff1a;正常版本v1&#xff0c;灰度升级版本v2 2、客户端&#xff1a;带有请求头versionv2标识的请求访问版…

【Linux】vim 操作指令详解

Linux 1 what is vim &#xff1f;2 vim基本概念3 vim的基本操作 &#xff01;3.1 vim的快捷方式3.1.1 复制与粘贴3.1.2 撤销与剪切3.1.3 字符操作 3.2 vim的光标操作3.3 vim的文件操作 总结Thanks♪(&#xff65;ω&#xff65;)&#xff89;感谢阅读下一篇文章见&#xff01;…

Git教程学习:09 Git分支

文章目录 1 分支的简介2 分支的相关操作2.1 分支的创建2.2 分支的切换2.3 分支的合并2.4 分支推送到远程2.5 分支的删除2.6 分支的重命名 3 分支开发工作流程3.1 长期分支3.2 短期分支 1 分支的简介 几乎所有的版本控制系统都以某种形式支持分支。使用分支意味着我们可以把我们…

使用DockerFile构建镜像与镜像上传

目录 前言&#xff1a;为什么要使用Dockerfile &#xff1f; DockerFile构建镜像 1、构建基础对象 2、Dockerfile文件结构 3、构建Dockerfile文件镜像 二、镜像上传&#xff08;阿里云&#xff09; 前言&#xff1a;为什么要使用Dockerfile &#xff1f; 首先Dockerfile …

网安防御保护防火墙初使用

要求 搭建之后 配置如下&#xff1a; 首先看要求是使用总公司部分则&#xff0c;先配置总公司的防火墙&#xff0c;注意配置总公司防火墙进入G0/0/0口的IP有个默认192.168.0.1 24&#xff0c;但是我们的云&#xff08;cloud&#xff09;上增加的端口绑定网卡IP为192.168.100.1…

React Router v6 改变页面Title

先说正事再闲聊 1、在路由表加个title字段 2、在index包裹路由 3、在App设置title 闲聊&#xff1a; 看到小黄波浪线了没 就是说默认不支持title字段了 出来的提示&#xff0c; 所以我本来是像下面这样搞的&#xff0c;就是感觉有点难维护&#xff0c;就还是用上面的方法了 …

高效工作必备神器:这款在线绘图软件完美替代Visio!

Visio是什么软件&#xff1f; Visio是微软公司开发的一款专业化的流程图绘制辅助工具&#xff0c;主要用于帮助IT和商务人员对复杂信息、系统和流程进行可视化处理、分析和交流。Visio提供了丰富的绘图功能&#xff0c;用户可以利用它创建各种类型的图表&#xff0c;包括但不限…

如何在Docker下部署MinIO存储服务通过Buckets实现文件的远程上传

&#x1f4d1;前言 本文主要是Linux下通过Docker部署MinIO存储服务实现远程上传的文章&#xff0c;如果有什么需要改进的地方还请大佬指出⛺️ &#x1f3ac;作者简介&#xff1a;大家好&#xff0c;我是青衿&#x1f947; ☁️博客首页&#xff1a;CSDN主页放风讲故事 &#…

Linux操作系统——理解文件系统

预备知识 到目前为止&#xff0c;我们所学习到的关于文件的操作&#xff0c;全部都是基于文件被打开&#xff0c;被访问&#xff0c;访问期间比较重要的有重定向&#xff0c;缓冲区&#xff0c;一切皆文件&#xff0c;当我们访问完毕的时候需要将文件关闭&#xff0c;关闭时那…

SpringBoot:Bean生命周期自定义初始化和销毁

&#x1f3e1;浩泽学编程&#xff1a;个人主页 &#x1f525; 推荐专栏&#xff1a;《深入浅出SpringBoot》《java项目分享》 《RabbitMQ》《Spring》《SpringMVC》 &#x1f6f8;学无止境&#xff0c;不骄不躁&#xff0c;知行合一 文章目录 前言一、Bean注解指…