给自己复盘用的tjxt笔记day12第二部分

面试问题

1.你们的优惠券规则是如何编码实现的?

答:我们的优惠规则是基于策略模式 来定义的。在初期做调研的时候也考虑过规则引擎 ,不过考虑到我们的优惠规则并不复杂,而且规则引擎太重,增加了学习和维护成本,最终选择了基于策略模式来自定义规则。

2.你在项目中有没有使用到设计模式?

答:当然用到过,比如在优惠券功能中就使用了策略模式来定义优惠规则。还有我实现的基于注解的通用分布式锁组件 ,也使用到了策略模式 、工厂模式

3.你在项目中有没有使用到线程池或者并发编程?

答:当然,项目中很多地方都有用到。比如在实现优惠券的推荐算法时,我们采用的是排列组合多种优惠方案 ,然后分别计算 ,最终筛选出最优解的思路。

由于需要计算的优惠方案可能较多,为了提高计算效率,我们利用了CompletableFuture 来实现多方案的并行计算。并且由于要筛选最优解,那就需要等待所有方案都计算完毕,再来筛选。因此就使用了CountdownLatch来做多线程的并行控制。

4.那你能不能聊一聊CountdownLatch的基本原理?

略,参考面试宝典

5.使用优惠券的订单可能包含多个商品,如果出现部分商品退款的情况,你们如何处理退款金额?优惠券是如何处理的?

答:这里处理的方案有很多种,可以选择退券或不退券 。不过基于产品的需求,我们采用的是不退券的方案。

具体来说,就是在一开始下单时,就会根据优惠券本身的使用范围,筛选出订单中可以参与优惠的商品,然后计算出每一个被优惠的商品具体的优惠金额分成,以及对应的实付金额。

而在退款的时候,如果用户选择只退部分商品,我们就可以根据每个商品的实付金额来退款,实现订单拆分退款。同时也满足退款不退券的原则。

当然,如果订单未支付,直接取消或者超时关闭,是可以退还优惠券的。

相关推荐
旖旎夜光33 分钟前
【C++ 基础入门】C++多态(下):单/多继承虚表、多态补充与 21 道高频题
开发语言·c++·笔记·学习
天天被压力42 分钟前
【A股分钟级高频数据完全手册 #11】券商实时行情数据接口:实时交易(券商源)接入与字段
java·人工智能·python
天天被压力1 小时前
【A股分钟级高频数据完全手册 #12】股票五档盘口数据接口:买卖五档实时盘口解析
java·人工智能·python
叼烟扛炮6 小时前
[LangChain] 学习笔记(07):大模型长出手脚——工具(Tools)定义与调用闭环
笔记·学习·langchain
Wang's Blog10 小时前
Java 项目实战: 交友项目 - FastDFS:入门案例
java·开发语言·交友
叼烟扛炮10 小时前
[LangChain] 学习笔记(06):突破大模型限制——结构化输出(Structured Output)
windows·笔记·学习·langchain
apcipot_rain11 小时前
C++转Java日记(03)
java·开发语言·c++
皮皮林55111 小时前
Java实现微信扫码登录
java
且从容.11 小时前
VUE3学习笔记(根据黑马教程总结)
笔记·学习
蒸蒸yyyyzwd13 小时前
关于 AI 开发相关的一些面经。
笔记·学习