拿下技术面上传简历

一个在线去重服务要统计每天出现过的不同 key(约 5000 万个,key 是 32 字节字符串),要求 QPS 20 万、单次延迟 P99 < 2ms,进程内存预算 2GB。你会直接用语言自带的 HashMap 吗?请估算内存够不够,并说明扩容 rehash 会带来什么问题。如果业务方接受 1% 的误差,有没有更省内存的方案,代价是什么?

数据结构与算法线性与树结构3-5 年知识点 1 个

面试官在考什么

考察对哈希表内存放大、装载因子与扩容停顿的敏感度,以及'精确 vs 近似'方案的选型判断力。

哈希表

回答框架 · 前两步

  1. 内存估算:32B 字符串本身 5000 万个约 1.6GB,加上 entry 对象头/指针/引用(常见每条约 50~100B)和 0.75 装载因子下的桶数组,总量到 GB 甚至十几 GB 量级,2GB 装不下——必须给出量级而不是拍脑袋。
  2. 扩容问题:一次性 rehash 5000 万条会造成明显停顿,P99 < 2ms 直接不保;可行做法是渐进式 rehash(双表 + 每次操作搬一部分)或预先分配足够容量避免中途扩容。

还有 3 条答案要点、 3 层追问、 5 个常见坑, 以及针对你简历的追问路径,在定制报告里。

上传简历,生成我的题库先看示例报告

延伸阅读

想看这个方向的整体准备路线? 进入「数据结构与算法」方向页

同一能力域的其他题