跳转至

6年经验,电商平台,分布式事务,分布式

(本面经实战的内容来自我的53_✅27届,数藏项目,交易链路开发,秒杀,该候选人是拿我的项目做了包装,里面涉及的所有问题项目课中都有详细讲解,可以在项目课中和我们一起学)

面试者背景

:::warning 19年毕业,Java开发,国企,做电商平台

电商平台做了多久?2年,系统多大体量,日活5-6万。你负责了哪些业务?订单、库存、交易、

介绍下这个系统的架构?分布式架构,springcloud Alibabanacosdubbosentinel

分了哪些微服务?支付、订单、交易、用户,营销有吗?么有营销???商品模块有吗?

交易模块和订单模块的区别是啥?订单-订单生命周期管理,交易-聚合模块。

一次下单流程都需要哪些模块的配合?交易、库存、订单。

商品上的库存是怎么设计的?可售库存数、冻结库存、库存总量。

冻结库存是干嘛的?TCCtry做冻结。订单、库存等模块在TCC的不同步骤中分别做了啥?

TRY:库存做冻结、订单创建(用户看不到),Confirm:库存冻结转化成扣减,订单确认。

Cancel:库存解冻、订单废弃。Confirm之后的cancel呢?事务表、

先操作库存还是订单?如何解决的TCC的空回滚和悬挂问题?怎么知道有空回滚过?

TCC过程中,还没来得及confirm服务挂了怎么办?

自己实现的TCC吗,为啥不用seata中的?

TCCXA相比区别,优缺点?效率。为啥TCC是最终一致性?中间状态、

除了TCC还用过其他的分布式事务方案吗?事务消息、RocketMQ,为啥不用本地消息表。

项目中做了分库分表,订单表多大数据量?为啥不用分布式数据库?

分库分表后主键ID是怎么生成的?介绍下雪花算法。雪花算法什么时候会重复?时钟回拨、如果没有时钟回拨还可能重复么?如何解决时钟回拨的问题?抛异常、等待?切换机器码、提前准备一批id

代码中雪花算法是用框架做的吗?hutool,机器码是怎么设置的?redis自增。Hutoolworkerid不能超过32,如果超过了32台机器怎么办?

分库分表后,如何做扫表?没有分表字段,怎么查询?shardingjdbc如果没有分表键,怎么查的?

ShardingJdbc是你选的吗。知道其他的框架么?为啥不用mycat,你在做技术选型的时候怎么考虑的

订单号的生成逻辑是怎么样的?基因法,你怎么知道订单能分到哪张表?

分表算法怎么实现的?uid hash 取余,为啥要先hash再取余?

项目中解决过哪些线上问题?CPU高问题,arthas、获取数据库链接?连接失效?keep-alive,防火墙。

如果让你设计一个点赞系统,你会考虑哪些问题,难点可能是什么。你的方案是怎样的?并发、多少并发算高?如果是直播间点赞会有其他方案吗?

Free看到机器上内存还有很多,但是有频繁的fullgc,可能的原因是什么?JVM分配的内存少、

:::

题目解析

:::color4 介绍下这个系统的架构?分布式架构,springcloud Alibabanacosdubbosentinel

分了哪些微服务?支付、订单、交易、用户,营销有吗?么有营销???商品模块有吗?

交易模块和订单模块的区别是啥?订单-订单生命周期管理,交易-聚合模块。

一次下单流程都需要哪些模块的配合?交易、库存、订单。

:::

13_✅能不能介绍下你项目的整体架构情况

:::color4 商品上的库存是怎么设计的?可售库存数、冻结库存、库存总量。

冻结库存是干嘛的?TCCtry做冻结。订单、库存等模块在TCC的不同步骤中分别做了啥?

TRY:库存做冻结、订单创建(用户看不到),Confirm:库存冻结转化成扣减,订单确认。

Cancel:库存解冻、订单废弃。Confirm之后的cancel呢?事务表、

先操作库存还是订单?如何解决的TCC的空回滚和悬挂问题?怎么知道有空回滚过?

TCC过程中,还没来得及confirm服务挂了怎么办?

自己实现的TCC吗,为啥不用seata中的?

TCCXA相比区别,优缺点?效率。为啥TCC是最终一致性?中间状态、

除了TCC还用过其他的分布式事务方案吗?事务消息、RocketMQ,为啥不用本地消息表。

:::

105_✅库存扣减、创建订单,如何拆成TCC?

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

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

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

:::color4 项目中做了分库分表,订单表多大数据量?为啥不用分布式数据库?

分库分表后主键ID是怎么生成的?介绍下雪花算法。雪花算法什么时候会重复?时钟回拨、如果没有时钟回拨还可能重复么?如何解决时钟回拨的问题?抛异常、等待?切换机器码、提前准备一批id

代码中雪花算法是用框架做的吗?hutool,机器码是怎么设置的?redis自增。Hutoolworkerid不能超过32,如果超过了32台机器怎么办?

分库分表后,如何做扫表?没有分表字段,怎么查询?shardingjdbc如果没有分表键,怎么查的?

ShardingJdbc是你选的吗。知道其他的框架么?为啥不用mycat,你在做技术选型的时候怎么考虑的

订单号的生成逻辑是怎么样的?基因法,你怎么知道订单能分到哪张表?

分表算法怎么实现的?uid hash 取余,为啥要先hash再取余?

:::

39_✅如果单表数据量大,只能考虑分库分表吗?

15_✅什么是雪花算法,怎么保证不重复的?

44_✅什么是雪花算法的时钟回拨问题,如何解决?

19_✅基于XXL-JOB的分片实现分库分表后的扫表

✅让你设计一个订单号生成服务,该怎么做?

:::color4 项目中解决过哪些线上问题?CPU高问题,arthas、获取数据库链接?连接失效?keep-alive,防火墙。

:::

28_✅日志打印导致CPU飙高问题排查

:::color4 如果让你设计一个点赞系统,你会考虑哪些问题,难点可能是什么。你的方案是怎样的?并发、多少并发算高?如果是直播间点赞会有其他方案吗?

:::

130_✅如何实现一个点赞系统?

:::color4 Free看到机器上内存还有很多,但是有频繁的fullgc,可能的原因是什么?JVM分配的内存少、

:::

113_✅假设还有很多内存,有什么情况还会频繁fullgc?

(本面经实战的内容来自我的53_✅27届,数藏项目,交易链路开发,秒杀,该候选人是拿我的项目做了包装,里面涉及的所有问题项目课中都有详细讲解,可以在项目课中和我们一起学)