`
nkliuliu
  • 浏览: 210099 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

布隆过滤器的面试应用

阅读更多

     如何从存放在A和B中的一亿条URL中找出A中有而B中没有的URL?

 

 

      布隆过滤器应该以一种比较好的解决方案,而且只用比较一次,查找效率很高。从存储空间上来讲,如果用哈希表,假定网址的平均长度为一百个字符,那么1一亿 个url大概需要20g存储空间。哈希表的存储效率一般只有 50%,所以实际存储空间大概需要40g。布隆过滤器只需要哈希表 1/8 到 1/4 的大小就能解决同样的问题。也就是需要大概10g以下的空间,也是比较理想的。当然也有麻烦的地方就是有可能不是100%准确。

 

分享到:
评论
4 楼 nkliuliu 2011-03-16  
grunt1223 写道
校长说的对,bloomfilter的精髓应该是“用位来表示是否存在,用多个hash函数来降低false positive”

所谓八分之一只是某个特例:
hash map:存放8byte的信息签名
bloomfilter:采用8个哈希函数,刚好1byte

所以是8:1

你说的没错。我是没有具体说明前提条件。
3 楼 grunt1223 2011-01-22  
校长说的对,bloomfilter的精髓应该是“用位来表示是否存在,用多个hash函数来降低false positive”

所谓八分之一只是某个特例:
hash map:存放8byte的信息签名
bloomfilter:采用8个哈希函数,刚好1byte

所以是8:1
2 楼 nkliuliu 2010-12-31  
sdh5724 写道
说明你还是没有理解, 应该不是1/8 1/4吧, 你可以用byte位来表示占用的。

http://www.google.com.hk/ggblog/googlechinablog/2007/07/bloom-filter_7469.html,你看看这个文章吧。应该我的理解没有问题,如果你看完了,还是觉的我的理解有问题,请详细赐教一下。
1 楼 sdh5724 2010-12-31  
说明你还是没有理解, 应该不是1/8 1/4吧, 你可以用byte位来表示占用的。

相关推荐

    19年录制Redis实战教程 高可用秒杀分布式锁布隆过滤器实战 SpringBoot教程整合

    本教程结合SpringBoot,深入探讨了Redis在实际开发中的应用,特别关注了高可用性、秒杀系统、分布式锁和布隆过滤器等关键知识点。 1. **Redis高可用性** - Redis Sentinel:监控、警告和自动故障转移,通过哨兵...

    十道海量数据处理面试题(卷).doc

    类似于第6题,可以构建布隆过滤器,但考虑到误判率要求更低,可能需要更大空间的布隆过滤器或者采用其他数据结构。 9. 统计最频繁出现的前 10 个词: 使用 MapReduce,Map 阶段计算词频,Reduce 阶段利用最小堆...

    考试类精品--一道面试题的思考 - 6000万数据包和300万数据包在50M内存使用环境中求交集.zip

    一种常见的方法是使用布隆过滤器(Bloom Filter)或最小堆(Min Heap)配合外部排序(External Sorting)。 1. **布隆过滤器**:这是一种空间效率极高的概率型数据结构,用于判断一个元素是否可能在一个集合中。它...

    高云波-面试宝典(1).docx

    - 布隆过滤器利用一个很长的二进制向量和多个哈希函数来判断元素是否存在,常用于缓存穿透问题的解决、垃圾邮件过滤、URL去重等场景。降低误报率的关键在于合理选择哈希函数的数量和过滤器的大小。 4. Bitmap...

    数据结构面试大全 面试 算法

    8. **查找算法**:二分查找、二叉搜索树查找、布隆过滤器等,都是面试中常见的问题。 9. **动态规划**:是一种解决问题的方法,通过建立状态转移方程来避免重复计算,常用于解决最优化问题。面试中可能会要求用动态...

    java面试逻辑题

    例如,如何处理大量数据的存储和检索,可以考虑使用哈希表、B树或者布隆过滤器。 5. **设计模式**:理解并能应用常见的设计模式,如单例模式、工厂模式、观察者模式等,是展示你具备良好软件设计能力的重要方式。...

    架构面试专题汇总.zip

    你需要理解缓存的基本原理,比如缓存穿透、缓存雪崩和缓存击穿等问题,以及如何通过设置合理的过期策略和使用布隆过滤器来避免这些问题。 微服务架构是现代软件开发的趋势,它提倡将大型系统拆分为小而独立的服务,...

    程序员面试金典(第5版) 阅读计划—猫冬2

    15. **扩展性与存储限制**:讨论如何解决大规模数据问题,如布隆过滤器的应用。 16. **排序与查找**:涵盖各种排序和查找算法,及其优化。 这本书还提供了在线资源,如牛客网的配套练习,以及知乎上的相关讨论,...

    python刷题day6.2.rar

    在这个压缩包中,我们找到了五个视频资源,分别涉及到斐波那契数列、布隆过滤器、课程重点回顾、面试技巧以及LRU Cache缓存机制的设计与实现。以下是这些知识点的详细说明: 1. **斐波那契数列**:斐波那契数列是...

    Redis面试题深度解析:技术要点与实战应用.zip

    - 缓存策略:掌握缓存穿透、缓存雪崩和缓存击穿的解决方案,如布隆过滤器、预热策略等。 3. Redis高级特性: - Pub/Sub:发布订阅模式用于实时消息传递,适用于消息通知和异步任务。 - Lua脚本:通过内嵌的Lua...

    数据处理面试题

    3. 布隆过滤器(Bloomfilter)和位图(Bitmap):使用位操作来高效地处理和检查大数据集中的元素。 4. 前缀树(Trie Tree)和倒排索引(Inverted Index):将数据转换为特定的树形结构或者索引结构,以优化搜索和...

    Java面试之Redis的雪崩和穿透1

    1. 布隆过滤器:使用布隆过滤器来预判Key是否存在,减少不必要的数据库查询。 2. 缓存空值:即使Key在数据库中不存在,也可以将其设置为一个特殊的值(如空值)缓存在Redis中,避免反复查询数据库。 在实际应用中,...

    分布式基础面试题1

    布隆过滤器是一种空间高效的去重工具,通过多个哈希函数减少误判率,但无法删除数据。它适用于海量数据的过滤和去重场景。 Redis的热点数据问题可能由访问量大的热key或大value引起,可能导致数据倾斜、服务器负载...

    一个未排序的整数数组,请找出其中没有出现的最小的正整数。

    总结来说,解决这个问题的关键在于选择合适的数据结构和算法,如哈希表或布隆过滤器,以及理解如何在特定上下文(如PLC和SCL环境)中应用这些技术。同时,分析提供的文件名可以帮助我们了解可能的数据来源,但具体...

    redis之相关理解分析以及面试问题总结

    解决方法包括设置合理的过期时间,使用布隆过滤器减少查询,或结合缓存更新策略。 - Redis的穿透问题及解决方案:查询一个不存在的键可能导致数据库被频繁访问。可以使用布隆过滤器来预先判断键是否存在,降低...

    海量数据面试题整理txt

    - **布隆过滤器**:可以使用布隆过滤器来快速判断一个元素是否已经存在于集合中,虽然它有一定的误判率。 - **Trie树与哈希表**:对于较小的数据集,Trie树和哈希表都是较好的选择,它们能够提供高效的存储和查询...

    程序员面试2023,集结了阿里、腾讯、京东、美团一线大厂面试实战

    12. **缓存问题及解决方案**:缓存穿透、缓存击穿和缓存雪崩分别对应无数据请求、热点数据过期和大量并发请求导致缓存失效,可以通过布隆过滤器、热点数据预加载和限流策略等解决。 13. **LRU(Least Recently Used...

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

    通过上述几个问题的解决过程可以看出,在处理大规模数据集时,采用分而治之的方法、合理的数据结构选择(如哈希表、Trie树、布隆过滤器等)、以及分布式计算框架的应用都是关键策略。此外,还需要充分考虑内存限制和...

    百度公司2010招聘技术一面面试题

    - 两亿条整数记录找重复数据,可以使用布隆过滤器或基于磁盘的排序算法如外部排序。 - 数组转平衡二叉树,可以使用自底向上的方法,先将数组排序,然后逐层构建平衡二叉搜索树。 以上是面试中可能涉及的知识点,...

Global site tag (gtag.js) - Google Analytics