Skip to content

面试速答(先看这里)

**一句话结论:**今日面试者: 6 年经验, 211 本, spring 技术栈, redis , sql 调优,数据迁移, rocketmq ,服务重构微服务, 2 手平台,卖家业务,结算,售后,大商家,

60秒标准回答:

今日面试者: 6 年经验, 211 本, spring 技术栈, redis , sql 调优,数据迁移, rocketmq ,服务重构微服务, 2 手平台,卖家业务,结算,售后,大商家

大商家有什么特点?库存之间做了系统对接吗?商品发布方式?接口对接

接口的鉴权,防刷是怎么做的?没做。。。限流做了么?如果要做怎么做?

**答题顺序:**结论 → 原理/机制 → 关键流程 → 场景与取舍 → 易错点

回答主线:

  • **要点1:**项目中有哪些亮点?
  • **要点2:**抽象出领域之后,还有一些业务定制内容(比如售后 XX 天,物流分上门或者买家寄)如何实现?
  • **要点3:**状态机 + 事件做物品状态更新?
  • **要点4:**索引优化做了哪些优化?
  • **要点5:**SQL 语句: where product= and number = and status = ,联合索引中,把 number 或者 status 放前面有区别吗?

**记忆锚点:**TCC → number → status → commit → cancel → SQL

关键取舍:

  • try 锁定资源, commit 提交事务。
  • String 有长度限制吗?

易错提醒:

  • Commit 失败会需要 cancel 吗?
  • (事务悬挂、空回滚) 最大努力通知 mq 发失败了咋办?

加分表达:

  • 如果要做怎么做?
  • 索引优化做了哪些优化?

追问准备:

  • 今日面试者: 6 年经验, 211 本, spring 技术栈, redis , sql 调优,数据迁移, rocketmq ,服务重构微服务, 2 手平台,卖家业务,结算,售后,大商家, 大商家有什么特点?
  • 库存之间做了系统对接吗?
  • 接口对接 接口的鉴权,防刷是怎么做的?
  • 如果要做怎么做?

面试者背景 ​

> 今日面试者:6年经验,211本,spring技术栈,redis,sql调优,数据迁移,rocketmq,服务重构微服务,2手平台,卖家业务,结算,售后,大商家, > > 大商家有什么特点?库存之间做了系统对接吗?商品发布方式?接口对接 > > 接口的鉴权,防刷是怎么做的?没做。。。限流做了么?如果要做怎么做? > > 项目中有哪些亮点?架构的演变,重复能力建设,通用能力抽象领域服务(物流、售后),为啥这两个服务可以单独抽象出来?售后产生的物流信息是属于物流域还是售后域?如何决定的? > > 抽象出领域之后,还有一些业务定制内容(比如售后XX天,物流分上门或者买家寄)如何实现? > > 状态机**+事件做物品状态更新?from、to,cas。状态机自己实现的?方法是怎么样的实现?如何判断状态是否可以流转,具体如何做的状态控制?Spring的状态机有了解过吗? > > 分库分表做过吗?分表是水平的还是垂直分的?为了解决啥问题?按照月份分表。跨月查询怎么查。 > > **SQL调优介绍下,做了啥?宽表拆分成主表和扩展表,为啥要这么做?join比宽表慢怎么办?** > > 索引优化做了哪些优化?加联合索引会考虑哪些问题?product、number、status哪个放左边为啥?为啥区分度更高的放前面? > > **SQL语句:where product= and number = and status = **,联合索引中,把number或者status放前面有区别吗?** > > 微服务的拆分,有哪些原则呢?通用能力、 > > 分布式事务用过吗?用过哪种?TCC,最大努力通知, > > **TCC介绍下?try锁定资源,commit提交事务。Commit失败会需要cancel吗?** > > TCC****有什么缺点?侵入性。cancel先到,commit后到。(事务悬挂、空回滚) > > 最大努力通知mq发失败了咋办?重试,重试过程挂了咋办? > > 还有其他的分布式方案吗?seata、本地消息表、事务消息。选择的依据是什么? > > 数据对账做过吗?怎么做。定时任务,跨天怎么办?数据不一致告警怎么做的?任务跑失败了如何感知?除了扫表还有其他方案吗? > > String****有长度限制吗? > > 应用启动后的前几分钟,RT长、Load和CPU都高,如何定位?可能有哪些原因?

