为什么每次面试都会遇到奇怪的问题

上一次是面试官说了一句b+树高怎么会和磁盘 I/O次数有关?当时我还以为我记错了,后面下来查发现不都说有关吗

这次是面试官问:布隆过滤器为什么能解决穿透的问题
答:根据布隆过滤器快速判断是否存在,如果不在的话就快速进行返回,就不访问数据库了。如果在的话就再去数据库中查询

问:不在的插到布隆过滤器?还是在的插到布隆过滤器?
答:在的插到

问:不在的话,一直查询这个key,然后他一直不在,然后他一直要查询数据库,不就击穿了吗?
我:???
答:但是查的是布隆过滤器啊

又问了一遍
答:不在的就直接被过滤掉了。过滤器不是就判断contains嘛,它是否存在,不存在就直接返回

面试官理了一遍又问:key第一次查,布隆过滤器不在,不在这个时候我需要去查数据库,然后为了解决击穿问题现在不让我查了,是不是存在这个问题?(复盘发现怎么面试官说的是为了解决击穿问题)
我:???
回答:数据库里已经有的数据我们会预先将它加到布隆过滤器当中。

面试官说这样需要离线把数据库里所有dump一份,肯定是不友好的操作,比如说一百亿条数据所有的ID全部放到布隆过滤器里面吗?
然后我就不知道怎么回答了。。

我对布隆过滤器的理解就是预热数据到布隆过滤器,用户请求先查布隆过滤器不存在:直接返回,不查缓存/数据库;可能存在:查缓存,缓存未命中再查数据库。
我实在是没理解为什么面试官一直问key不存在才查数据库,然后质疑预先加载数据。
现在是一头雾水,是我对布隆过滤器的理解和使用有问题吗,求各位大佬指教。
全部评论
感觉面试官一开始理解的像是渐进式构建布隆过滤器,查一条就写一条,所以他觉得不能解决穿透;但后来说了是预构建会先扫全量数据建立bloom filter,所以就顺着问数据量大的情况下怎么预构建,感觉可以答分布式bloom?
1 回复 分享
发布于 09-05 12:48 浙江
我去友友跟我一样被这样问的 难道是一个面试官吗
点赞 回复 分享
发布于 09-07 13:46 上海
换个角度,每次面试都能提升自己,提高自己的面试能力
点赞 回复 分享
发布于 09-06 23:33 安徽

相关推荐

评论
点赞
3
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务