首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

一道面试题,给大家分享解决办法

2012-04-03 
一道面试题,给大家分享毕业已找到工作,尽管工资一般,但毕竟是菜鸟,所以还是能接受。现在也闲下来了,给大家

一道面试题,给大家分享
毕业已找到工作,尽管工资一般,但毕竟是菜鸟,所以还是能接受。现在也闲下来了,给大家分享一些面试题,以后说不定有人面试会用到。这是我技术一面时的一道题,海量处理的,我是不会做,现在也一样。
题目如下:
有一个文件,文件里面有10Gitem,item是由用户id和其拥有的资源id构成,内存是500M。如何在短时间内找到拥有资源数最多的10个用户id。注意用户id数目可能也有将近10G。

时间复杂度应该是o(n)-o(nlgn)左右的,策略自己设计。当时自己是说了一个败者树多路归并的,说的很挫,挂了。

[解决办法]
聚集索引或者hastable!
[解决办法]
用户id是什么格式的?
item会重复不?


如果ID就是一个uint32,可以分段处理

500M内存可以放100M个ID,处理40次就可以处理完uint32个ID,读40次文件就OK了。

如果ID是一个串,先把内容根据ID hash到1000个文件,然后每个文件再单独处理。只要读两次文件,但要写一次文件。
[解决办法]
没有特点的“海量”数据统计,唯一的办法就是多路归并外排序,读两次硬盘,写一次硬盘

热点排行