阿里中台二面面经
1.自我介绍
2.面试官开始介绍部门做的业务
3.聊一下自己做的项目
4.UV统计怎么做的?为什么要这么实现呢?
用HyperLogLog为什么不会占用很大空间
呢?16KB怎么去存储这个数据呢
5.好友关注怎么做的
6.项目的哪个点是有挑战性的
7.秒杀为什么要用消息队列
8.Redis挂了怎么办,整个集群挂了就不行了对吧?
9.但你的库存信息都是在 Redis里面,对吧?就是限流,你取不到库存了吗
10.你怎么保证那个 Redis 里面库存和 DB 里面的库存它是一致的,没有可能出错?
11.你那个 Redis 你去做扣减库存怎么保障它的原子性呢?
12.不用lua脚本会带来什么样的问题?
13.扣减库存的原子性是为了解决什么样的问题
14.假设这个地方我们不用 lua脚本,对吧?就用最普通的方案会带来什么样的问题?
15.乐观锁怎么解决超卖的问题
16.你能那个详细的描述一下lua脚本里面是用了什么样的Redis的命令?
17.你lua脚本就是怎么写的?就是你肯定是用了Redis的命令,对吧?
18.比如说你扣了库存,我们肯定是要做支付,对吧?那库存和支付的顺序是怎么样?先支付再扣,或者先扣库存再支付,这个过程你来讲一下吧。
19.创建订单,然后假设支付失败了呢。
20.那怎么去把数据写到 Redis 里面呢?你这个时候你 Redis里面库存也得回加,对吧?这里就可以会涉及到一个你DB的库存跟 Redis的库存的一致性的问题,怎么去保障它们一致性?
21.因为消息丢失导致的这个消息消费失败导致的库存不一致,怎么发现这个问题
22.重新发消息的时候会不会导致那个库存的操作重复?
23.通过订单号去做幂等是吗。
24.那假设那个用户量进一步的变大,就可能你一步的去消费MO的消息的时候,DB的压力还是会比较大,还是会消化不完,这个时候我们应该怎么去优化呢?
查看3道真题和解析