分享

一道面试题讨论

desehawk 发表于 2018-4-24 14:11:05 [显示全部楼层] 回帖奖励 阅读模式 关闭右栏 1 6700
本帖最后由 desehawk 于 2018-4-24 16:16 编辑

在about云铁粉技术微信群中,讨论一道面试题,觉得不错分享给大家。参与者:三年二班邱小东,布衣,CC等
有一个5000万的用户文件,一个2亿记录的用户看电影记录文件,列出前1000个看电影最多的 用户(内存只有1G),那前1000万个?

已有(1)人评论

跳转到指定楼层
desehawk 发表于 2018-4-24 14:20:10
本帖最后由 desehawk 于 2018-4-24 14:21 编辑

分析:
这是道面试题,而且是大数据面试题。这里问题不知大家是否感到奇怪
1.没有限制组件,使用spark或则mapreduce
2.内存限制为1G。
从上面我们可以得到什么信息?
也就是说不限制你使用什么技术,但是限制使用内存。
如果是大数据组件,内存1G是不行的。所以这里只有使用算法来实现。

解答:
1.一个5000万长度的数组加一个5000万个key的HashMap,内存消耗会超过1个G吗?遍历2亿次加上5000万*log(5000wan)时间效率。(cc)

2.这是个topN算法,网上应该可以搜到吧,所有数据肯定内存是没法容下的,先把大文件hash成许多个小文件直到内存可以处理,之后算每个小文件的top1000,然后再递归合并小文件,直到内存可以处理。(回答者:Lyndon yang,此回答得到大家的认可)



about云铁粉微信群
http://www.aboutyun.com/forum.php?mod=viewthread&tid=24102


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条