拿下技术面上传简历

某在线服务在内存里用哈希表做会话路由(约 2000 万 key,负载因子 0.75)。扩容触发的一次 rehash 造成约 200ms 停顿,大促期间 P99 要求低于 20ms;另外历史上曾被人构造大量落入同一槽位的 key,导致查询退化成链表扫描。请给出一条能平滑上线的改造路径:怎么消除扩容停顿、怎么防退化,以及分片之后如果还要再扩缩容,跨分片迁移怎么推进。

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

面试官在考什么

考察候选人能否把哈希表的内部行为(rehash、冲突退化)映射成线上延迟与安全指标,并给出可灰度的演进路径与跨团队迁移方案。

哈希表

回答框架 · 前两步

  1. 停顿的根源是单次全量 rehash;解法是把迁移摊到多次操作上,比如渐进式 rehash(每次 put 或 get 顺带搬若干个桶),或者分片后逐片迁移,把一次 200ms 切成多个可观测的小段。
  2. 渐进式 rehash 必须定义迁移期间的读写语义:通常 get 先查新表再查旧表,put 统一写新表或写旧表并打标记,删除要两边都删;迁移完成要有明确判据和状态机。

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

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

延伸阅读

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

同一能力域的其他题