Skip to content

面试速答(先看这里)

**一句话结论:**21年毕业,上海,跨境电商,多平台对接,核心功能从0到1实现,分布式经验,分布式限流、千万级大表分表经验,多级缓存。

60秒标准回答:

21年毕业,上海,跨境电商,多平台对接,核心功能从0到1实现,分布式经验,分布式限流、千万级大表分表经验,多级缓存

业务介绍下。发布商品,同步,订单同步,状态变更

第三方接口对接的难点是什么?调第三方接口超时如何处理?重试是如何实现的? spring

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

回答主线:

  • **要点1:**第三方接口对接的难点是什么?
  • **要点2:**那种算法适合应对突发流量?
  • **要点3:**商品是个单独微服务吗?
  • **要点4:**商品表有扫表任务吗 ? 分库分表后如何扫表?
  • **要点5:**如何定位到没加索引的问题的?

**记忆锚点:**shardingjdbc → id → map → oom → Shardingjdbc → length

加分表达:

  • 21年毕业,上海,跨境电商,多平台对接,核心功能从0到1实现,分布式经验,分布式限流、千万级大表分表经验,多级缓存。
  • 如果现在线上出现了oom,你会如何排查?
  • 介绍下场景和背景。

追问准备:

  • 第三方接口对接的难点是什么?
  • 调第三方接口超时如何处理?
  • 重试是如何实现的?
  • spring , 你的分布式限流怎么做的?

面试者背景 ​

> 21年毕业,上海,跨境电商,多平台对接,核心功能从0到1实现,分布式经验,分布式限流、千万级大表分表经验,多级缓存。 > > 业务介绍下。发布商品,同步,订单同步,状态变更。 > > 第三方接口对接的难点是什么?调第三方接口超时如何处理?重试是如何实现的?spring, > > 你的分布式限流怎么做的?redis+guava rate limiter+aop,guava不是单机限流么? > > 讲一下一次请求进来,你的限流是怎么运转的?令牌桶、map? > > 介绍下你了解的限流算法?固定窗口、滑动窗口、令牌桶、漏桶?固定窗口vs滑动窗口? > > 那种算法适合应对突发流量?为什么?令牌桶允许积攒令牌。 > > 什么时候用分布式限流,什么时候用单机限流。做了分布式限流后,还有必要做单机限流吗?为啥? > > 分库分表,只做了分表,分了10张表,一共多少数据?3000万。怎么定的分10张表。 > > 分库分表是针对商品表吗?3000万商品。分表字段是哪个?店铺id,一个平台一张表, > > 同一个平台的不同店铺分到不同的表怎么办?用了shardingjdbc? > > Shardingjdbc****除了分表路由,还有其他功能么?shardingjdbc支持哪几种分表策略? > > 商品是个单独微服务吗?如何实现的商品操作走分库分表,操作店铺不走分库分表?多数据源 > > 做分库分表后,数据迁移是你做的吗? > > 你觉得做分库分表最大的难点是什么?选型,分表键、分布式id生成,动态数据源切换。 > > 商品表有扫表任务吗**?分库分表后如何扫表?带店铺id****?** > > 分布式id用的什么方案?号段模式,维护号段表。 > > 为啥不直接用shardingjdbc支持的雪花算法?workerid不好搞。时钟回拨问题。 > > 介绍下工作中遇到的慢SQL情况?没加索引、大表join、json查询、in查询、 > > 如何定位到没加索引的问题的?执行计划看啥?type(rage、ref)、key、length、extra > > **Extra=using index condition**是什么情况?索引下推是什么?using filesort是什么情况? > > 其他线上问题排查过吗?oom问题、消息堆积。 > > 如果现在线上出现了oom,你会如何排查? > > Chat项目和电商有啥区别么?为啥用netty**?netty的粘包,拆包。** > > 项目中用过设计模式么?哪种?工厂**+策略+模板方法。介绍下场景和背景。工厂的map****是如何初始化的?** > > 项目中为啥用多级缓存?商品-物流方式、redis宕机、只用本地缓存不行吗?

