问几个面试中遇到的问题

来源:1-2 面试准备

qq_往事_8

2022-01-30

1.分布式事务相关的

在面试时遇到了一个分布式事务怎么处理的问题,我的回答中包括这种方式
图片描述

然后那个面试官问 如果在进入到catch分支后,JVM挂了 没有把库存补上怎么办。
这种问题应该怎么解决
图片描述

2.商品超卖问题
我回答的第一个方法是加分布式锁,但是分布式锁会出现阻塞,性能不是最佳的,所以我又说了个通过lua保证redis事务,cas的方式保证数据库写操作的安全问题。
然后面试官说假如有100件商品,怎么保证库存扣减没问题,我当时说不清了,面完后想了下 sql这么写可以吗

update table set count = 当前商品数 - 1 where id = xxx and count = 当前商品数;

sql要是不对,能不能教教我写一下

3.通过定时任务处理优惠券达到有效期的问题
我的回答是通过优惠券的截止时间去判断是否过期了,然后将过期的优惠券做一个批量更新。
面试官追问说如果这次过期的优惠券很多比如已经到了几万或者几十万(就是不能直接更新数据库),我怎么更新。
我说将过期的优惠券的信息发送到mq,再通过定时任务开启多个线程去消费并进行更新。

面试官又追问,怎么让定时任务更加高效的执行(避免让线程空跑,最快速做完该任务)
这个我没答上来,我当时问他 他说可以让任务错开执行(我不太理解这句话啥意思,定时任务不就是定时去刷的么,怎么才能做这种控制)

我的回答思路可能有不对的地方,希望老师能来说一下这几个问题的最佳的解决方法,谢谢

写回答

1回答

翔仔

2022-01-31

同学好 第三个问题,我也不知道面试官要表达啥,这里可能上下文不一致我也不太清楚。第一和第二个问题,第一个有一种思路是定时任务定时扫描补单,第二个问题就是咱们的musql乐观锁,对的。

0
0

剑指Java面试-Offer直通车 百度资深面试官授课

招聘季即将到来,让百度资深面试官来为你的高薪Offer保驾护航

8441 学习 · 1872 问题

查看课程