主题
面试速答(先看这里)
**一句话结论:**今日 面试者: 27 届,有一段物联网实习,智能设别接入,文件导入导出,自定义规则校验,数藏项目(订单、交易、用户模块), MQ 事务消息, redis 预扣减,秒杀压测,对账,分布式技术栈。
60秒标准回答:
今日 面试者: 27 届,有一段物联网实习,智能设别接入,文件导入导出,自定义规则校验,数藏项目(订单、交易、用户模块), MQ 事务消息, redis 预扣减,秒杀压测,对账,分布式技术栈
实习了多久? 3 个多月
文件导入导出功能介绍下。 EasyExcel ,同一份文件 / 多份文件中有重复数据了,内存处理,去重怎么去的?
**答题顺序:**结论 → 原理/机制 → 关键流程 → 场景与取舍 → 易错点
回答主线:
- **要点1:**如果数据量很大,乜办法一次性导入内存,如何去重?
- **要点2:**项目中还有其他的亮点么?
- **要点3:**Redis 的内存如果满了,会怎么样?
- **要点4:**数藏项目哪个模块最熟悉。
- **要点5:**数藏项目哪个模块最熟悉。
**记忆锚点:**token → EasyExcel → redisson → redis → dubbo → id
易错提醒:
- 用户手机号分布锁避免短信重复发送?
加分表达:
- 如果数据量很大,乜办法一次性导入内存,如何去重?
- Redis 的内存如果满了,会怎么样?
追问准备:
- EasyExcel ,同一份文件 / 多份文件中有重复数据了,内存处理,去重怎么去的?
- 如果数据量很大,乜办法一次性导入内存,如何去重?
- 文件导入有用多线程吗?
- EasyExcel 有什么优势?
(面试者的项目来自我的数藏项目实战课,更多项目亮点难点(50+),更详细的落地方案和讲解,可以在项目课中和我们一起学)
面试者背景
> 今日****面试者:27届,有一段物联网实习,智能设别接入,文件导入导出,自定义规则校验,数藏项目(订单、交易、用户模块),MQ事务消息,redis预扣减,秒杀压测,对账,分布式技术栈。 > > 实习了多久?3个多月, > > 文件导入导出功能介绍下。EasyExcel,同一份文件**/多份文件中有重复数据了,内存处理,去重怎么去的? > > 如果数据量很大,乜办法一次性导入内存,如何去重? > > **文件导入有用多线程吗?单线程读excel**,多线程并发写数据库。占内存问题。** > > EasyExcel****有什么优势? > > 项目中还有其他的亮点么?规则校验?redis的key过期了,会如何处理? > > Redis的内存如果满了,会怎么样?淘汰策略,LRU和LFU****有啥区别? > > AOP****是如何实现切到一个自定义注解的? > > 数藏项目哪个模块最熟悉。交易模块和订单模块有啥关系和区别?为啥要搞个交易模块?编排了其他模块,用户、库存、订单。交易模块都提供了哪些方法?下单(秒杀**/普通交易)、 > > **交易和订单模块是不同的微服务,用dubbo通信,注册中心nacos**。一个应用要接入dubbo,需要做哪些事情?导入依赖,** > > 如何做订单防重?详情页生成token,并发情况下如何确保token只能用一次?用lua脚本, > > Token如何防止伪造?加密。如何防止用户囤一批token刷下单接口?如何实现的一个用户+一个商品只能有一个token**?token的生成,用户id和商品id是前端传的么?** > > 下单防重还有其他方案么?前端置灰,购物车下单如何做防重? > > 订单的状态是怎么设计的?init、confirm、cancel、discard、paid。状态机是如何实现的?这样做的好处是什么? > > 订单号是怎么生成的?业务标识、随机数(雪花算法)、基因法。有没有重复的概率?概率低、 > > 订单表的主键id是怎么生成的?为啥不直接用订单号? > > 分库分表了解么?单库多表, > > 项目中用过分布式锁?什么地方用了分布式锁。用户手机号分布锁避免短信重复发送? > > 分布式锁怎么实现的?redisson,lock,tryLock你用的哪个?redisson好处?看门狗机制,怎么实现的?还有其他的分布式锁实现方案么?分布式锁和单机锁主要区别是啥? > > 压测过程有遇到过什么问题么?日志被打满,logback?问题则呢么发现的?CPU占用率,问题怎么解决的?
题目解析
> 文件导入导出功能介绍下。EasyExcel,同一份文件**/多份文件中有重复数据了,内存处理,去重怎么去的? > > 如果数据量很大,乜办法一次性导入内存,如何去重? > > **文件导入有用多线程吗?单线程读excel**,多线程并发写数据库。占内存问题。** > > EasyExcel有什么优势?
📄 ✅基于EasyExcel+线程池+批量插入实现百万级数据导入
打开文档:✅基于EasyExcel+线程池+批量插入实现百万级数据导入
> 项目中还有其他的亮点么?规则校验?redis的key过期了,会如何处理? > > Redis的内存如果满了,会怎么样?淘汰策略,LRU和LFU有啥区别?
> AOP是如何实现切到一个自定义注解的?
打开文档:✅使用自定义注解+切面减少冗余代码,提升代码的鲁棒性
> 数藏项目哪个模块最熟悉。交易模块和订单模块有啥关系和区别?为啥要搞个交易模块?编排了其他模块,用户、库存、订单。交易模块都提供了哪些方法?下单(秒杀**/**普通交易)、 > > 交易和订单模块是不同的微服务,用dubbo通信,注册中心nacos。一个应用要接入dubbo,需要做哪些事情?导入依赖,
项目实战内容,详见数藏项目实战课
> 如何做订单防重?详情页生成token,并发情况下如何确保token只能用一次?用lua脚本, > > Token如何防止伪造?加密。如何防止用户囤一批token刷下单接口?如何实现的一个用户+一个商品只能有一个token**?token的生成,用户id和商品id是前端传的么?** > > 下单防重还有其他方案么?前端置灰,购物车下单如何做防重?
项目实战内容,详见数藏项目实战课
> 订单的状态是怎么设计的?init、confirm、cancel、discard、paid。状态机是如何实现的?这样做的好处是什么? > > 订单号是怎么生成的?业务标识、随机数(雪花算法)、基因法。有没有重复的概率?概率低、 > > 订单表的主键id是怎么生成的?为啥不直接用订单号?
📄 ✅利用雪花算法+Redis 自增 ID,实现唯一订单号生成
打开文档:✅利用雪花算法+Redis 自增 ID,实现唯一订单号生成
> 分库分表了解么?单库多表, > > 项目中用过分布式锁?什么地方用了分布式锁。用户手机号分布锁避免短信重复发送? > > 分布式锁怎么实现的?redisson,lock,tryLock你用的哪个?redisson好处?看门狗机制,怎么实现的?还有其他的分布式锁实现方案么?分布式锁和单机锁主要区别是啥?
📄 ✅基于Redis的分布式锁,解决短信验证码重复发放等问题
打开文档:✅基于Redis的分布式锁,解决短信验证码重复发放等问题
📄 ✅Redisson的lock和tryLock有什么区别?
打开文档:✅Redisson的lock和tryLock有什么区别?
打开文档:✅Redisson的watchdog机制是怎么样的?
> 压测过程有遇到过什么问题么?日志被打满,logback?问题则呢么发现的?CPU占用率,问题怎么解决的?
项目实战内容,详见数藏项目实战课