海量数据面试题

面对超过100GB的logfile,本文介绍如何利用Trie树统计IP地址出现次数,并借助堆数据结构找出出现最频繁的IP,确保在大数据量下仍能高效解决问题。
摘要由CSDN通过智能技术生成

海量数据面试


1、给个超过100G的logfile, log中存着IP地址, 设计算法找到出现次数最多的IP地址?



第一题:首先我们的思路就是利用哈希进行文件的切分,我们把100G大小的logfile分为1000份,那么下来差不多没一个文件就是100M左右,然后再利用哈希函数除留余数的方法分配到对应的编号文件中,然后得出每个文件中出现次数最多的IP,然后堆排序取得这1000个ip中出现次数最多的。


2、与上题条件相同,如何找到topK的IP?如何直接Linux系统命令实现?


这一道题的思路就是我们从题意可以看到这道题是来找top K的IP,topK我们的思路就是用堆来实现,找Top,就需要用小堆,这个是根据堆的数据特性,我们建立成小堆,然后每次和堆顶最小的进行比较,然后再次进行向上调整,最后,就可以得到一个堆顶是最小IP,的一个小堆,这个小堆就是我们需求的K个IP,需要建的是K个节点的堆。


3、给定100亿个整数,设计算法找到只出现一次两次或者多次的整数!


由于是整数,所以我们采取的思路就是我们可以采用位图,100亿个整数,大致就是需要1.25G的内存进行存储。一个数字必须要2个位来进行表示状态,比如说,00表示不存在,01表示存在一次,10表示存在多次。这样就可以全部表示出每一个数存在的状态,这里我们就需要的内存是2.5G。


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


这个我们有多种思路,我们采用哈希切分,100亿个整数我们来切分为1000个文件,这样就有2000个文件,然后我们进行哈希算法,A的100亿个数根据余数不同,对应存在A0文件-A999文件,这样就完成了A的哈希切分,然后我
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值