Learned Hash 与高级哈希变体

共 21 题
#

1. 如何为给定元素数 n 与可接受假阳率 p 计算所需位数组大小 m=-n·lnp/(ln2)² 与哈希数 k=(m/n)·ln2

A m 与 p 成正比
B 最优参数 k=-log2 p、m=kn/ln2,即 m=-n·lnp/(ln2)²,验算公式 p=(1-e^{-kn/m})^k ✓ 正确答案
C k 取任意整数均可
D 双哈希派生态增加假阳率
#

2. BOOM(Bucket-Optimized Learned Hash)的 CDF 模型与 bucket 边界选择。

A BOOM 不学习数据分布
B BOOM 用学习到的 CDF 等分桶边界使负载均衡,桶内再用哈希探测,模型误差由哈希兜底 ✓ 正确答案
C BOOM 桶边界随机选取
D BOOM 无法处理插入
#

3. Robin Hood Hash 的方差分析与 expected probe length 推导。

A Robin Hood 插入时与探测距离更大的槽位交换,使探测距离分布更集中,期望 O(1)、最坏 O(log n) ✓ 正确答案
B Robin Hood 增加平均探测数
C Robin Hood 只优化删除
D Robin Hood 最坏探测 O(√n)
#

4. Bloom Clock 的时间戳 + Bloom filter 双结构组合原理。

A Bloom Clock 用时间戳 + 布隆过滤器压缩向量时钟的集合语义,牺牲可分析的误判率换 O(1) 空间 ✓ 正确答案
B Bloom Clock 与向量时钟空间相同
C Bloom Clock 是精确的
D Bloom Clock 不记录因果关系
#

5. Learned Index 的 model fitting 与 fallback B-tree 的工程组合。

A Learned Index 不需要 fallback
B Learned Index 完全替代索引结构
C Learned Index 用模型粗定位到页、页内 fallback(B-tree/二分)精定位,ε 控制页宽与查找成本 ✓ 正确答案
D 模型误差与页宽无关
#

6. Bloom Clock 与传统 timestamp + set 的空间复杂度对比。

A 两者空间同阶
B Bloom Clock 空间 O(m) 与事件数无关、合并按位或 O(m/64),传统 set 随事件数线性增长 ✓ 正确答案
C Bloom Clock 合并需逐事件比较
D set 方案空间常数
#

7. Bloom Clock 在事件去重(debounce)与去重 ID 生成中的实现。

A BF 去重是精确的
B 正判定可直接丢弃事件
C Bloom Clock 去重时负判定直接处理、正判定二次确认,配合代际滚动 BF 实现去重窗口 ✓ 正确答案
D BF 无需滚动重建
#

8. Hopscotch Hash 的邻域大小 H 与 1/2 负载上限。

A 邻域 H 越大缓存越好
B Hopscotch 查找是 O(log n)
C Hopscotch 保证元素在其初始桶的 H 邻域内,查找确定性 O(H),1/2 负载附近 H=8~32 即可高效 ✓ 正确答案
D Hopscotch 不支持高负载
#

9. d-left hashing 的 rich get richer 偏置缓解。

A d-left 随机选择子表
B d-left 在 d 个子表间选负载最小者插入,把最大桶负载从 Θ(log n/log log n) 降到 Θ(log log n)/d ✓ 正确答案
C d-left 会加剧 rich get richer
D d-left 最大负载与单表相同
#

10. 为什么 Learned Index 在 DRAM-bound 而非 compute-bound 的场景中胜出。

A cache miss 与模型计算无关
B Learned Index 在任何场景都更快
C Learned Index 用一次模型计算换掉 B-tree 的多次 cache miss,在大索引(DRAM-bound)场景净赚,小索引反而有计算开销 ✓ 正确答案
D B-tree 层数与 cache miss 无关
#

11. 标准 Bloom Filter 的假阳率公式 (1-e^{-kn/m})^k 如何从独立哈希假设推导?最优哈希数 k=(m/n)·ln2 与对应最小假阳率 (1/2)^k 的求解过程

A 最优 k 与 m/n 无关
B 位清空概率是 e^{-kn/m} 的倒数
C 假阳率推导为 p=(1-e^{-kn/m})^k,对 k 求导得最优 k=(m/n)·ln2、置位概率 1/2、最小假阳率 (1/2)^k ✓ 正确答案
D 假阳率随 k 单调递减
#

