Skip to content

面试速答(先看这里)

**一句话结论:**今日 面试者: 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+线程池+批量插入实现百万级数据导入

📄 ✅EasyExcel为啥内存占用小?

打开文档:✅EasyExcel为啥内存占用小?

> 项目中还有其他的亮点么?规则校验?redis的key过期了,会如何处理? > > Redis的内存如果满了,会怎么样?淘汰策略,LRU和LFU有啥区别?

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

打开文档:✅Redis 的过期策略是怎么样的?

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

打开文档:✅Redis的内存淘汰策略是怎么样的?

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

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

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

> 数藏项目哪个模块最熟悉。交易模块和订单模块有啥关系和区别?为啥要搞个交易模块?编排了其他模块,用户、库存、订单。交易模块都提供了哪些方法?下单(秒杀**/**普通交易)、 > > 交易和订单模块是不同的微服务,用dubbo通信,注册中心nacos。一个应用要接入dubbo,需要做哪些事情?导入依赖,

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

> 如何做订单防重?详情页生成token,并发情况下如何确保token只能用一次?用lua脚本, > > Token如何防止伪造?加密。如何防止用户囤一批token刷下单接口?如何实现的一个用户+一个商品只能有一个token**?token的生成,用户id和商品id是前端传的么?** > > 下单防重还有其他方案么?前端置灰,购物车下单如何做防重?

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

打开文档:✅基于Token校验避免订单重复提交

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

> 订单的状态是怎么设计的?init、confirm、cancel、discard、paid。状态机是如何实现的?这样做的好处是什么? > > 订单号是怎么生成的?业务标识、随机数(雪花算法)、基因法。有没有重复的概率?概率低、 > > 订单表的主键id是怎么生成的?为啥不直接用订单号?

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

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

> 分库分表了解么?单库多表, > > 项目中用过分布式锁?什么地方用了分布式锁。用户手机号分布锁避免短信重复发送? > > 分布式锁怎么实现的?redisson,lock,tryLock你用的哪个?redisson好处?看门狗机制,怎么实现的?还有其他的分布式锁实现方案么?分布式锁和单机锁主要区别是啥?

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

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

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

打开文档:✅Redisson的lock和tryLock有什么区别?

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

打开文档:✅Redisson的watchdog机制是怎么样的?

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

打开文档:✅锁和分布式锁的核心区别是什么?

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

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