面试中常见的大数据问题

面试中常见的大数据问题主要有:对大数据进行去重,对大数据进行排序,取大数据的Top K等等。

大数据相关问题的花样数不胜数,但其根本考点是不变的——内存。

碍于内存的限制,不能对大数据进行一次性全部处理,所以首先想到的是分治处理,再合并。但怎么分治,需要好好琢磨,怎么合并,也需要好好琢磨。

分治法只是一种通用的方法,并不适用于所有情况。

1. 大数据去重

大数据去重的方案有很多,不同的题目采取的方案也会有些差异。

1.1 hash分组

大文件中存储着100G的 url 的数据,如何对其去重?

可以对 url 取hash,对 hash%100,即将所有 url 分进100个小文件中。重复的 url 一定会被分到同一个小文件中,再对小文件进行去重。

如果 hash 算法做的足够好,不同 url 的hash值肯定不同,再小文件中可以对哈希值进行去重。也可以通过 set 对url本身进行去重。

有一亿条信息,如何找出重复次数前10的信息?(忽略内存的限制)

扫描所有信息,设计一个hash函数(比如取信息的首字节、尾字节和中间任意一个字节作为hashcode),求信息的hash值,并放进散列表中,将key设计为信息字符串,value为重复字数。当有hashcode相等的信息时,比较一下,如果相同就将value+1,不相同就用链表存储。

之后遍历散列表,通过优先级队列,对value取Top K。

2. 大数据排序

如何从 1 亿个整数中找出 100 个最大的数?考虑内存

使用优先级队列(构建大顶堆),大小限制在100,遍历一次,即可找出前100大的数。

有10G整数数据,如何在2G内存的机器上对其进行排序?

先分治:将10G文件分成10个1G的文件,对其进行快排,得到10个已经排好序的小文件。

任取两个小文件,进行归并,每次归并1G的数据,即得到两个1G的数据文件,虽然是两个文件,但这两个文件是排好序的。

以此类推,每次归并排序1G的数据,即可将所有数据进行排序。

 

 

 

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值