布隆过滤器和海量数据面试题

哈希切割topK问题

给一个超过100G大小的logfile,log中存着ip地址,设计算法找到出现次数最多的ip地址,与上题条件相同,如何找到topK的ip?如何直接用Linux系统命令实现?

(1)topK的ip

思路:使用堆

(2)寻找次数最多

思路:分割成多个文件,分别多每个文件进行统计,统计方式用hash,ip为key,次数为value,然后就可以统计出每个ip出现的次数,然后再比较出出现次数最大的。

如果是找前k个出现次数最多的ip,就把出现的次数作为堆用来比较的的key,ip地址作为value,把刚刚用哈希统计好的次数,建立存储数据一定的小堆(用其中一个文件先建立一个topK堆,然后再用其他文件中的数据替换插入),出现次数多的都在堆里,然后根据次数对应的找到ip。

 

位图的应用

给定100亿个整数,设计算法找到只出现一次的整数

思路:

分割为多个文件,两个为比特位表示出现的次数

 

 

给两个文件,分别有100亿个整数,我们只有1G内存,如何找到两个文件交集

分割多个文件,编号相同的文件比较,一个比特位表示是否出现

 

位图变形

1一个文件有100亿个int,1G内存,设计算法找到出现次数不超过2次的所有整数

位图(两个比特位表示一个数据)

 

布隆过滤器

给两个文件,分别有100亿个query(字符串),我们只有1G内存,如何找到两个文件交集?分别给出精确算法

思路:思路的第一步都是先把两个文件分割成很多文件,然后每个编号相同的文件比较。

为什么使用布隆过滤器:字符串转化整形数字,两个字符串可能都转化为了同一个整形数据,这样单纯的位图就无法解决

近似算法:布隆过滤器,用不同的计算方法,让query映射多个位图(对应多个比特位),让多个位图中对应的位置都置1,找的时候通过query再次去找所有位图对应的位置是否全为1,如果都是1就可能存在,如果有一个不为1,就说明一定不在。(缺点:不能作删除操作)

精确算法:使用哈希(闭散列法和开链法):转化的整数为key,query为value,寻找的时候有两个比对条件,这样就比较精确了。

思考:

如何扩展BloomFilter使得它支持删除元素的操作?

思路:把每个位被映射的次数用一个变量记录起来,删除的时候就减一即可。(不过这样做还是在增加了不少内存,感觉不太实用)

如何扩展BloomFilter使得它支持计数操作?

思路:弄一个变量计数呗,这变量放哪呢

 

倒排索引

给上千个文件,每个文件大小为1K-100M,给n个词,设计算法对每个词找到所有包含它的文件

思路:

精确方法:在hash表中加载每个文件吧,hash的key用词转化的整形,然后用整形映射词的位置,如果有哈希冲突就用方法解决,然后在用n词去匹配是文件中否存在这个词。

 

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
布隆过滤器是一种用于快速判断一个元素是否可能存在于一个集合中的数据结构。它可以通过牺牲一定的准确性来提高查询效率。布隆过滤器的主要应用之一就是解决数据一致性的问题。 在分布式系统中,数据一致性是一个重要的问题。当多个节点同时对数据进行更新时,可能会导致不同节点之间的数据不一致。为了解决这个问题,可以使用布隆过滤器来快速判断一个新的更新是否已经在其他节点上被处理过,从而避免重复处理。 具体来说,可以将每个节点维护一个布隆过滤器,用于记录已经处理过的更新。当一个节点接收到一个新的更新时,首先将更新的内容通过哈希函数映射到布隆过滤器中的位数组上,并将相应位置置为1。然后,节点可以查询其他节点的布隆过滤器,判断该更新是否已经被其他节点处理过。 如果一个更新被多个节点同时接收到并处理,由于布隆过滤器的准确性有限,可能会存在误判的情况。这时可以通过其他机制来保证数据最终的一致性,比如使用分布式锁或者进行协调和同步。 总结起来,布隆过滤器可以在分布式系统中用于判断一个更新是否已经被其他节点处理过,从而解决数据一致性的问题。然而,布隆过滤器并不能保证完全的准确性,可能存在一定的误判率,需要结合其他机制来确保数据的最终一致性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值