2 lulinha lulinha 于 2014.12.11 18:32 提问

大众点评面试题:有10个文件,每个文件1G,每个文件的每一行存放的都是用户的query....

有10个文件,每个文件1G,每个文件的每一行存放的都是用户的query,每个文件的query都可能重复。要求你按照query的频度排序10个文件中的所有query。
http://www.manong1024.com/q/355

1个回答

lowanty
lowanty   2014.12.12 10:28
已采纳

先说解决方案。在不计内存消耗的情况下。构建一个全局Map,其中Key为query,value为计数器。然后开10个线程,分别读取文件,然后,操作Map,如果key已存在,value计算器加1,如果Key不存在,新增一个Entry,value记为1。。当然处理时主要多线程同步就行了。。。。当然也可以构建10个Map,都处理完后做Map合并。。。最后对Map进行排序就可以了。。。处理过程中,如果内存开销太大可以将Map改为数据库存储。就可以了。。。。。。当然如果有hadoop平台直接使用wordcount就更完美了。

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
84 有 10个文件,每个文件1G 按照 query 的频度排序
3.有 10  个文件,每个文件 1G, 每个文件的每一行都存放的是用户的 query,每个文件的 query 都可能重复。 要求按照 query  的频度排序. /* 3.有 10 个文件,每个文件 1G, 每个文件的每一行都存放的是用户的 query,每个文件的 query 都可能重复。 要求按照 query 的频度排序. 典型的TOP K算法,解决方案如下: 方案1: 顺
百度面试题query的分类排序
5、有10个文件,每个文件1G,每个文件的每一行都存放的是用户的query,每个文件的query都可能重复。如何按照query的频度排序? 回答:  1)读取10个文件,按照hash(query)%10的结果将query写到对应的文件中。这样我们就有了10个大小约为1G的文件。任意一个query只会出现在某个文件中。  2)对于1)中获得的10个文件,分别进行如下操作   -利用hash_
数据分析师常见的10道面试题解答
数据分析师常见的10道面试题解答     】               1、海量日志数据,提取出某日访问百度次数最多的那个IP。   首先是这一天,并且是访问百度的日志中的IP取出来,逐个写入到一个大文件中。注意到IP是32位的,最多有个2^32个IP。同样可以采用映射的方法,比如模1000
大众点评2015笔试题(答案)
1、有10个文件,每个文件1G,每个文件的每一行存放的都是用户的query,每个文件的query都可能重复。要求你按照query的频度排序。 答案:1)遍历10个文件的每个query,取t = hash(query)%10,将这个query存入第t个文件。这一步结果将相同query保存至同一个文件中,并且每个文件的大小约为1g 2)分别对每个文件,找出每个query的个数,使用hashmap(
关于一道大数据量大文件的面试题
问题:  有100W个文件存储单词,每个文件有80M到10G的大小,设计一种数据结构找出出现次数最多的前10个单词 备用解决方案: 我的想法是用红黑树的思想来做,设计树节点结构 struct Node {   bool operator >=(Node&)
有一个1G大小的一个资料,里面每一行是一个词,词的大小不超过16字节,内存限制大小是1M。返回频数最高的100个词
有一个1G大小的一个文件,里面每一行是一个词,词的大小不超过16字节,内存限制大小是1M。返回频数最高的100个词. 首先,我们看到这个题目应该做一下计算,大概的计算,因为大家都清楚的知道1G的文件不可能用1M的内存空间处理。所以我们要按照1M的上线来计算,假设每个单词都为16个字节,那么1M的内存可以处理多少个单词呢? 1M = 1024 KB = 1024 * 1024 B 。然后1
一个文本文件中约有10万多行的数据,每个数据占一行(数据为一个整数)。要求:统计出总行数,并找出出现次数最多的那个整数。
 基本思路就是:首先读取数据,因为一行只有一个数据,所以在读取的过程中可以完成两个步骤,1,数据量的计算,每读取一行,count++ ,同时把数据存储到一个链表中,然后把链表转换为数组,利用Arrays的静态方法sort()完成数组的排序最后根据排序好的数组计算哪个数出现的最多最后输出类numSum可以简单的看作一个结构主要是存储一个整数和该整数出现的次数完全可以用两个变量代替import jav
1G内存2G文件找出现最多次QQ号算法
题目:服务器内存1G,有一个2G的文件,里面每行存着一个QQ号(5-10位数),怎么最快找出出现过最多次的QQ号 看来网上不少交流,发现大家都觉得1G内存放不下上面的数据 其实是可以放得下的,只要700M左右就可以在内存里放下这些数据,不需要外排   完全不需要写硬盘,位图+分区思想可以在内存把334M行10位数QQ号完成统计  详解: 9999999999 = 0x2540BE3FF
大数据面试题记录
1 海量日志数据,提取出某日访问百度次数最多的那个IP
/etc/passwd和etc/group中每条记录个字段的含义
/etc/passwd中一行记录对应着一个用户,每行记录又被冒号(分隔为7个字段,其格式和具体含义如下:   用户名:口令:用户标识号:组标识号:注释性描述:主目录:登录Shell   1)“用户名”是代表用户账号的字符串。通常长度不超过8个字符,并且由大小写字母和/或数字组成。登录名中不能有冒号(,因为冒号在这里是分隔符。为了兼容起见,登录名中最好不要包含点字符(.),并且不使用连