编雪花算法圆谎

现在想起来还心跳加速!面试时为了显得自己懂分布式,硬吹了个牛,被面试官追问到差点翻车,最后靠临场瞎编居然圆回来了,堪称我秋招最极限的 “圆谎现场”!
当时为了让简历好看点,把之前跟着学长做的项目写成了 “分布式系统”—— 其实就是个简单的 Web 项目,数据存储全靠 MySQL 自增 ID。但我知道分布式系统绕不开分布式 ID,就特意背了雪花算法的八股文,简历上直接写 “采用雪花算法生成分布式 ID,保障数据唯一性”,想着面试时背一背流程,面试官应该不会深究。
结果面试那家公司的技术面,面试官一眼就盯上了这个点。我按准备好的八股文,从时间戳、机器 ID、序列号巴拉巴拉背得贼溜,还暗自庆幸 “这波稳了”。没想到面试官突然打断我:“你们项目的订单量我看简历上写的日均几千,不算很大啊,为什么非要用雪花 ID?用 MySQL 自增 ID 完全够了,还不用处理时钟回拨这些问题。”
我当时人都傻了!大脑瞬间一片空白,脸唰地就憋得通红,手心全是汗 —— 总不能说我是为了简历好看瞎写的吧?情急之下我脱口而出:“这个设计主要是学长定的,我当时负责的是业务逻辑实现,具体为啥选雪花算法,我没细问……” 说完我自己都觉得离谱,心里直呼 “寄了”,这回答跟没说一样,肯定要被看穿了。
没想到面试官没接着追问这个,反而话锋一转:“那我再问你,你们系统有主库和冷备库,冷备库存的是历史数据,如果查询的日期数据跨越了主库和冷备库,怎么处理?” 这问题又把我问懵了,我们项目根本没做冷备库,纯纯是我简历上吹的!
就在面试官盯着我等回答的几秒钟里,我脑子飞速旋转,突然灵机一动,把两个问题绑在一起圆:“其实选雪花算法也和跨库查询有关!我们冷备库存储的是上一次数据迁移前的所有数据,迁移时会记录当时最大的雪花 ID—— 因为雪花 ID 里包含时间戳,查询的时候先根据查询日期判断对应的雪花 ID 范围,就能知道数据在主库还是冷备库。如果跨越了两个库,就分别查询主库和冷备库的数据,最后合并返回,这样效率比全量扫描高很多。”
我说得语速飞快,眼睛都不敢直视面试官,心里祈祷 “千万别拆穿我”。结果面试官听完居然默默点头,还若有所思地说 “哦,这样考虑确实合理”,然后就接着问下一个问题了!我当时心里的石头瞬间落地,后背都被冷汗浸湿了,强装镇定往下答,结束后走出面试间,腿都有点软。
现在回想起来,真的是极限操作!那套说辞完全是我临场瞎编的,连我自己都不知道逻辑通不通,居然真的蒙混过关了。后来拿到 offer 的时候,还特意去补了雪花算法和跨库查询的知识,生怕入职后露馅。只能说面试吹牛皮有风险,下次再也不敢瞎写简历了,就算吹也要提前把逻辑圆好,不然真的会翻车!
#你面试时吹过最大的牛#
全部评论
太强了
点赞 回复 分享
发布于 01-07 17:35 上海

相关推荐

04-20 11:10
已编辑
山西大学 Java
说一下你对面向对象的理解并发和并行的区别创建线程有几种方式 线程池有几种状态说一下什么是反射 说一下什么是动态代理你解释一下MySQL是什么你对MySQL的锁有了解吗展开讲讲你说的锁,算了不用了mybatis和plus都使用过吧,解释一下两者之间的差异在plus中,你进行一个单表查询,应用主键的话,在他的实体类上你需要加什么注解模糊查询使用的是什么关键字,参数是怎么写的XML文件中,你进行多表查询,resultType是什么,返回类型和restMap的区别说一下spring bean的生命周期,分为几个阶段bean管理操作有哪些方式实际开发中分为四个层,这四个层的注解有什么区别,你知道这四个注解么?控制反转有了解吗?IOC,spring中有多少种IOC容器呢?AOP呢了解么?AOP动态代理有几种方式,分别是什么你的项目是高并发的,你和我说一下你的qps大概是多少。你为什么要做分库分表,你做分库分表之后如何实现一个跨库的查询你这是一个购票软件,你是如何解决超卖问题的。你还使用了布隆过滤器,解释一下为什么要使用他。既然你提到了缓存穿透,那么有三种,击穿穿透雪崩有什么区别。你的消息队列用的是rabbitMQ,说一下你为什么要用这个MQ。你如何保证这个消息不丢。你有git的使用习惯。那么克隆的命令是什么,本地提交的命令是什么了解Linux使用命令,那我考察你一下,查看目录用的是哪条命令,切换功能使用的是?查看进程使用的是哪个?实时查看资源使用的是哪个?你基于springAI对接阿里云百联,那么你实现这几个模块是怎么实现的,大概讲解一下
查看23道真题和解析
点赞 评论 收藏
分享
评论
3
1
分享

创作者周榜

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