携程 后端-二面 攒攒人品 望HR面
才面了25min...人生第一次这么短的大厂面试,也不知道什么意思,但是虽然短,但是问的问题都是一些项目的拓展业务场景题,我感觉是非常有价值的!所以做一下记录吧!
- 问题:Redis的持久化
回答:老八股 - 介绍一下你的项目
- 问题:你的项目有支付功能是吧,那你用户迟迟不支付怎么办?
回答:我接入的是支付宝的支付平台,他的机制是:当用户支付成功时,会发起一个异步请求到我传入的一个url,这个url其实就对应着我的一个controller来进行一些支付验证,只有支付验证通过了,我才会去更新订单状态等数据修改。那么,反过来看,用户他一直不扫码支付,其实我的数据也不会发生变化,其实没什么影响。 - 问题:你这么说,你的库存是什么时候改的?
回答:我是购物车提交订单时就会有库存校验+库存减少,然后才去提交订单,刚刚说的支付成功异步修改其实是只修改订单状态。 - 问题:好,那你说说,你这种情况,如果是一个秒杀业务,有的人秒杀到了,但是他就是不支付,会出现什么情况?
回答:那。。就是我库存为0,别人买不了了,但是这群坏人又占着茅坑不拉屎,肯定会带来损失。 - 问题:那你怎么解决?
回答:那我可以通过MySQL或者什么东西把订单ID&商品ID&库存修改量存起来(其实现在回想一下,这不就是我的订单表吗哈哈哈哈),然后我定一个时间,如果一段时间后这些订单还没支付成功,那么我就把这个订单ID对应的商品以及库存修改量给他改回去,这样就可以让大家接着抢了。 - 问题:你这分布式锁什么时候用的?
回答:超卖问题 - 问题:那你会出现争抢锁的情况吗?
回答:我直接把美团面试官给我的关于死锁的分析&解答说了一遍(美团面试官yyds!!!)
(但面试官说:你说是这么说,但是在加锁的时候肯定还是会出现一些问题,也没明说是什么问题,让我下去再测试测试,呜呜呜) - 问题:OK,那你如果现在要你把刚刚你说的恢复库存的功能加到项目里去,你怎么协调你的这个加锁减库存呢?
回答:因为我分布式锁是给购物车里每一个商品都加一把锁的,只有都加成功了,才认为这个购物车安全了,才可以进一步校验库存啥的。既然如此,我刚刚所说的那个恢复库存,其实他也是针对的是单个商品的库存对吧,那我也去使用redis的商品锁机制,这样一来,不就可以实现用户买的时候的减库存和我恢复库存的时候的加库存的一个线程安全问题了。
后面又问了一些学习方法,举例子说说怎么学习啥的一些非技术问题,面试就结束了。
反问:如果通过了本轮面试,后续还会有面试吗?回答是:不知道。
体会:
- 面试果然是一个不断成长的过程,美团面试官对我项目的深挖抛出的一些问题,在后面的蚂蚁面试以及今天的携程面试都起了至关重要的作用!所以面试复盘真的很重要!
- 感觉今天状态特别好,终于可以做到剖析了面试官真正想问的是什么样的一个问题!
面试居然才25min。。。
攒攒人品,望HR面吧!!