1.简单
哈希表中的哈希函数做什么?
- A把键映射到表中的一个下标
- B对表中的键排序
- C对表中的值加密
- D统计存储了多少个键
2.简单
哪种数据结构遵循"后进先出"(LIFO)原则?
- A栈(Stack)
- B链表(Linked list)
- C队列(Queue)
- D哈希表(Hash table)
3.简单
在单链表中,最后一个节点的 next 指针包含什么?
- A链表中节点的个数
- B前一个节点的地址
- C第一个节点的地址
- DNull(没有节点)
4.中等
字典树(Trie,前缀树)特别适合用于:
- A求最短路径
- B对数字排序
- C存储矩阵
- D自动补全等前缀查找
5.中等
哈希表在负载因子超过阈值后进行再哈希(rehash)时会发生什么?
- A对现有的键原地排序
- B只把发生冲突的键移到表末尾的新溢出链表中
- C分配一个更大的表,并把每个键重新插入
- D删除最旧的键以腾出空间
6.中等
用两个栈实现一个队列:入队时压入 "in" 栈,出队时从 "out" 栈弹出,"out" 栈为空时从 "in" 栈重新填充。每次操作的均摊代价是多少?
- AO(1)
- BO(log n)
- CO(n²)
- DO(n)
7.困难
为什么服务器可能会从一个通用哈希函数族中随机选择其哈希函数?
- A保证任何两个键永远不会发生冲突,无论攻击者发送什么键
- B使哈希表有序
- C使攻击者极难选出许多全部发生冲突的键
- D免去对表进行扩容的需要
8.困难
在简单均匀哈希假设下,在含 n 个键、m 个桶的拉链法哈希表中查找的期望时间是多少?
- AO(1 + α),其中 α = n / m
- BO(m)
- CO(n)
- DO(log n)
答案
- 1. A · 把键映射到表中的一个下标
- 2. A · 栈(Stack)
- 3. D · Null(没有节点)
- 4. D · 自动补全等前缀查找
- 5. C · 分配一个更大的表,并把每个键重新插入
- 6. A · O(1)
- 7. C · 使攻击者极难选出许多全部发生冲突的键
- 8. A · O(1 + α),其中 α = n / m
完整分步解答:请在 examproblems.com 上练习本主题。