问题:给定a.b两个文件,各存放50亿个url,每个url各占64字节,内存限制是4G,让你找出a.b文件共同的url? 分析:50亿个url,每个url64字节,就是320G,显然是无法一次读入内存的.因此这里需要采用分治法. 方案:分治法,分支方法:哈希 步骤: 如图所示: 1 将AB两个文件,用相同的哈希函数,分解为1000个独立哈希值相同的小文件,这里哈希函数的设计是个重点. 2 哈希值不同的url必然不在序号对应的文件中,因此只要在序号对应的两个文件中进行互相匹配即可. 3 比较每对小…
作者:July出处:结构之法算法之道blog 以下是原博客链接网址 http://blog.csdn.net/v_july_v/article/details/7382693 微软面试100题系列 http://blog.csdn.net/column/details/ms100.html 前言 一般而言,标题含有“秒杀”,“99%”,“史上最全/最强”等词汇的往往都脱不了哗众取宠之嫌,但进一步来讲,如果读者读罢此文,却无任何收获,那么,我也甘愿背负这样的罪名,:-),同时,此文可以看做是对这篇…
Hash表算法处理海量数据处理面试题 主要针对遇到的海量数据处理问题进行分析,参考互联网上的面试题及相关处理方法,归纳为三种问题 (1)数据量大,内存小情况处理方式(分而治之+Hash映射) (2)判断元素是否在集合中(布隆过滤器+BitMap) (3)各种TOPN(存储和各种排序) 经典问题分析 上千万or亿数据(有重复),统计其中出现次数最多的前N个数据,分两种情况:可一次读入内存,不可一次读入. 可用思路:trie树+堆,数据库索引,划分子集分别统计,hash,分布式计算,近似统计,外排序…
来吧骚年,看看海量数据处理方面的面试题吧. 原文:(Link, 其实引自这里 Link, 而这个又是 Link 的总结) 另外还有一个系列,挺好的:http://blog.csdn.net/v_july_v/article/category/1106578 另: Given 1 billion number, get the largest 1 million. Large dataset means you cannot store all of them and sort. 注:因为1 mi…
如题:有List<String> list1和List<String> list2,两个集合各有上万个元素,怎样取出两个集合中不同的元素? 方法1:遍历两个集合 public static void main(String[] args) { List<String> list1 = new ArrayList<String>(); List<String> list2 = new ArrayList<String>(); for(i…
最近刚接触python,找点小任务来练练手,希望自己在实践中不断的锻炼自己解决问题的能力. 公司里会有这样的场景:有一张电子表格的内容由两三个部门或者更多的部门用到,这些员工会在维护这些表格中不定期的跟新一些自己部门的数据,时间久了,大家的数据就开始打架了,非常不利于管理.怎样快速找到两个或者多个电子表格中数据的差异呢? 解决办法: 1.Excel自带的方法(有兴趣的自行百度) 2.python 写一个小脚本 #!/usr/bin/env python # -*- coding: utf-8 -…
如题:有List<String> list1和List<String> list2,两个集合各有上万个元素,怎样取出两个集合中不同的元素? 方法1:遍历两个集合 public static void main(String[] args) { List<String> list1 = new ArrayList<String>(); List<String> list2 = new ArrayList<String>(); for(i…
问题描述: 有10个文件,每个文件1G,每个文件的每一行存放的都是用户的query,每个文件的query都可能重复.要求你按照query的频度排序. 分析:一般海量数据采用分治法时,都要用到哈希,将相似的数据聚集在一起.因此,本题的第一种解法就按照这个思路进行处理. 方案一: 图上说明的很清楚,就不再用文字描述了.像这种海量数据处理的题目,画图往往比语言描述更清晰易懂.   方案二: 如果query的种类较少,重复次数较多,当不同的query可以一次性加载到内存中时,可以选择HashMap进行统…
--找出所有文件最小可resize尺寸 SELECT a.file_id, CEIL( ( NVL( hwm,1 ) * blksize ) / 1024 / 1024 ) smallest_M, CEIL( blocks * blksize / 1024 / 1024 ) currsize_M, CEIL( blocks * blksize / 1024 / 1024 ) - CEIL( ( NVL( hwm,1) * blksize ) / 1024 / 1024 ) savings_M,…