字节面试一道topK没答出来,请教各位大佬
java吧
全部回复
仅看楼主
level 1
sick白牧 楼主
有1T的int数据,内存肯定放不下,问如何得到这些数据里出现频率最高的100个数字?
2021年05月11日 11点05分 1
level 9
经典分治,切成无数个小文件统计再逐步汇总
2021年05月11日 11点05分 2
我问他说小文件的统计表内存也放不下...
2021年05月11日 12点05分
@sick白牧 写文件里?
2021年05月11日 12点05分
@sick白牧 实在不行我在指定某个目录下以文件名为coung-number的形式创建文件,统计的时候改文件名就完事了,改完我直接ll | head -100截断'-',输出数字就可以了
2021年05月11日 12点05分
@谷雨念安 噢,不对,linux文件名不是这么排的,往文件里面追加1就行了,到时候按文件大小取前100
2021年05月11日 12点05分
level 14
贴吧算法一般都很差[滑稽]
2021年05月11日 13点05分 3
可这就是面java岗考的啊,光刷java不找工作也没用=。=
2021年05月11日 14点05分
哦不对,字节不用java...
2021年05月11日 14点05分
@sick白牧 字节有JAVA啊
2021年05月12日 08点05分
@这边建议你爬🐶 暑期实习后台这个说是python和go,但只要会一门语言就能投,我自己平时用java
2021年05月13日 08点05分
level 6
hash分治加最小堆
2021年05月11日 13点05分 4
@小李不吃鱼 我是真吃错药了。。。前一天晚上睡不着吃褪黑素,结果第二天白天才开始起效果,面试完了我直接躺睡
2021年05月11日 16点05分
刚百度了下,好像懂了,谢谢大佬[真棒]
2021年05月11日 14点05分
@sick白牧 老哥实习还是校招啊
2021年05月11日 15点05分
@小李不吃鱼 研二,暑期实习
2021年05月11日 16点05分
level 1
这个问题,几年前我学数据结构算法时,几年前我的大佬同学就问过我。
[吐舌]。。。。
2021年05月11日 14点05分 5
level 7
二叉堆最小堆
2021年05月11日 14点05分 6
level 10
[滑稽]可以去了解下数据库orderby咋实现的
limit:堆选
无limit:快排
超过buffer:归并排
然后你可以了解下分表分库的limit咋实现的
或者有一道经典的25匹马找前三的问题
基础题
2021年05月12日 01点05分 8
level 9
MappedByteBuffer文件内存映射,轻松搞定
2021年05月12日 02点05分 9
level 6
最小堆
2021年05月12日 04点05分 11
还没说一样[汗]怎么建堆呢?怎么解决内存不够统计的问题
2021年05月12日 04点05分
level 8
算一下int类型所有数最多占用内存空间,是2的32次方也就是4g个数。这里映射成int数组就行了。如果太小了,比如用byte,计数的数范围可能不够用,然后在对应位置上存储计数,算上虚拟内存一般是够用的。
2021年05月12日 05点05分 12
人家说了不行。
2021年05月12日 12点05分
level 1
读100个数据到内存,建堆,然后再读数据更新堆,时间复杂度o(nlog100)
2021年05月12日 06点05分 14
读取到相同数量的覆盖掉么?
2021年05月12日 08点05分
问题这个是对频率排序,不是值排序呀
2021年05月12日 08点05分
@无敌暴龙战士本尊 好吧,没仔细看题[小乖]
2021年05月12日 08点05分
level 8
内存放不下,用文件存储统计过程次数。用文件做草稿,最后统计。
2021年05月12日 08点05分 15
我这样说了,不让这样,因为就是考算法,不是给解决方案
2021年05月12日 12点05分
level 1
看题目描述内存放不下,似乎是外部排序?
2021年05月12日 08点05分 16
level 6
丢进hdfs mapreduce[喷]
2021年05月12日 08点05分 17
level 8
定一个int[Integer.MAX] list的数组不就行了吗 然后找到一个数字就是list[num]=list[num]+1,最后再排序,如果他的内存连一个数组都放不下的话那就不知道了
2021年05月12日 09点05分 19
确实完整频率表是存不下的
2021年05月12日 12点05分
这样内存也很大了吧
2021年06月07日 23点06分
1 2 3 尾页