大数据面试题分析

最近看到一些大数据的面试题,今天就在这里好好分析一下。大数据面试题的条件一般都要求我们处理一批计算机内存放不下的数据。当我们遇到这种面试题时,我们会不知到该怎么办,其实我们可以通过以下这些思想来完成大数据处理: 
1. 哈希切分 
哈希切分就是将一个大文件,利用哈希的原理,将其分为若干个小文件。相同的数据都被分到同一个文件里。例如我有一个存放着100亿个整数的大文件,将其分为100个小文件。将每个数都模100,结果相同的数存放到一个文件里。因为相同的数模100的结果是一样的。这样就非常方便遍历。

2. 位图(BitMap)

位图法就是bitmap的缩写。所谓bitmap,就是用每一位来存放某种状态,适用于大规模数据,但数据状态又不是很多的情况。通常是用来判断某个数据存不存在的。 

3. 布隆过滤器(Bloom Fileter) 

4. 哈希表 

5. 堆


面试题一:给一个超过100G大小的log file, log中存着IP地址, 设计算法找到出现次数最多的IP地址。

100G的文件普通机器内存中肯定是放不下的,所以我们就要找其他的方法来解决这个问题。这些IP地址相当于一个32位的字符串,这么大的文件,我们可以考虑切分,但光切分还不行,假设有1G可用的内存,那我们切分成100份,那还得把这100个文件全部遍历一遍,把每一个出现的IP都统计一下次数,最后找到出现次数最多的IP,这是一种方法,但是效率太低。我们还有没有其他的方法,有,那就是Hash分桶法。把这32位的IP通过字符串哈希函数转化成对应的整形,把100G文件分成1000个,从硬盘中读取这些IP,转化成整形后对文件个数取余,余数是多少就放进哪个文件里,这样就保证相同的IP一定是在同一个文件里。分好之后去统计每个文件里出现次数最多的,问题就转化成找这1000个IP出现次数最多的一个。这样问题就解决了。


面试题二:与上题条件相同,如何找到top K的IP。

看到这个题目大家一定会想,那就继续用Hash分桶法,这其实是不对的,因为这样的结果是,可能一个文件里IP的最多才10次,而另一个文件里IP最少的就有100次,这不就出问题了嘛。所以我满要想其他的方法,我们可以统计这些ip的次数,建一个小堆就可以找出前K个最多的。记住一定要建小堆。


面试题三:给定100亿个整数,设计算法找到只出现一次的整数。

100亿整数内存肯定放不下,整数范围是0到42亿多,所以,这100亿里一定有很多重复的数字。首先我们想到的就是切分,切到内存中能放下,然后遍历去找。这样做可以但是效率太低,我们可以考虑用位图来解决这个问题。位图一般是用1个位来表示数存在或者不存在,这里它找只出现1次的,所以用两个位来表示,两个位就是4个状态,我们只使用3个状态就好,分别是不存在,出现1次,出现多次,用两个位表示一个数,42亿个数位图只需要开1个G左右。


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

文件太大内存放不下,我们可以想到切割,把A文件切分成100份,拿B文件去比对。这样做可以,但是太慢了。

其实这个题也可以用Hash分桶法来做, 100亿个整数分到1000个文件里,每个数对1000取余,放到余数对应的文件里。两个文件都经过哈希分桶后,只需要对比编号一致的文件,因为哈希分桶保证了大小相同的整数一定分到同一个文件里。


今天就先到这里,下次还有别的大数据题分享。

大数据面试题v3.0 pdf》是一本常见的大数据面试题集合。该书主要涵盖了大数据领域的各个方面,包括数据处理、数据存储、数据分析以及大数据工具和技术等。该书的目的是帮助面试者更好地准备大数据面试,提高他们在面试过程中的竞争力。 《大数据面试题v3.0 pdf》这本书非常受欢迎的原因有以下几点: 1. 广泛而全面的内容:该书囊括了大数据领域的众多方面,从数据的采集、清洗、存储,到数据分析、可视化、机器学习等,涵盖了各种重要的技术和工具。面试者可以通过阅读这本书,全面了解大数据的各个方面,做到知识全面、准备充分。 2. 实战性强:书中的题目都是实际工作中常见的问题,具有一定的实战性。通过解答这些问题,读者可以提高自己的实际操作能力和解决问题的能力,更好地应对实际面试中的挑战。 3. 简洁清晰的表达:该书的题目都是精心设计的,问题清晰明了,答案简洁明了,容易理解。这样的设计能够帮助面试者更好地掌握每个问题的重点,并能够简明扼要地回答。 《大数据面试题v3.0 pdf》是一本很好的大数据面试准备资料,帮助面试者系统地学习和复习重要的大数据知识点,并提供了经典的面试题目,能够帮助面试者更好地应对大数据位的面试挑战。无论是对于准备面试的人还是对于大数据领域感兴趣的人来说,都是一本非常值得阅读的书籍。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值