`

昨天的一个面试题:如何从存放在A和B中的一亿条URL中找出A中有而B中没有的URL

阅读更多

A和B中各存放着一亿条不重复的URL,URL存放时无序的,且URL是没有特征的,A和B可以试任意数据结构,也可以是存在数据库中。

如何找出A中有而B中没有的URL。

我当时给出的思路是:

依次遍历A和B,把从A和B里取出来的URL进行hashcode变换,把每条URL转换成key。相同的URL转换成相同的hashcode,然后用这个hashcode充当数组的下标或者map的key,数组的元素或map的value就是URL在A和B中的出现次数。

 

当时面试官说这是个可行的办法之一。所以我觉得应该还有更好的办法,因为要把url做 hashcode,而且要做到不冲突,那么需要的数字就要很大很大。。。就算是用byte数组或者boolean数组来存放在URL在A和B中的出现次数,所需内存也很可观。

 

大家一起讨论下。。。。

分享到:
评论
1 楼 shansun123 2011-05-11  
如果在查找时可用内存有限且准确度不要求太高的话,我觉得可以尝试用Bloom Filter。

相关推荐

    面试 大数据 算法解析

    3.给定a、b两个文件,各存放50亿个url,每个url各占64字节,内存限制是4G,让你找出a、b文件共同的url? 4.在2.5亿个整数中找出不重复的整数 5.腾讯面试题:给40亿个不重复的unsigned int的整数,没排过序的,然后再...

    常见算法笔试或面试题

    问题:给你 a、b 两个文件,各存放 50 亿条 url,每条 url 各占用 64 字节,内存限制是 4G,让你找出 a、b 文件共同的 url。 方法:使用 hash 表。使用 a 中元素创建 hash 表,hash 控制在适当规模。在hash 中查找 ...

    十七道海量数据处理面试题与Bit-map详解

    **题目一**:给定a、b两个文件,各存放50亿个URL,每个URL各占64字节,内存限制是4GB,让你找出a、b文件共同的URL。 - **问题背景**:考虑到单个文件的总大小达到320GB(50亿 * 64字节 = 320GB),明显超出了4GB的...

    SQL数据库对于海量数据面试题及答案.pdf

    给定 a、b 两个文件,各存放50 亿个 url,每个 url 各占 64 字节,内存限制是4G,让你找出 a、b 文件共同的url? 方案 1:可以估计每个文件安的大小为50G× 64=320G,远远大于内存限制的4G。所以不可能将其完全加载...

    海量数据处理:十道面试题与十个海量数据处理方法总结

    - 比较两个已排序文件中的url,找出相同url并计数。 #### 二、海量数据处理方法总结 1. **哈希映射**: - 通过哈希函数将大量数据映射到较小的数据集上,减少内存使用。 - 适用于处理大量数据的场景。 2. **...

    十道海量数据处理面试题与十个方法大总结

    五、给定 a、b 两个文件,各存放 50 亿个 url,每个 url 各占 64 字节,内存限制是 4G,让你找出 a、b 文件共同的 url? 解决方案可以使用 Hash 表来统计每个 url 出现的次数,然后找出共同的 url。还可以使用...

    几道大数据面试题.pdf

    给定a、b两个⽂件,各存放50亿个url,每个url各占64字节,内存限制是4G,让你找出a、b⽂件共同的url? 每个url⼤⼩为64bytes,那么可以估计每个⽂件的⼤⼩为5G×64=320G,远远⼤于内存限制的4G,所以不可能将其完全...

    Google, Baidu, Tencent 面试题总结

    **问题实例**:给定两个文件A和B,各存放50亿条URL,每条URL占用64字节,内存限制为4GB,找出这两个文件中的共同URL。对于更多文件的情况,可以使用相同的策略。需要注意的是,根据内存限制和URL的数量,可能会导致...

    阿里巴巴校园招聘历年经典面试题汇总:C++研发 1

    52. **环形公路上加油站问题**:通过计算每个加油站到达下一个加油站的油量差,找出起点。 53. **服务器通信与线程池设定**:线程池管理服务器连接,避免过多线程的开销。 54. **哈希表冲突解决**:开放寻址法、链...

    自整理Java关于基础和框架的面试题

    ### 自整理Java关于基础和框架的面试题 #### 基础知识点 ##### JDK常用的包 - **java.lang**: 包含所有基本类,如`String`、`Math`等。 - **java.util**: 提供集合框架、日期/时间设施、事件模型、杂项实用程序类...

    百度2018校招核心网络研发工程师笔试题(第一批).pdf

    12. 【不可使用本地 IDE】给定 a、b 两个文件,各存放 50 亿个 url,每个 url 各占 64 字节,内存限制是 4G,找出 a、b 文件共同的 url。 知识点:大规模数据处理,Hash 函数的应用,分治策略的思想,hash_set 的...

    Python面试题总结.docx

    线程池可以视为一个容器,用于存放预先创建好的线程。它主要包括以下几个组成部分: - **线程池**:包含一定数量的线程。 - **任务队列**:存放等待执行的任务。 - **控制机制**:负责管理线程的创建、销毁以及任务...

    2012C#最新面试题.pdf

    - **示例:** 如果有一个员工表,每次查询都需要全表扫描,而如果对该表的常用查询字段建立索引,则可以极大提高查询效率。 ### 5. 处理大数据的方法 - **分页查询:** 通过对数据进行分页处理,减少单次查询的...

    2023最新面试合集大厂篇-百度篇

    24. **menset()函数**:不是一个标准C++函数,可能是面试题中的自定义函数,需要具体代码来确定其功能。 25. **计算到达1的最少操作次数**:这是一个典型的位操作问题,可以使用位运算或模拟操作实现。 26. **找出...

    世界500强面试题.pdf

    1.2.5. 在二元树中找出和为某一值的所有路径 .............................................. 22 1.2.6. Top K 算法详细解析---百度面试 ......................................................... 29 1.2.7. ...

    百度笔试题 希望对找工作的人有用

    - 题目6是关于二进制表示的,题目中要求找出所有可能的组合,这涉及到位运算和组合数学。 - 题目7涉及编译器优化,如寄存器分配、循环展开等,这些都是为了提高程序执行效率。 5. 算法与编程技巧 - 题目8是位...

Global site tag (gtag.js) - Google Analytics