面试大数据题目总结

1.只用2GB内存在20亿个整数中找到出现次数最多的数

有一个包含20亿个全是32位整数的大文件,在其中找到出现次数最多的数

32位整数 = 4B

用Hash表来存,一条记录就是一个key, 一个value, 都用无符号整数保存, 需要8B内存。

记住10^9 = 1G 

2亿个整数,2*10^8 * 8 = 1.6G

20亿个数最极端的情况需要16G内存。

将2亿个整数分程16个文件,每次处理1个文件,然后找出最多的数,再16个比较一次即可。

 

40亿个非负整数中找到未出现的数

32位无符号整数的范围是0~4294967295, 现在有40亿个无符号整数,所以在整个无符号中必然有未出现的数,最多可以使用1G内存,怎么找到未出现过的数

假设全部Hash, 40*4 = 160*10^8 = 16GB内存

这里使用bit map的方法,申请一个长度为4294967295长度的bit类型的数组,bitArray上每一位只表示0或1

8个bit = 1B

所以只需要500MB的空间。

遍历一遍数据,将出现过的bitArray设为1,为0的就是没出现过的。

 

大数据问题最基础的就是计算数据规模

记住10^9 = 1GB = 10亿                    

10^6 = 1MB = 百万

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值