给你一组20亿个手机号,如何判断某个手机号是否在这组数中?

面试题简述

手上有20亿个手机号,现在需要支持高频查询:给定一个手机号,快速判断它是否在集合中。请设计方案。

考虑内存、查询速度、误判率、可扩展性,给出具体数据结构、内存估算、以及如何做到分布式处理。

面试官想听的

1、是否掌握大规模集合存在性检测常用方法。

2、是否能做内存、精读、延迟之间的权衡。

3、是否能给出可落地的方案。

面试示例回答

给20亿个手机号,我们先明确目标:是否允许少量误判?是否允许误报但不能漏报?查询QPS环境如何?

常用可选方案有三种主流路径:布隆过滤器 + 后备精确存储、磁盘索引、可压缩位图/哈希分桶。下面我说明下我设计的方案:

1、首先方案:Blloom Filter + 精确回查

2、Cuckoo Filter 或者 Quotient Filter

3、磁盘索引方案

4、可压缩位图方案

详细内容可跳转该链接查看详情:http://xhslink.com/o/6RwedX7ayDx

由浅入深分析

1、初级:知道 Bloom Filter 概念,即:以空间换时间且有一定的误报率。

2、中级:能做内存估算并解释误报率与位数关系;

3、高级:能简单说明不用方案的应用场景。

面试加分点

1、给出具体的内存估算(像上面24GB的数字),并说明如何分片部署。

2、说明两阶段查验流程和为什么这样能降低IO。

3、提出删除/更新场景的替代方案(Cuckoo、周期重建、增量日志)。

4、提到监控指标(布隆命中率、后端回查QPS、误判率)和如何自动调整(动态调整误判率)。

#大厂##面试##面经##春招##实习#
2025场景题复盘 文章被收录于专栏

带你复盘2025年大厂场景题面试,拆解面试官到底想听啥

全部评论

相关推荐

真顶不住了兄弟们…11 月底了,秋招投了仨月,还是 0offer,纯纯陪跑选手。从 8 月底就开始瞎忙活,前俩月还会为了面试挂掉崩溃到睡不着,现在心里早就没波澜了,跟一潭死水似的。不知道从啥时候起,也不焦虑了,就剩摆烂和逃避现实 —— 简历不想改,面试题不想刷,连打开招聘软件的劲儿都没了。中间撑着我往下走的,其实是那点自我安慰:每次收到面试邀约,都告诉自己 “挂了也没事,就当练手”,好歹能趁着准备的功夫捋捋项目逻辑,优化下面试话术,只要有进步,总能撞上一个机会。说实话也确实有点变化,从一开始一面就凉,到后来能冲进二面、三面,我还以为事情在往好的方向走… 结果后面零星几个面试,又是一面挂、二面挂,无限循环。原来我以为的 “进步”,根本就是自我感动的幻觉,说白了就是原地踏步。我到底收获啥了?面试还是那么拉胯,花了无数时间准备材料、练话术、做 PPT,到最后连展示的机会都没有,每次都是不明不白被拒,纯属瞎忙活。现在彻底没面试邀约了,希望没了,动力也泄了,只剩下迷茫、麻木,还有点面试 PTSD—— 一想到要面试就犯怵。我承认自己可能不够努力,但每次有机会的时候,我是真的拼尽全力去准备了啊。我还想再挣扎一下,还不想就这么放弃,但现在是真的没头绪了… 到底还能做点啥,才能把这秋招的烂摊子盘活啊?
星开祈灵:我十一后才开始秋招呢,一样0offer,大不了秋招补录,春招,实习,再不济社招,冲就完了
十一月总结
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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