拿下技术面上传简历

有一个去重任务:内存中一次性有 1 亿条 URL,平均长度 80 个 ASCII 字符,要在一台 JVM 堆上限 4GB 的机器上做「精确去重」(不允许有误判,不允许落盘到外部存储作为主方案)。有人提议直接用 HashSet<String> 装全部 URL。请回答:(1) 估算这个 HashSet 的内存占用,判断是否可行,要求给出量级估算的过程而不只是结论;(2) 如果不可行,写出你实际会采用的方案,并说明它把成本转移到了哪里。

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

面试官在考什么

能不能把「复杂度」落到字节和机器上做数量级估算,并据此在精确性/内存/时间之间做数据结构选型。

时间/空间复杂度

回答框架 · 前两步

  1. 会做数量级估算:String 对象约 24B + 底层字节数组约 96B + HashSet.Node 约 32B + table 数组约 10B,合计约 160B/条,1 亿条约 16GB,远超 4GB,HashSet<String> 不可行。
  2. 能指出主要开销来自对象头、链表节点和 table 数组,字符串本身内容只占其中一半左右,不能按 80B/条 来算。

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

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

延伸阅读

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

同一能力域的其他题