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

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

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

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

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

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

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

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

我对布隆过滤器的理解就是预热数据到布隆过滤器,用户请求先查布隆过滤器不存在:直接返回,不查缓存/数据库;可能存在:查缓存,缓存未命中再查数据库。
我实在是没理解为什么面试官一直问key不存在才查数据库,然后质疑预先加载数据。
现在是一头雾水,是我对布隆过滤器的理解和使用有问题吗,求各位大佬指教。
全部评论
感觉面试官一开始理解的像是渐进式构建布隆过滤器,查一条就写一条,所以他觉得不能解决穿透;但后来说了是预构建会先扫全量数据建立bloom filter,所以就顺着问数据量大的情况下怎么预构建,感觉可以答分布式bloom?
点赞 回复 分享
发布于 昨天 12:48 浙江

相关推荐

昨天 12:08
已编辑
四平职业大学 Java
应该是三面, 百度的流程真的让人困惑。官网上的流程,岗位完全不匹配, 我都不知道为什么官网上是这个岗,我都没投过。 同时, 在官网上也看不到部门信息。岗位A 面了两轮,然后百度另一个部门B 打电话约面(但是技术栈不太匹配,拒绝了)。至此,我以为岗位A已经G了, 另一个部门才会来约面。最近,又收到了面试邮件,我就接了,面完感觉应该是岗位A 的三面。岗位A:系统部-T联合岗位B:金融产品部-T联合【面试问题】1. 你现在从代码编程语言上最擅长的代码语言是什么?2. Python、Shell 和 Go 目前的开发状态是一个什么状态?3. 用 Shell 和 Python 写自动化脚本多吗?4. 你现在整个代码开发量达到什么数量级?5. 本科和硕士期间有获得过专利或论文吗?具体是什么论文?项目相关16. 是否思考过xx架构在未来的生态?17. 是否了解上层应用到底层硬件之间移植适配需做哪些变更?20. 对 Linux 内核中的内存虚拟化、存储虚拟化、网络中断虚拟化了解多少?21. 对容器资源分配与调度有了解吗?是否遇到过业务间 CPU 抢占导致延迟的问题?22. CPU、网卡、存储 IO 性能优化?23. 未来想从事什么技术方向?24. 目前手里有 offer 吗?
查看12道真题和解析
点赞 评论 收藏
分享
评论
点赞
2
分享

创作者周榜

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