第七天面试题

7-1 介绍一下你们项目中的优惠券功能
在我们项目中,我们编写特定的微服务来实现优惠券功能,主要流程如下:

1,首先是创建擦创建优惠券,优惠券的使用范围,类型,折扣力度,发放数量,限量数量等都是优惠券的字段参数;

2,然后是发放优惠券,需要设置发放优惠券的方式和发放时间范围,以及使用有效期

3,最后是领取和兑换优惠券,用户直接领取,或通过兑换码领取、可以通过BitMap判断用户是否领取过。

这就是我在项目中的优惠券功能。


7-2 你们项目中是如何防止优惠券超领的 
优惠券超领分为两种情况。分别是多人并发下超过发放数量和单人并发超过每人限领。

首先是多人并发下超过发放数量。查询优惠券;领取数量<总数量;操作数据库领取数量+1 这三个操作是独立的,不具备原子性。

解决:我们使用的是乐观锁,并且基于数据库自带锁的情况,在更新优惠卷领取数量时加上条件领取数量<总数量。

然后是单人并发超过每人限领。判断数据库是否超过预领;修改数据库领取数据+1;像数据库中添加用户领取信息 这三个数据的操作是独立的,不具备原子性。

解决:我们使用的是悲观锁,我们在这里使用的是Synchronized同步代码块,锁用户id,来判断单人是否超领。

以上就是我们止优惠券超领的措施。


7-3 事务失效的场景有哪些
事务失效指的是在数据库事务处理中,事务没有按照预期的方式执行或者没有达到预期的结果。

失效的原因有以下几种:

1.事务方法非public修饰。

2.非事务方法调用事务方法。

3.事务方法的异常被捕获。

4.事务异常类型不对。

5.事务传播行为不对。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值