海量数量处理
五山口老法师
腾讯后台开发工程师
展开
-
海量数据处理:两个大文件中的相同记录
1.题目描述给定a、b两个文件,各存放50亿个url,每个url各占64字节,内存限制是4G,让你找出a、b文件共同的url?2.思考过程(1)首先我们最常想到的方法是读取文件a,建立哈希表(为什么要建立hash表?因为方便后面的查找),然后再读取文件b,遍历文件b中每个url,对于每个遍历,我们都执行查找hash表的操作,若hash表中搜索到了,则说明两文件共有,存入一个集合。(2)...原创 2019-03-10 10:56:00 · 4660 阅读 · 2 评论 -
海量数据处理:1G大小的一个文件中找出出现频率最高的100个数
1.题目描述有一个1G大小的一个文件,里面每一行是一个词,词的大小不超过16字节,内存限制大小是1M,要求返回频数最高的100个词2.思考过程(1)参见我的其他大数据面试题博文。此处1G文件远远大于1M内存,分治法,先hash映射把大文件分成很多个小文件,具体操作如下:读文件中,对于每个词x,取hash(x)%5000,然后按照该值存到5000个小文件(记为f0,f1,...,f4...原创 2019-03-10 11:08:39 · 15356 阅读 · 18 评论 -
海量数据处理:在100亿个数中找出top 10000
经典的TOP K问题,借助堆排序进行前两天面试3面学长问我的这个问题(想说TEG的3个面试学长都是好和蔼,希望能完成最后一面,各方面原因造成我无比想去鹅场的心已经按捺不住了),这个问题还是建立最小堆比较好一些。 先拿10000个数建堆,然后一次添加剩余元素,如果大于堆顶的数(10000中最小的),将这个数替换堆顶,并调整结构使之仍然是一个最小堆,这样,遍历完后,堆中的1000...原创 2019-03-10 14:45:03 · 4339 阅读 · 0 评论 -
海量数据处理:BitMap
利用Java里的BitSet位集合实现:有四十亿个扣扣号,拿来一个扣扣号,最快速查找?一、问题描述:1.在42亿个qq号码中,如何使用O(1)时间复杂度去查找一个QQ号是否存在。2.qq号的位数小于13位,存储着42亿QQ号的内存不得超过600MB.二、位图排序思想由于待排序的数据记录较多,我们单纯地使用常见的排序方法时间效率较低,运行时间会很长。而且内存空间有...原创 2019-03-28 22:07:41 · 530 阅读 · 0 评论