【校招VIP】面试问商品超卖到底为什么用乐观锁,不用悲观锁?就挂了

12月21日 收藏 0 评论 0 IT互联网

【校招VIP】面试问商品超卖到底为什么用乐观锁,不用悲观锁?就挂了

在一场面试里,有个同学说商品出现超卖问题用了乐观锁去解决。

我就问,为什么这个地方用乐观锁不用悲观锁?

这个同学直接卡壳了,然后面试自然就挂了。

因为这是他自己在简历上写的功能点,我就按照他写的来面,甚至没有扩展。

其实很多人的简历上都写着这种功能点,但是一提问,不管是985的还是二本的同学基本都答不太对。

关于这个问题,首先要知道什么是乐观锁和悲观锁?

它们一般是在数据库层面,分两步,第一步需要select去查询,第二步进行update。

那在出现所谓的超卖的情况时,也就是用户量比较大的时候,乐观锁是个什么形态?

大家注意,一定不要去背名词。

因为在场景题或者在提问里面,不是问那个考点本身。

而且在场景和产品需求里面,如果不理解你很难以考点的内容来回答。

这里的乐观锁我们不讲分布式的业务,也不讲在代码层级的锁,我们就讲数据库锁。

在发量很大的情况下,乐观锁的性能很差。

比如说有1万个人同时过来访问的话,可以抢10个商品,乐观锁的特点是每轮只能卖一个,其他的9,999全部失败。

然后要重新过来抢,每次抢一个,10个商品要抢10次。

有人说那就用悲观锁。

悲观锁在量级很大的时候,好处是如果有10个库存,能一下被抢完。

但是后面的人会等的比较久一点,他会在等前面都执行完了,再执行到他那块。

你会发现在这个场景下,数据库的乐观锁和悲观锁实际上都满足不了超卖问题的需求的。

不管怎么问,因为不满足,所以最后都会减分。

减分那你还想找到工作吗?

而且这还只是单机,还不是说数据库的集群的方式。

所以大家在简历上写的东西不要给自己挖坑。

特别是这种很大的架构的问题,你是要写上去,大厂一定会追问场景,场景不是你说假如说怎么怎么样就好,必须是要真实合理的。

面试的项目部分一定要体现出你的设计能力和分析能力怎么样,你背个考点是展示不出来的。

简历上写的东西一定要自己真实会,而不是一问就卡壳了。

C 0条回复 评论

帖子还没人回复快来抢沙发