这是有人问我的一个面试问题,我真的没有很好的答案。我想知道是否有人可以帮助我理解解决方案:
“你有数十亿条推文流入。你将如何找出前 10 个主题标签?”
谢谢
这是有人问我的一个面试问题,我真的没有很好的答案。我想知道是否有人可以帮助我理解解决方案:
“你有数十亿条推文流入。你将如何找出前 10 个主题标签?”
谢谢
创建一个地图,其中一个主题标签作为键,一个计数器作为值。
增加您收到的每条推文中每个标签的计数器。
检查计数器的值以找到前 10 个。
您对问题的措辞不包括任何会禁止这种简单解决方案的限制。在面试的情况下,我会问一些明确的问题来引出这些限制。
在诸如“它必须在线性时间内运行”和“它必须使用恒定数量的内存”等约束条件下,出现了更多有趣的答案。
我不确定对于所提出的问题是否有一个恒定的记忆解决方案,但我知道一个用于相关(通常更有用)的问题:识别构成给定结果部分的元素。我把它作为一个类似问题的答案。
(我说“更有用”,因为如果给定项目的总比例低于阈值,则它比真正的“前 10 名”材料更有可能是噪音。)
您可能无法分析所有推文,因此您只需分析随机样本。从该样本中找到前 10 名,您就可以找到前 10 名(在某种程度上可以确定,具体取决于样本大小和样本质量)。
我不认为他们在这里寻找实际的解决方案,而是更多地探索您的思考过程,以了解如何解决(实际上)不可能的问题。