主题
面试速答(先看这里)
**一句话结论:**电商平台做了多久?
60秒标准回答:
19年毕业,Java开发,国企,做电商平台
电商平台做了多久? 2 年,系统多大体量,日活 5-6 万。你负责了哪些业务?订单、库存、交易、
介绍下这个系统的架构?分布式架构, springcloud Alibaba , nacos 、 dubbo 、 sentinel
**答题顺序:**结论 → 原理/机制 → 关键流程 → 场景与取舍 → 易错点
回答主线:
- **要点1:**19年毕业,Java开发,国企,做电商平台
- **要点2:**介绍下这个系统的架构?
- **要点3:**交易模块和订单模块的区别是啥?
- **要点4:**除了 TCC 还用过其他的分布式事务方案吗?
- **要点5:**除了TCC还用过其他的分布式事务方案吗?
**记忆锚点:**TCC → Confirm → hash → shardingjdbc → ShardingJdbc → sentinel
易错提醒:
- Hutool 的 workerid 不能超过 32 ,如果超过了 32 台机器怎么办?
加分表达:
- 时钟回拨、如果没有时钟回拨还可能重复么?
- shardingjdbc 如果没有分表键,怎么查的?
追问准备:
- (本面经实战的内容来自我的 数藏项目 ,该候选人是拿我的项目做了包装,里面涉及的所有问题项目课中都有详细讲解,可以在项目课中和我们一起学) 19年毕业,Java开发,国企,做电商平台 电商平台做了多久?
- 你负责了哪些业务?
- 订单、库存、交易、 介绍下这个系统的架构?
- 分布式架构, springcloud Alibaba , nacos 、 dubbo 、 sentinel 分了哪些微服务?
(本面经实战的内容来自我的数藏项目,该候选人是拿我的项目做了包装,里面涉及的所有问题项目课中都有详细讲解,可以在项目课中和我们一起学)
面试者背景
> 19年毕业,Java开发,国企,做电商平台 > > 电商平台做了多久?2年,系统多大体量,日活5-6万。你负责了哪些业务?订单、库存、交易、 > > 介绍下这个系统的架构?分布式架构,springcloud Alibaba,nacos、dubbo、sentinel > > 分了哪些微服务?支付、订单、交易、用户,营销有吗?么有营销???商品模块有吗? > > 交易模块和订单模块的区别是啥?订单-订单生命周期管理,交易-聚合模块。 > > 一次下单流程都需要哪些模块的配合?交易、库存、订单。 > > 商品上的库存是怎么设计的?可售库存数、冻结库存、库存总量。 > > **冻结库存是干嘛的?TCC的try做冻结。订单、库存等模块在TCC**的不同步骤中分别做了啥? > > TRY**:库存做冻结、订单创建(用户看不到),Confirm:库存冻结转化成扣减,订单确认。** > > Cancel**:库存解冻、订单废弃。Confirm之后的cancel呢?事务表、** > > 先操作库存还是订单?如何解决的TCC的空回滚和悬挂问题?怎么知道有空回滚过? > > TCC过程中,还没来得及confirm****服务挂了怎么办? > > 自己实现的TCC吗,为啥不用seata中的? > > TCC和XA相比区别,优缺点?效率。为啥TCC****是最终一致性?中间状态、 > > 除了TCC还用过其他的分布式事务方案吗?事务消息、RocketMQ,为啥不用本地消息表。 > > 项目中做了分库分表,订单表多大数据量?为啥不用分布式数据库? > > 分库分表后主键ID是怎么生成的?介绍下雪花算法。雪花算法什么时候会重复?时钟回拨、如果没有时钟回拨还可能重复么?如何解决时钟回拨的问题?抛异常、等待?切换机器码、提前准备一批id? > > 代码中雪花算法是用框架做的吗?hutool,机器码是怎么设置的?redis自增。Hutool的workerid不能超过32,如果超过了32台机器怎么办? > > 分库分表后,如何做扫表?没有分表字段,怎么查询?shardingjdbc如果没有分表键,怎么查的? > > ShardingJdbc是你选的吗。知道其他的框架么?为啥不用mycat**,你在做技术选型的时候怎么考虑的** > > 订单号的生成逻辑是怎么样的?基因法,你怎么知道订单能分到哪张表? > > 分表算法怎么实现的?uid hash **取余,为啥要先hash**再取余? > > 项目中解决过哪些线上问题?CPU高问题,arthas、获取数据库链接?连接失效?keep-alive,防火墙。 > > 如果让你设计一个点赞系统,你会考虑哪些问题,难点可能是什么。你的方案是怎样的?并发、多少并发算高?如果是直播间点赞会有其他方案吗? > > Free看到机器上内存还有很多,但是有频繁的fullgc,可能的原因是什么?JVM分配的内存少、
题目解析
> **介绍下这个系统的架构?分布式架构,springcloud Alibaba,nacos、dubbo、sentinel > > 分了哪些微服务?支付、订单、交易、用户,营销有吗?么有营销???商品模块有吗? > > 交易模块和订单模块的区别是啥?订单-订单生命周期管理,交易-**聚合模块。 > > 一次下单流程都需要哪些模块的配合?交易、库存、订单。
> 商品上的库存是怎么设计的?可售库存数、冻结库存、库存总量。 > > 冻结库存是干嘛的?TCC的try做冻结。订单、库存等模块在TCC的不同步骤中分别做了啥? > > TRY**:库存做冻结、订单创建(用户看不到),Confirm:库存冻结转化成扣减,订单确认。** > > Cancel**:库存解冻、订单废弃。Confirm之后的cancel呢?事务表、** > > 先操作库存还是订单?如何解决的TCC的空回滚和悬挂问题?怎么知道有空回滚过? > > TCC过程中,还没来得及confirm****服务挂了怎么办? > > 自己实现的TCC吗,为啥不用seata中的? > > TCC和XA相比区别,优缺点?效率。为啥TCC****是最终一致性?中间状态、 > > 除了TCC还用过其他的分布式事务方案吗?事务消息、RocketMQ,为啥不用本地消息表。
> 项目中做了分库分表,订单表多大数据量?为啥不用分布式数据库? > > 分库分表后主键ID是怎么生成的?介绍下雪花算法。雪花算法什么时候会重复?时钟回拨、如果没有时钟回拨还可能重复么?如何解决时钟回拨的问题?抛异常、等待?切换机器码、提前准备一批id? > > 代码中雪花算法是用框架做的吗?hutool,机器码是怎么设置的?redis自增。Hutool的workerid不能超过32,如果超过了32台机器怎么办? > > 分库分表后,如何做扫表?没有分表字段,怎么查询?shardingjdbc如果没有分表键,怎么查的? > > ShardingJdbc是你选的吗。知道其他的框架么?为啥不用mycat**,你在做技术选型的时候怎么考虑的** > > 订单号的生成逻辑是怎么样的?基因法,你怎么知道订单能分到哪张表? > > 分表算法怎么实现的?uid hash 取余,为啥要先hash再取余?
> 项目中解决过哪些线上问题?CPU高问题,arthas、获取数据库链接?连接失效?keep-alive,防火墙。
> 如果让你设计一个点赞系统,你会考虑哪些问题,难点可能是什么。你的方案是怎样的?并发、多少并发算高?如果是直播间点赞会有其他方案吗?
> Free看到机器上内存还有很多,但是有频繁的fullgc,可能的原因是什么?JVM分配的内存少、
打开文档:✅假设还有很多内存,有什么情况还会频繁fullgc?