题目解析 ​

> 第三方接口对接的难点是什么?调第三方接口超时如何处理?重试是如何实现的?spring,

📄 ✅给第三方提供接口调用,需要注意些什么?

打开文档:✅给第三方提供接口调用,需要注意些什么?

> 你的分布式限流怎么做的?redis+guava rate limiter+aop,guava不是单机限流么? > > 讲一下一次请求进来,你的限流是怎么运转的?令牌桶、map? > > 介绍下你了解的限流算法?固定窗口、滑动窗口、令牌桶、漏桶?固定窗口vs滑动窗口? > > 那种算法适合应对突发流量?为什么?令牌桶允许积攒令牌。 > > 什么时候用分布式限流,什么时候用单机限流。做了分布式限流后,还有必要做单机限流吗?为啥?

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

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

📄 ✅漏桶和令牌桶有啥区别?

打开文档:✅漏桶和令牌桶有啥区别?

📄 ✅什么是滑动窗口限流?

打开文档:✅什么是滑动窗口限流?

📄 ✅单机限流和集群限流的区别是什么?

打开文档:✅单机限流和集群限流的区别是什么?

> 分库分表,只做了分表,分了10张表,一共多少数据?3000万。怎么定的分10张表。 > > 分库分表是针对商品表吗?3000万商品。分表字段是哪个?店铺id,一个平台一张表, > > 同一个平台的不同店铺分到不同的表怎么办?用了shardingjdbc? > > Shardingjdbc****除了分表路由,还有其他功能么?shardingjdbc支持哪几种分表策略? > > 商品是个单独微服务吗?如何实现的商品操作走分库分表,操作店铺不走分库分表?多数据源 > > 做分库分表后,数据迁移是你做的吗? > > 你觉得做分库分表最大的难点是什么?选型,分表键、分布式id生成,动态数据源切换。 > > 商品表有扫表任务吗?分库分表后如何扫表?带店铺id?

📄 ✅分表字段如何选择?

打开文档:✅分表字段如何选择?

📄 ✅ShardingJDBC有哪些分片策略,你用的哪个?

打开文档:✅ShardingJDBC有哪些分片策略,你用的哪个?

📄 ✅分库分表后怎么设计可以降低数据迁移的难度?

打开文档:✅分库分表后怎么设计可以降低数据迁移的难度?

📄 ✅如何做平滑的数据迁移?

打开文档:✅如何做平滑的数据迁移?

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

打开文档:✅基于XXL-JOB的分片实现分库分表后的扫表

> 分布式id用的什么方案?号段模式,维护号段表。 > > 为啥不直接用shardingjdbc支持的雪花算法?workerid不好搞。时钟回拨问题。

📄 ✅分布式ID生成方案都有哪些?

打开文档:✅分布式ID生成方案都有哪些?

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

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

> 介绍下工作中遇到的慢SQL情况?没加索引、大表join、json查询、in查询、 > > **如何定位到没加索引的问题的?执行计划看啥?type(rage、ref)、key、length、**extra > > Extra=using index condition是什么情况?索引下推是什么?using filesort是什么情况?

📄 ✅慢SQL的问题如何排查?

打开文档:✅慢SQL的问题如何排查?

📄 ✅SQL执行计划分析的时候,要关注哪些信息?

打开文档:✅SQL执行计划分析的时候,要关注哪些信息?

> 其他线上问题排查过吗?oom问题、消息堆积。 > > 如果现在线上出现了oom,你会如何排查?

📄 ✅OOM问题排查过程

打开文档:✅OOM问题排查过程

📄 ✅RocketMQ消息堆积了怎么解决?

打开文档:✅RocketMQ消息堆积了怎么解决?

> 项目中为啥用多级缓存?商品-物流方式、redis宕机、只用本地缓存不行吗?

📄 ✅本地缓存和分布式缓存有什么区别?

打开文档:✅本地缓存和分布式缓存有什么区别?