`
chriszeng87
  • 浏览: 741627 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

海量数据面试题(转)

 
阅读更多

转自:http://kenby.iteye.com/blog/1031124

 

一 给定a、b两个文件,各存放50亿个url,每个url各占用64字节,内存限制是4G,如何找出a、b文件共同的url?

两个50亿个url的文件,大概有50 0000 0000 * 64 B = 640G的大小,肯定不能全部读入内存,可以分组解决

准备1030个桶,读取两个文件的url,对每个url,通过hash(url)%1031, 把url映射到其中一个桶,然后把每个桶的

url都写入一个文件,得到1030个文件,每个文件大约640M大,可以断定,相同的url只可能出现在一个文件中。所以接下来

只需依次把1030个文件读入内存,再次通过hash表找出相同的url,当然这次的hash函数不要跟上次用一样的,不然每个url

都会出现冲突。最后汇总到一个文件,即得到了结果。算法中之所以取1031的模,是因为1031是素数,且接近1024。

 

二 有10个文件,每个文件1G,每个文件的每一行都存放的是用户的query,每个文件的query都可能重复。如何按照query的频度排序?

总共要处理10G的数据,想办法分割成512份,每份大小为20M

准备520个桶,读取10个文件的query,对每一个query,通过hash(query)%521,把query映射到其中一个桶,然后把每个

桶的query写入一个文件,得到520个文件,每个文件大约20M,可以断定,相同的query只可能出现在一个文件中。所以

接下来只需把520个文件依次读入内存,再次使用hash表,统计每个文件内每个url的频度。根据频度,从大到小,写入

文件。这样就得到另外520个排好序且不重复的url文件。最后对520个文件使用归并排序,将结果写入文件。

难点1:对于一个由url和频度组成的hash表如何根据频度排序,然后把排序结果写入文件

难点2:对于520个由url和频度组成的文件,如何使用归并排序

 

三 海量日志数据,提取出某日访问百度次数最多的那个IP。

IP跟字符串不一样,要充分利用IP的特点,把海量日志分组处理。IP是一个32bit的整数。我们把最高位的10个比特作

为组号,将海量日志分成2^10 = 1024个组,存储到1024个小文件中,每个文件最多2^22个不同的IP地址,假设一

条日志100个字节,那么每组文件大约2^22*100B = 400M。 然后使用hash表,统计每个小文件出现次数最多的IP,最后

从1024个文件中选一个出现次数最多的IP

 

 

四 搜索的输入信息是一个字符串,统计300万输入信息中的最热门的前10条,我们每次输入的一个字符串为不超过255byte,内存使用只有1G。请描述思想,写出算法(c语言),空间和时间复杂度。

要处理的数据有300 0000 * 255B = 765M, 可以全部读入内存,用hash表统计每个字符串的频率,然后用size为

10的最小堆来得到最热门的前10条。具体做法为,遍历所有字符串,如果它的频率比最小堆堆顶的元素大,则取

而代之,最后最小堆剩下的字符串就是最热门的前10条

分享到:
评论

相关推荐

    SQL数据库对于海量数据面试题及答案

    本文整理和大家分享一些SQL数据库对于海量数据面试题及答案给大家,很不错哦,喜欢请收藏一下。

    海量数据面试题整理

    整理的一些常见互联网海量数据排序面试题。

    十道海量数据处理面试题

    海量数据处理是互联网公司技术面试中的一个重要环节,它主要考察应聘者处理大规模数据集的能力,以及对各种存储、计算、排序算法的理解和应用。以下针对提供的文件内容,提炼出相关的知识点。 首先,海量数据处理的...

    海量数据处理面试题

    海量数据处理 !!!!!

    海量数据面试题整理txt

    ### 海量数据处理与面试题解析 #### 1. URL 去重算法 在处理海量URL时,需要高效地进行去重处理。一种常见的方式是通过哈希集(hash set)来实现。 - **方法一**:对于每个URL,将其添加到一个哈希集中。如果哈希...

    海量数据处理:十道面试题与十个海量数据处理方法总结

    #### 一、海量数据处理面试题解析 **1、海量日志数据,提取出某日访问百度次数最多的那个IP** - **问题概述**: 给定一天内的海量日志数据,从中找出访问百度次数最多的IP地址。 - **解决方案**: - **初步思路**: ...

    IT常见面试题-海量数据处理面试题集锦

    IT常见面试题-海量数据处理面试题集锦,根据实际的面试经验,总结了网上的面试题目,并给出了详细解析

    99%的海量数据处理面试题

    标题 "99%的海量数据处理面试题" 暗示了这是一份关于大数据处理技术的面试准备资料,可能涵盖了大数据领域的核心概念、技术工具、处理流程以及常见问题。描述中的“计算机教育界和出版界既是机遇,也是挑战”说明...

    海量数据处理面试题.pdf

    本文件《海量数据处理面试题.pdf》通过一系列面试题的分析,试图向读者提供一个关于海量数据处理的全面的知识架构。 首先,对于海量数据处理的概念,它涉及的是那些因数据量巨大而难以在短时间内处理完毕,或者数据...

    海量 数据 处理 面试题 与 方法大总结

    ### 海量数据处理面试题与方法大总结 在IT行业中,海量数据处理是一个非常重要的领域,它涉及到了很多高效的数据存储、检索以及处理技术。本文将基于给定的文件内容,对其中提及的一些关键知识点进行详细的阐述。 ...

    教你如何迅速秒杀掉:99%的海量数据处理面试题

    总的来说,处理海量数据面试题,关键在于理解数据处理的核心原理,灵活运用各种算法和数据结构,以及掌握分布式计算的基础知识。通过不断的实践和学习,才能在面试中迅速秒杀大多数问题,展现出自己的专业素养。

    SQL数据库对于海量数据面试题及答案.pdf

    "SQL数据库对于海量数据面试题及答案" 本文整理和大家分享一些SQL 数据库对于海量数据面试题及答案给大家,很不错哦,喜欢请收藏一下。 问题 1:找出 a、b 两个文件共同的url 给定 a、b 两个文件,各存放50 亿个 ...

    教你如何迅速秒杀99%的海量数据处理面试题

    一般而言,标题含有“秒杀”,“99%”,“史上最全/最强”等词汇的往往都脱不了哗众取宠之嫌,但进一步来讲,如果读者读罢此文,却无任何收获,那么,我也...十道海量数据处理面试题与十个方法大总结的一般抽象性总结。

    数据处理面试题

    在大数据处理领域,海量数据的处理是指对极大量级数据进行存储、处理和操作的活动。这里的“海量”意味着数据量极大,以至于无法在较短时间内进行处理,或者数据量太大而无法一次性装入内存。处理这类数据的常见方法...

    13道海量数据处理面试题.lake

    13道海量数据处理面试题.lake

    十七道海量数据处理面试题与Bit-map详解

    ### 十七道海量数据处理面试题与Bit-map详解 #### 第一部分:十五道海量数据处理面试题 **题目一**:给定a、b两个文件,各存放50亿个URL,每个URL各占64字节,内存限制是4GB,让你找出a、b文件共同的URL。 - **...

Global site tag (gtag.js) - Google Analytics