题目解析 ​

> 大商家有什么特点?库存之间做了系统对接吗?商品发布方式?接口对接 > > 接口的鉴权,防刷是怎么做的?没做。。。限流做了么?如果要做怎么做?

📄 ✅什么是数据倾斜,会带来哪些问题?如何解决?

打开文档:✅什么是数据倾斜,会带来哪些问题?如何解决?

📄 ✅为了防止接口被恶意调用,设计API秘钥方式提升接口安全性,并通过滑动窗口粗实现接口调用限流。

打开文档:✅为了防止接口被恶意调用,设计API秘钥方式提升接口安全性,并通过滑动窗口粗实现接口调用限流。

📄 ✅什么是限流?常见的限流算法有哪些?

打开文档:✅什么是限流?常见的限流算法有哪些?

> 项目中有哪些亮点?架构的演变,重复能力建设,通用能力抽象领域服务(物流、售后),为啥这两个服务可以单独抽象出来?售后产生的物流信息是属于物流域还是售后域?如何决定的? > > 抽象出领域之后,还有一些业务定制内容(比如售后XX天,物流分上门或者买家寄)如何实现?

📄 ✅如何理解领域驱动设计?

打开文档:✅如何理解领域驱动设计?

> 状态机+事件做物品状态更新?from、to,cas。状态机自己实现的?方法是怎么样的实现?如何判断状态是否可以流转,具体如何做的状态控制?Spring的状态机有了解过吗?

📄 ✅什么是状态机,能描述一下状态机的实现原理吗?

打开文档:✅什么是状态机,能描述一下状态机的实现原理吗?

> 分库分表做过吗?分表是水平的还是垂直分的?为了解决啥问题?按照月份分表。跨月查询怎么查。

📄 ✅什么是分库?分表?分库分表?

打开文档:✅什么是分库?分表?分库分表?

📄 ✅分库分表后如何进行分页查询?

打开文档:✅分库分表后如何进行分页查询?

> SQL****调优介绍下,做了啥?宽表拆分成主表和扩展表,为啥要这么做?join比宽表慢怎么办? > > 索引优化做了哪些优化?加联合索引会考虑哪些问题?product、number、status哪个放左边为啥?为啥区分度更高的放前面? > > SQL语句:where product= and number = and status = ,联合索引中,把number或者status放前面有区别吗?

📄 ✅为什么大厂不建议使用多表join?

打开文档:✅为什么大厂不建议使用多表join?

📄 ✅什么是最左前缀匹配?为什么要遵守?

打开文档:✅什么是最左前缀匹配?为什么要遵守?

📄 ✅where条件的顺序影响使用索引吗?

打开文档:✅where条件的顺序影响使用索引吗?

> 微服务的拆分,有哪些原则呢?通用能力、

📄 ✅如何进行微服务的拆分?

打开文档:✅如何进行微服务的拆分?

> 分布式事务用过吗?用过哪种?TCC,最大努力通知, > > TCC介绍下?try锁定资源,commit提交事务。Commit失败会需要cancel****吗? > > TCC****有什么缺点?侵入性。cancel先到,commit后到。(事务悬挂、空回滚) > > 最大努力通知mq发失败了咋办?重试,重试过程挂了咋办? > > 还有其他的分布式方案吗?seata、本地消息表、事务消息。选择的依据是什么?

📄 ✅常见的分布式事务有哪些?

打开文档:✅常见的分布式事务有哪些?

📄 ✅什么是TCC,和2PC有什么区别?

打开文档:✅什么是TCC,和2PC有什么区别?

📄 ✅TCC的空回滚和悬挂是什么?如何解决?

打开文档:✅TCC的空回滚和悬挂是什么?如何解决?

📄 ✅什么是最大努力通知?

打开文档:✅什么是最大努力通知?

> 数据对账做过吗?怎么做。定时任务,跨天怎么办?数据不一致告警怎么做的?任务跑失败了如何感知?除了扫表还有其他方案吗?

📄 ✅怎么做数据对账?

打开文档:✅怎么做数据对账?

> String有长度限制吗?

📄 ✅String有长度限制吗?是多少?

打开文档:✅String有长度限制吗?是多少?

> 应用启动后的前几分钟,RT长、Load和CPU都高,如何定位?可能有哪些原因?

📄 ✅Load飙高问题排查过程

打开文档:✅Load飙高问题排查过程