大数据面试算法[牛客笔记]
来源:互联网 发布:借贷软件 编辑:程序博客网 时间:2024/06/10 18:21
1、bitmap
10亿个IP地址的排序:
10亿个IP,2^32存储足够,新建2^32的bit型数组(512M),每一位可以为0或1,遍历10亿IP并将相应的位置置1,最后输出。
2、hashmap
10亿人年龄的排序:
建立一个1-200的无符号型整数的数组,4字节足够存储10亿,整个数组足以存放所有的年龄。
**区别:**1是数组足够大,但是数组的内容只能为0或1;2正好相反。
3、20亿个32位整数的出现次数
区别:数组足够大,内容(计数也得足够大),但是内存(2G)有限制。
利用hash函数(相同的数将被分到同一小文件)将大文件分成多个小文件,分别计算小文件中整数出现的次数即可。
这类问题的基本步骤:
(1)根据内存限制决定分区的大小;
(2)对小区间进行操作;
(3)综合。
通常利用服务器集群来设计和实现数据缓存:
(1)将数据ID转换成hash值;
(2)hash%N(N为机器台数)的值即为数据所在机器编号。
问题:增删机器,数据迁移较大(N改变,hash/N改变,数据需要迁移)。
改进:一致性hash
<1>将数据ID转换为hash值,并组成一个环形结构;
<2>同样将机器码转换为hash值,加入环中,数据属于它顺时针的下一台机器;
增加机器:将改机器码转换为hash值加入环中,并将改hash值到逆时针的前一台机器之间的数据从顺时针的下一台机器迁移到该机器上即可。
删除机器:将该机器上的数据迁移到顺时针的下一台机器上。
- 大数据面试算法[牛客笔记]
- BAT面试大数据笔记
- 大数据算法学习笔记(2):大数据算法
- 大数据日知录:架构与算法 笔记
- 大数据学习笔记-KNN算法
- 大数据算法作业笔记1
- 直通BAT面试算法——大数据
- 面试中的大数据
- 大数据面试笔试
- 面试:大数据问题
- 大数据面试
- 面试大数据解决方案
- 大数据面试宝典
- 大数据面试宝典
- 大数据面试宝典
- 大数据挖掘面试
- 大数据面试总结
- 大数据面试题目
- Python基础三
- 14. nohup
- 方法的调用
- link标签中的integrity和crossorigin字段
- Bomb [数位DP]
- 大数据面试算法[牛客笔记]
- 数组的反转
- org.apache.hadoop.io.nativeio.NativeIO$Windows.createFileWithMode0(Ljava/lang/String;JJJI)Ljava/io/F
- JVM系列三:JVM参数设置、分析
- Maximum Subarray
- 从面向过程到面向对象
- 不思念
- 第 0012 题: 敏感词文本文件 filtered_words.txt,里面的内容 和 0011题一样,当用户输入敏感词语,则用 星号 * 替换,例如当用户输入「北京是个好城市」,则变成「**是个好
- PCB过孔大小和电路之间的关系