拿下技术面上传简历

某数据平台做跨数据源的实体归一:把判定为同一实体的记录合并成连通分量,规模约 10 亿实体,日均新增约 1 亿条“合并”边。新需求是:随时回答任意两个 ID 是否属于同一实体;运营发现误判时能撤销某一条历史合并;每天还要全量重算一次。现有实现是并查集加路径压缩。你怎么设计这套存储与查询,怎么支持撤销,以及为什么保留或不保留全量重算?

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

面试官在考什么

考察候选人能否识别路径压缩与可撤销性的冲突,并在超大规模下做重建与增量之间的架构取舍。

并查集

回答框架 · 前两步

  1. 可撤销性与路径压缩天然冲突:路径压缩会改写历史结构,无法精确回滚单条 union;撤销场景要么改用不带路径压缩的按秩合并并记录每次合并的父子关系自底向上回滚,要么用快照或分段版本化。
  2. 撤销成本要按边的年龄乘以中间增量来估算,不能每条都做全量回滚;常见做法是分段快照加段内重放,或者标记撤销加后台重算受影响分量,并给出阈值,比如受影响节点数或占比。

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

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

延伸阅读

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

同一能力域的其他题