为什么每次面试都会遇到奇怪的问题
上一次是面试官说了一句b+树高怎么会和磁盘 I/O次数有关?当时我还以为我记错了,后面下来查发现不都说有关吗
这次是面试官问:布隆过滤器为什么能解决穿透的问题
答:根据布隆过滤器快速判断是否存在,如果不在的话就快速进行返回,就不访问数据库了。如果在的话就再去数据库中查询
问:不在的插到布隆过滤器?还是在的插到布隆过滤器?
答:在的插到
问:不在的话,一直查询这个key,然后他一直不在,然后他一直要查询数据库,不就击穿了吗?
我:???
答:但是查的是布隆过滤器啊
又问了一遍
答:不在的就直接被过滤掉了。过滤器不是就判断contains嘛,它是否存在,不存在就直接返回
面试官理了一遍又问:key第一次查,布隆过滤器不在,不在这个时候我需要去查数据库,然后为了解决击穿问题现在不让我查了,是不是存在这个问题?(复盘发现怎么面试官说的是为了解决击穿问题)
我:???
回答:数据库里已经有的数据我们会预先将它加到布隆过滤器当中。
面试官说这样需要离线把数据库里所有dump一份,肯定是不友好的操作,比如说一百亿条数据所有的ID全部放到布隆过滤器里面吗?
然后我就不知道怎么回答了。。
我对布隆过滤器的理解就是预热数据到布隆过滤器,用户请求先查布隆过滤器不存在:直接返回,不查缓存/数据库;可能存在:查缓存,缓存未命中再查数据库。
我实在是没理解为什么面试官一直问key不存在才查数据库,然后质疑预先加载数据。
现在是一头雾水,是我对布隆过滤器的理解和使用有问题吗,求各位大佬指教。
这次是面试官问:布隆过滤器为什么能解决穿透的问题
答:根据布隆过滤器快速判断是否存在,如果不在的话就快速进行返回,就不访问数据库了。如果在的话就再去数据库中查询
问:不在的插到布隆过滤器?还是在的插到布隆过滤器?
答:在的插到
问:不在的话,一直查询这个key,然后他一直不在,然后他一直要查询数据库,不就击穿了吗?
我:???
答:但是查的是布隆过滤器啊
又问了一遍
答:不在的就直接被过滤掉了。过滤器不是就判断contains嘛,它是否存在,不存在就直接返回
面试官理了一遍又问:key第一次查,布隆过滤器不在,不在这个时候我需要去查数据库,然后为了解决击穿问题现在不让我查了,是不是存在这个问题?(复盘发现怎么面试官说的是为了解决击穿问题)
我:???
回答:数据库里已经有的数据我们会预先将它加到布隆过滤器当中。
面试官说这样需要离线把数据库里所有dump一份,肯定是不友好的操作,比如说一百亿条数据所有的ID全部放到布隆过滤器里面吗?
然后我就不知道怎么回答了。。
我对布隆过滤器的理解就是预热数据到布隆过滤器,用户请求先查布隆过滤器不存在:直接返回,不查缓存/数据库;可能存在:查缓存,缓存未命中再查数据库。
我实在是没理解为什么面试官一直问key不存在才查数据库,然后质疑预先加载数据。
现在是一头雾水,是我对布隆过滤器的理解和使用有问题吗,求各位大佬指教。
全部评论
感觉面试官一开始理解的像是渐进式构建布隆过滤器,查一条就写一条,所以他觉得不能解决穿透;但后来说了是预构建会先扫全量数据建立bloom filter,所以就顺着问数据量大的情况下怎么预构建,感觉可以答分布式bloom?
相关推荐
点赞 评论 收藏
分享

点赞 评论 收藏
分享