(面试者的项目来自我的数藏项目实战课,更多项目亮点难点(50+),更详细的落地方案和讲解,可以在项目课中和我们一起学)

面试者背景

:::warning 今日**面试者:27届,有一段物联网实习,智能设别接入,文件导入导出,自定义规则校验,数藏项目(订单、交易、用户模块),MQ事务消息,redis预扣减,秒杀压测,对账,分布式技术栈。**

实习了多久?3个多月,

文件导入导出功能介绍下。EasyExcel,同一份文件**/**多份文件中有重复数据了,内存处理,去重怎么去的?

如果数据量很大,乜办法一次性导入内存,如何去重?

文件导入有用多线程吗?单线程读excel,多线程并发写数据库。占内存问题。

EasyExcel****有什么优势?

项目中还有其他的亮点么?规则校验?rediskey过期了,会如何处理?

Redis的内存如果满了,会怎么样?淘汰策略,LRULFU****有啥区别?

AOP****是如何实现切到一个自定义注解的?

数藏项目哪个模块最熟悉。交易模块和订单模块有啥关系和区别?为啥要搞个交易模块?编排了其他模块,用户、库存、订单。交易模块都提供了哪些方法?下单(秒杀**/**普通交易)、

交易和订单模块是不同的微服务,用dubbo通信,注册中心nacos。一个应用要接入dubbo,需要做哪些事情?导入依赖,

如何做订单防重?详情页生成token,并发情况下如何确保token只能用一次?用lua脚本,

Token如何防止伪造?加密。如何防止用户囤一批token刷下单接口?如何实现的一个用户+一个商品只能有一个token**?token的生成,用户id和商品id是前端传的么?**

下单防重还有其他方案么?前端置灰,购物车下单如何做防重?

订单的状态是怎么设计的?initconfirmcanceldiscardpaid。状态机是如何实现的?这样做的好处是什么?

订单号是怎么生成的?业务标识、随机数(雪花算法)、基因法。有没有重复的概率?概率低、

订单表的主键id是怎么生成的?为啥不直接用订单号?

分库分表了解么?单库多表,

项目中用过分布式锁?什么地方用了分布式锁。用户手机号分布锁避免短信重复发送?

分布式锁怎么实现的?redissonlocktryLock你用的哪个?redisson好处?看门狗机制,怎么实现的?还有其他的分布式锁实现方案么?分布式锁和单机锁主要区别是啥?

压测过程有遇到过什么问题么?日志被打满,logback?问题则呢么发现的?CPU占用率,问题怎么解决的?

:::

题目解析

:::color4 文件导入导出功能介绍下。EasyExcel,同一份文件**/**多份文件中有重复数据了,内存处理,去重怎么去的?

如果数据量很大,乜办法一次性导入内存,如何去重?

文件导入有用多线程吗?单线程读excel,多线程并发写数据库。占内存问题。

EasyExcel有什么优势?

:::

✅基于EasyExcel+线程池+批量插入实现百万级数据导入

✅EasyExcel为啥内存占用小?

:::color4 项目中还有其他的亮点么?规则校验?rediskey过期了,会如何处理?

Redis的内存如果满了,会怎么样?淘汰策略,LRU和LFU有啥区别?

:::

✅Redis 的过期策略是怎么样的?

✅Redis的内存淘汰策略是怎么样的?

:::color4 AOP是如何实现切到一个自定义注解的?

:::

✅使用自定义注解+切面减少冗余代码,提升代码的鲁棒性

:::color4 数藏项目哪个模块最熟悉。交易模块和订单模块有啥关系和区别?为啥要搞个交易模块?编排了其他模块,用户、库存、订单。交易模块都提供了哪些方法?下单(秒杀**/**普通交易)、

交易和订单模块是不同的微服务,用dubbo通信,注册中心nacos。一个应用要接入dubbo,需要做哪些事情?导入依赖,

:::

项目实战内容,详见数藏项目实战课

:::color4 如何做订单防重?详情页生成token,并发情况下如何确保token只能用一次?用lua脚本,

Token如何防止伪造?加密。如何防止用户囤一批token刷下单接口?如何实现的一个用户+一个商品只能有一个token**?token的生成,用户id和商品id是前端传的么?**

下单防重还有其他方案么?前端置灰,购物车下单如何做防重?

:::

✅基于Token校验避免订单重复提交

项目实战内容,详见数藏项目实战课

:::color4 订单的状态是怎么设计的?initconfirmcanceldiscardpaid。状态机是如何实现的?这样做的好处是什么?

订单号是怎么生成的?业务标识、随机数(雪花算法)、基因法。有没有重复的概率?概率低、

订单表的主键id是怎么生成的?为啥不直接用订单号?

:::

✅利用雪花算法+Redis 自增 ID,实现唯一订单号生成

:::color4 分库分表了解么?单库多表,

项目中用过分布式锁?什么地方用了分布式锁。用户手机号分布锁避免短信重复发送?

分布式锁怎么实现的?redisson,lock,tryLock你用的哪个?redisson好处?看门狗机制,怎么实现的?还有其他的分布式锁实现方案么?分布式锁和单机锁主要区别是啥?

:::

✅基于Redis的分布式锁,解决短信验证码重复发放等问题

✅Redisson的lock和tryLock有什么区别?

✅Redisson的watchdog机制是怎么样的?

✅锁和分布式锁的核心区别是什么?

:::color4 压测过程有遇到过什么问题么?日志被打满,logback?问题则呢么发现的?CPU占用率,问题怎么解决的?

:::

项目实战内容,详见数藏项目实战课