这是一则或许对你有帮助的信息
面试手册:这是一份大彬精心整理的大厂面试手册最新版,目前已经更新迭代了19个版本,质量很高(专为面试打造);
知识星球:专属面试手册/一对一交流/简历修改/超棒的学习氛围/学习路线规划,欢迎加入大彬的知识星球(点击链接查看星球的详细介绍); 统计不同号码的个数 题目来自百度二面。 题目描述 已知某个文件内包含大量电话号码,每个
- 分享28
- 计算机基础6
- 框架6
- 数据库6
- Java15
- 工具1
- 学习路线2
- 海量数据9
- 消息队列4
- 实践经验3
- 缓存17
- 笔记5
- Tomcat1
- 设计模式13
- 分布式7
- 优质文章31
- 场景设计20
- netty1
- springcloud1
- MySQL1
- redis1
- 源码分析24
- docker1
- git1
- maven1
出现频率最高的100个词 题目描述 假如有一个1G大小的文件,文件里每一行是一个词,每个词的大小不超过16byte,要求返回出现频率最高的100个词。内存大小限制是10M 解法1 由于内存限制,我们无法直接将大文件的所有词一次性读到内存中。 可以采用分治策略,把一个大文件分解成多个小文件,保证每个文件的大小小于10M,进而直接将单个小文件读取到内存中进行处理
查找两个大文件共同的URL 题目 给定 a、b 两个文件,各存放 50 亿个 URL,每个 URL 各占 64B,找出 a、b 两个文件共同的 URL。内存限制是 4G。 分析 每个 URL 占 64B,那么 50 亿个 URL占用的空间大小约为 320GB。 5,000,000,000 * 64B ≈ 320GB 由于内存大小只有 4G,因此,不可能一次性
如何在100亿数据中找到中位数? 题目描述 给定100亿个无符号的乱序的整数序列,如何求出这100亿个数的中位数(中位数指的是排序后最中间那个数),内存只有512M。 分析 中位数问题可以看做一个统计问题,而不是排序问题,无符号整数大小为4B,则能表示的数的范围为为0 ~ 2^32 - 1(40亿),如果没有限制内存大小,则可以用一个2^32(4GB)大小的
如何查询最热门的查询串? 题目描述 搜索引擎会通过日志文件把用户每次检索使用的所有查询串都记录下来,每个查询床的长度不超过 255 字节。 假设目前有 1000w 个记录(这些查询串的重复度比较高,虽然总数是 1000w,但如果除去重复后,则不超过 300w 个)。请统计最热门的 10 个查询串,要求使用的内存不能超过 1G。(一个查询串的重复度越高,说明查
如何找出排名前 500 的数? 题目描述 有 1w 个数组,每个数组有 500 个元素,并且有序排列。如何在这 10000*500 个数中找出前 500 的数? 方法1 题目中每个数组是排好序的,可以使用归并的方法。 先将第1个和第2个归并,得到500个数据。然后再将结果和第3个数组归并,得到500个数据,以此类推,直到最后找出前500个的数。 方法2 对于
如何按照 query 的频度排序? 题目描述 有 10 个文件,每个文件大小为 1G,每个文件的每一行存放的都是用户的 query,每个文件的 query 都可能重复。要求按照 query 的频度排序。 解答思路 如果 query 的重复度比较大,可以考虑一次性把所有 query 读入内存中处理;如果 query 的重复率不高,那么可用内存不足以容纳所有的
大数据中 TopK 问题的常用套路 今天想跟大家聊一些常见的 topK 问题。 对于海量数据到处理经常会涉及到 topK 问题。在设计数据结构和算法的时候,主要需要考虑的应该是当前算法(包括数据结构)跟给定情境(比如数据量级、数据类型)的适配程度,和当前问题最核心的瓶颈(如降低时间复杂度,还是降低空间复杂度)是什么。 首先,我们来举几个常见的 topK 问题
问题 给你1个文件bigdata,大小4663M,5亿个数,文件中的数据随机,一行一个整数: 现在要对这个文件进行排序,怎么做? 内部排序 先尝试内排,选2种排序方式: 3路快排: 归并排序: 数据太多,递归太深,会导致栈溢出。数据太多,数组太长,会导致OOM。 可见这两种方式不适用。 位图法 BitMap算法的核心思想是用bit数组来记录0-1两种状态,然