【面试题】海量数据面试题分析

本文分析了处理海量数据的面试题,涉及哈希切分、位图、布隆过滤器等技术。针对找到最多IP、top K IP、只出现1次的整数及文件交集的问题,提供了详细解题思路,如利用哈希表、堆和位图策略解决内存限制问题。
摘要由CSDN通过智能技术生成

海量面试题的条件一般都要求我们处理一批计算机内存放不下的数据。当我们遇到这种面试题时,常有以下几种思想:
1. 哈希切分
哈希切分就是将一个大文件,利用哈希的原理,将其分为若干个小文件。相同的数据都被分到同一个文件里。例如我有一个存放着100亿个整数的大文件,将其分为100个小文件。将每个数都模100,结果相同的数存放到一个文件里。如果这100亿个数理想均匀,则每个小文件大约为1亿个数。
2. 位图(BitMap)
3. 布隆过滤器(Bloom Fileter)
4. 哈希表
5. 堆

例题1:给一个100G大小的log file, log中存着IP地址, 设计算法找到出现次数最多的IP地址?

这道题没有给出我们能运用的内存是多大,所以应该先和面试官沟通清楚,问清楚可以用的内存有多少。假如为1GB。
解法:利用哈希切分,将这100G的大文件切分成1000个约为100M的小文件(倘若内存还不够,可再分)。上面我们已经说过,相同的数据已经被分到了相同的文件里。再分别按顺序将这1000个小文件引入内存, 利用哈希表或者其他方法,求出每个小文件中出现最多的IP地址。这样我们就得到1000个IP。再这1000个IP里面选出出现次数最多的。

例题2:与上题条件相同,如何找到top K的IP?

当我们遇到求TopK的题时,一般考虑用堆。求最多或最大,用大堆。求最小或最少,用小堆。这里假设求出现次数最多的前K个IP。
1. 同样利用

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值