微信公众号:路人zhang
网站救助计划

1.为阅读体验,本站无任何广告,也无任何盈利方法,站长一直在用爱发电,现濒临倒闭,希望有能力的同学能帮忙分担服务器成本


2.捐助10元及以上同学,可添加站长微信lurenzhang888,备注捐助网站倒闭后可联系站长领取本站pdf内容


3.若网站能存活下来,后续将会持续更新内容

当前位置: 场景题 > 海量数据高频面试题 > 3.有一个1G大小的一个文件,里面每一行是一个词,词的大小不超过16字节,内存限制大小是1M。返回频数最高的100个词。

方法还是前面的分治+HashMap+小顶堆

首先遍历文件,对每个词进行hash,比如hash(x)%5000,将所有词分别存入到5000个小的文件中,每个文件大概200k左右,然后通过HashMap统计每个小文件中词的频率(key为词,value为频率)。对于每个遍历到的词,如果在HashMap中,则将value值加1,不在HashMap中,则将词存入HashMap,并将值置为1。最后构建小顶堆,堆的大小为100,找到频率最高的100个词。

本站链接:https://www.mianshi.online如需勘误或投稿,请联系微信:lurenzhang888


点击面试手册,获取本站面试手册PDF完整版