面试官问我“事务隔离级别”,结果我用买可乐的故事拿下了Offer

引言

大家好,我是小米,31岁,爱折腾代码也爱喝咖啡。今天给大家讲一个我社招面试时的“惊魂瞬间”——一个看似简单的Java后端面试题,却差点让我当场“哑火”。

那是去年秋天的一个下午,天气晴到暴晒。我穿着一件白衬衫去面试一家互联网金融公司,想着八成又是常规的Java八股文,最多来点Spring、JVM调优这种“老朋友”话题。没想到,面试官盯着我笑了一下,说:“小米,咱来聊聊事务吧。你先给我说说,事务的隔离级别有哪些?MySQL的默认隔离级别是什么?”

好家伙,这问题看似平平无奇,但要真讲清楚,可就不是两句话能糊弄过去的事。

先来个“事务”的小故事

我说,面试官,这个问题我得先铺垫一下。

假设你和我去超市买饮料,看到货架上最后两瓶可乐。你先把一瓶放进购物车,这时我也拿走另一瓶,然后我们都去结账。这个场景里,如果用数据库来模拟,就相当于我们同时对同一份库存数据做操作。

如果没有事务隔离,可能发生的事有:

你买单时发现库存为0,生气地瞪了我一眼(脏读
你刚看到库存还有1瓶,下一秒我买走了,结账时却告诉你没货了(不可重复读
你明明刚查到有库存1瓶,但还没下单,库存居然变成2了(幻读

于是,数据库为了防止我们在超市“打架”,就搞出了事务隔离机制,来保证数据的安全性和一致性。

事务的四个隔离级别</

© 版权声明
THE END
如果内容对您有所帮助,就支持一下吧!
点赞0 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容