主题
面试速答(先看这里)
**一句话结论:**今日面试者: 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放前面有区别吗?
> 微服务的拆分,有哪些原则呢?通用能力、
> 分布式事务用过吗?用过哪种?TCC,最大努力通知, > > TCC介绍下?try锁定资源,commit提交事务。Commit失败会需要cancel****吗? > > TCC****有什么缺点?侵入性。cancel先到,commit后到。(事务悬挂、空回滚) > > 最大努力通知mq发失败了咋办?重试,重试过程挂了咋办? > > 还有其他的分布式方案吗?seata、本地消息表、事务消息。选择的依据是什么?
> 数据对账做过吗?怎么做。定时任务,跨天怎么办?数据不一致告警怎么做的?任务跑失败了如何感知?除了扫表还有其他方案吗?
> String有长度限制吗?
> 应用启动后的前几分钟,RT长、Load和CPU都高,如何定位?可能有哪些原因?