说说CompletableFuture和Reactor的区别
关于CompletableFuture和Reactor的问题,你应该这样回答:
“在秦农银行项目中,我们使用CompletableFuture进行并行化处理 - 比如同时计算优惠补贴、获取商户费率、检查黑名单,这些任务之间没有依赖关系,通过thenCombine和allOf实现并行执行,将原本串行的300ms优化到80ms。
而Reactor用于响应式流水线 - 支付交易流程中的连锁操作,比如:验证→风控→记账→通知,通过Flux/Mono的操作符链实现背压控制和异步非阻塞,QPS从原来的2000提升到5000。
线程池方面,CompletableFuture使用自定义的ThreadPoolExecutor,核心线程数根据CPU核数设置,Reactor使用Elastic调度器处理IO密集型任务。”
记住: 面试要具体、有数据、讲清技术选型理由。
SQL优化调优
对账模块的复杂查询
优化措施:
1,索引优化:在trades表的(create_time, merchant_id, channel_id)建立联合索引
2,查询重构:把LEFT JOIN改写成EXISTS,避免全表扫描
3,分页优化:用游标分页代替LIMIT OFFSET,记录最后一条trade_time
4,数据归档:把3个月前的交易数据移到历史表
5,执行计划:用EXPLAIN分析,避免Using filesort和Using temporary
你说在项目里用了策略模式和适配器模式实现多通道对账,具体是怎么设计的?并说明为什么不用工厂模式。
利用Spring的@Autowired Map自动收集所有策略实现,实现多种通道对账,开发只需关注自己具体的对账实现类,更加方便扩展新的对账通道。
工厂模式:违反开闭原则,新增要修改工厂类
策略模式:符合开闭原则,新增只需添加新类
日夜颠倒头发少 ,单纯好骗恋爱脑 ,会背九九乘法表 ,下雨只会往家跑 ,搭讪只会说你好 ---- 2050781802@qq.com