失效链接处理 |
11道高级软件测试面试题 PDF 下载
本站整理下载:
相关截图:
主要内容:
11道高级软件测试面试题,你知道多少答案
1、列表和元组的区别
答:列表是动态的,长度可变,可以随意地增删改元素。列表的存储空间略大于元组,性能略逊于元组。元组是静态的,长度大小固定,不可以对元组元素进行增删改操作。元组对于列表更加轻量级,性能稍优。
2、字典的原理
答:python中的字典底层依靠哈希表(hash table)实现, 使用开放寻址法解决冲突。哈希表是key-value类型的数据结构, 可以理解为一个键值需要按照一定规则存放的数组, 而哈希函数就是这个规则。
字典本质上是一个散列表(总有空白元素的数组, python至少保证1/3的数组是空的), 字典中的每个键都占用一个单元。
一个单元分为两部分, 分别是对键的引用和对值的引用, 使用hash函数获得键的散列值, 散列值对数组长度取余, 取得的值就是存放位置的索引。
哈希冲突(数组的索引相同), 使用开放寻址法解决。
这也是python中要求字典的key必须可hash的原因。数组中1/3的位置为空, 增加元素可能会导致扩容, 引发新的散列冲突, 导致新的散列表中键的次序发生变化, 这也是字典遍历时不能添加和删除的原因字典在内存中开销很大, 实际上是以空间换时间。
3、说一下hash算法与哈希冲突
答:哈希算法:根据设定的哈希函数H(key)和处理冲突方法将一组关键字映象到一个有限的地址区间上的算法。也称为散列算法、杂凑算法。
哈希表:数据经过哈希算法之后得到的集合。这样关键字和数据在集合中的位置存在一定的关系,可以根据这种关系快速查询。非哈希表:与哈希表相对应,集合中的 数据和其存放位置没任何关联关系的集合。由此可见,哈希算法是一种特殊的算法,能将任意数据散列后映射到有限的空间上,通常计算机软件中用作快速查找或加密使用。
哈希冲突:由于哈希算法被计算的数据是无限的,而计算后的结果范围有限,因此总会存在不同的数据经过计算后得到的值相同,这就是哈希冲突。
|