12. Bloom Filter 在缓存穿透防护中的部署中数据库查询前先用 BF 过滤不存在 key,BF 本身'不存在'的 key 如何处理(BF 不存在=一定不存在)

A BF 正判定一定存在
B BF 部署在 DB 之前,负判定直接短路(一定不存在),正判定回源,假阳只多一次查询、不影响正确性 ✓ 正确答案
C BF 假阳会造成错误数据
D BF 需精确记录所有 key
#

13. Cuckoo Filter 的半排序删除支持 vs Bloom Filter 的不可删除。

A Cuckoo Filter 删除靠候选桶内指纹匹配清除,无位共享误伤(指纹碰撞用计数缓解),半排序压缩桶内编码接近信息论下界 ✓ 正确答案
B Cuckoo 删除会误清他人位
C 半排序指按值排序指纹
D Cuckoo 不支持删除
#

14. 分层 Bloom Filter(Hierarchical BF)在多级缓存/路由查找中的应用中每层对应一个前缀长度,如何合并查询

A 每层独立存储互不相关
B 分层 BF 只有一层
C 分层 BF 不能做前缀匹配
D 分层 BF 每层对应一个前缀长度,查询从最长前缀逐层否定剪枝,实现近似最长前缀匹配 ✓ 正确答案
#

15. Bloom Filter 与 Cuckoo Filter 在删除支持、空间效率(Cuckoo ~1.05×理论下界 vs Bloom ~1.44×)、查询延迟(Cuckoo 确定性 2 次 vs Bloom k 次)上的对比

A CF 空间比 BF 大
B CF 支持删除、约 1.05× 空间下界、确定 ≤2 次桶访问、负载 95%+;BF 约 1.44×、k 次访问、不可删除 ✓ 正确答案
C CF 查询是 k 次哈希
D BF 支持删除
#

16. Bloom Filter 的并集/交集能否通过位运算近似?OR 合并后假阳率如何变化

A OR 后假阳率不变
B BF 的 OR 近似并集、AND 近似交集,位图单调性保证无假阴,但假阳率上升(OR 后约 1-(1-p_A)(1-p_B)) ✓ 正确答案
C AND 会引入假阴
D 不同参数 BF 可直接合并
#

17. Counting Bloom Filter 如何支持删除?计数位宽如何选取以避免溢出(4 位计数器在负载高时的溢出概率分析)

A 删除不需先确认插入过
B 计数器不会溢出
C CBF 用计数器 +1/-1 删除,溢出概率按 Poisson(nk/m) 估计,负载高时 4 位不足需 8 位或重建 ✓ 正确答案
D CBF 空间与 BF 相同
#

18. Cuckoo Hash 的 2-choice 通用化与 cycle detection 实现。

A Cuckoo Hash 插入永不会失败
B Cuckoo Hash 插入沿两候选桶逐出旧元素,用步数上限/位置记录检测循环,超限触发 rehash,负载 <50% 时插入期望 O(1) ✓ 正确答案
C 逐出链无需检测
D 负载 90% 仍保证 O(1) 插入
#

19. Quotient Filter 相比 Bloom 的优势中支持删除、合并、有序遍历,但空间略大

A QF 空间比 BF 小很多
B QF 不支持删除
C QF 无法遍历元素
D Quotient Filter 用 quotient 分桶 + remainder 游程,支持删除、合并、有序遍历,但实现复杂、空间略大 ✓ 正确答案
#

20. RMI(Recursive Model Index)的层次模型在 Updatable Learned Index 的工程难点。

A RMI 不需要兜底结构
B RMI 只有一层模型
C RMI 插入直接改写模型
D RMI 用多层模型递归粗-细定位 key,动态更新靠写缓冲 + 周期重训,模型误差由叶页内结构兜底 ✓ 正确答案
#

21. 布谷鸟过滤器(Cuckoo Filter)的 partial-key cuckoo hashing 中指纹存储与候选桶 b=h(x) 和 b⊕h(fingerprint) 的两个候选位置

A partial-key cuckoo hashing 用 i2=i1⊕h(fingerprint) 派生第二候选桶,逐出时凭指纹即可定位,只存指纹实现近最优空间 ✓ 正确答案
B 逐出需要原始 key
C 指纹不参与桶计算
D 候选桶只有一个