这是一个面试问题,有人问我,我没有真正得到一个好答案。我想知道是否有人可以帮助我理解解决方案:
"你有数十亿条推文流入。你将如何找出前10个主题标签? "
由于
答案 0 :(得分:6)
创建一个地图,其中主题标签为密钥,计数器为值。
在收到的每条推文中增加每个标签的计数器。
检查计数器的值以找到前10名。
您对问题的措辞不包括任何会禁止这种直接解决方案的限制。在面试的情况下,我会要求澄清问题以引出这些限制。
在诸如“它必须以线性时间运行”这样的约束下,并且“它必须使用恒定的内存量”,会出现更多有趣的答案。
我不确定是否存在针对该问题的常量内存解决方案,但我知道一个相关(通常更有用)的问题:识别构成给定结果部分的元素。我给了它as an answer to a similar question.
(我说,“更有用”,因为如果给定项目的总分数低于阈值,则更可能是噪音而不是真正的“前10名”材料。)
答案 1 :(得分:3)
您可能无法分析所有推文,因此您只需分析随机样本。从该样本中找到前10名,您可以找到前10名(在某种程度上确定,取决于样本的大小和样本质量)。
我不认为他们在这里寻找实际的解决方案,而是更多地探讨你如何解决(实际上)不可能解决的问题。