拿下技术面上传简历

你负责一个日处理 50 亿条日志的离线去重系统。输入是 50 亿个 128-bit 的 ID,要求输出去重后的 ID 集合。团队提出两个方案:方案 A 用哈希表,期望 O(n) 时间和 O(n) 额外空间,单机 256 GB 内存可能放不下;方案 B 先外部排序再扫描去重,O(n log n) 时间和 O(1) 额外空间(磁盘),但需要多轮磁盘 I/O。作为技术负责人,你怎么做复杂度分析和工程选型?请给出量化估算和最终决策,并说明你会怎么向团队解释 Big-O 与实际吞吐之间的关系。

数据结构与算法复杂度分析5 年以上知识点 1 个

面试官在考什么

考察在真实系统容量约束下,能否把 Big-O 转化为可量化的内存/IO/网络成本,并据此做架构选型与向上沟通。

时间/空间复杂度

回答框架 · 前两步

  1. 量化 n=5e9,128-bit=16B,去重后即使只剩一半也有 2.5e9 条,哈希表条目含 key、value、指针、负载因子等,通常 32-64B/entry,总内存 80-160GB 起,单机 256GB 处于临界且随机访问导致 cache miss。
  2. 外部排序 O(n log n) 但 I/O 次数、块大小、归并路数决定常数;顺序 I/O 吞吐可能远高于哈希表随机访问,实际耗时需按磁盘带宽和 IOPS 估算。

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

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

延伸阅读

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

同一能力域的其他题