Skip to content

面试速答(先看这里)

**一句话结论:**介绍下一个核心的业务流程,收发货,核心单据数据量有多少?

60秒标准回答:

20 年毕业, 4 年,供应链相关、分布式、微服务、

介绍下一个核心的业务流程,收发货,核心单据数据量有多少?流水表、 5000 万

有做分库吗?分表怎么分的? shardingjdbc 、发货子单号分表、 64 张表

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

回答主线:

  • **要点1:**Shardingjdbc ,如果没带分表字段还能查询吗?
  • **要点2:**如何设计一个分库分表方案?
  • **要点3:**分布式锁的粒度和事务粒度如何控制?
  • **要点4:**如何设计一个分库分表方案?
  • **要点5:**分布式锁的粒度和事务粒度如何控制?

**记忆锚点:**OOM → Nacos → hint → 雪花算法 → 导出接口 → shardingjdbc

加分表达:

  • 20 年毕业, 4 年,供应链相关、分布式、微服务、 介绍下一个核心的业务流程,收发货,核心单据数据量有多少?
  • Shardingjdbc ,如果没带分表字段还能查询吗?
  • 后期如果 64 张表不够了,怎么办?

追问准备:

  • 20 年毕业, 4 年,供应链相关、分布式、微服务、 介绍下一个核心的业务流程,收发货,核心单据数据量有多少?
  • 列表查询怎么做?
  • Shardingjdbc ,如果没带分表字段还能查询吗?
  • 算法是如何实现的(配置还是实现了算法类)?

面试者背景 ​

> 20****年毕业,4年,供应链相关、分布式、微服务、 > > 介绍下一个核心的业务流程,收发货,核心单据数据量有多少?流水表、5000万。 > > 有做分库吗?分表怎么分的?shardingjdbc、发货子单号分表、64张表, > > 发货单号:业务类型、时间戳、自增****ID-> hash -> 取模。列表查询怎么做? > > Shardingjdbc**,如果没带分表字段还能查询吗?算法是如何实现的(配置还是实现了算法类)?** > > 如何实现去指定单表查询?hint知道吗? > > 主键是如何实现的?雪花算法。为啥不直接用redis的自增id?生成的雪花算法多少位?一定19位吗?什么情况下可能会重复?nanoid用过吗? > > 为啥只做了分表,没做分库?原因是什么?为啥没考虑用归档解决数据量大的问题? > > 后期如果64张表不够了,怎么办? > > 如何设计一个分库分表方案?选分表键、选中间件,同步方案、切流方案。。。除了insert,还有update怎么办? > > 项目中有哪些难点?springboot升级,兼容问题。 > > 遇到过哪些线上问题?oom,excel导出,导出接口限流,poi->easyexcel。。dump是如何获取的? > > 导出接口限流是怎么做的?redisson,ratelimiter。 > > OOM排查流程、、除了内存泄漏还有其他原因吗?Java发生OOM后会立刻挂掉吗?先发生OOM还是先GC**?** > > Nacos****用来做什么?应用如何感知到配置变化的?长轮询??为啥不建长连接? > > Nacos是AP还是CP**?配置中心是哪种?为啥配置中心C比A更重要呢?** > > 分布式锁的粒度和事务粒度如何控制?平时是如何加事务的?编程式事务。 > > 分布式如何做链路追踪、雪花算法, > > 分布式锁,乐观锁锁和悲观锁哪个适合高并发?乐观锁无锁吗?

题目解析 ​

> 有做分库吗?分表怎么分的?shardingjdbc、发货子单号分表、64张表, > > 发货单号:业务类型、时间戳、自增ID-> hash -> 取模。列表查询怎么做? > > 为啥只做了分表,没做分库?原因是什么?为啥没考虑用归档解决数据量大的问题?

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

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

📄 ✅分表算法都有哪些?

打开文档:✅分表算法都有哪些?

> Shardingjdbc,如果没带分表字段还能查询吗?算法是如何实现的(配置还是实现了算法类)? > > 如何实现去指定单表查询?hint知道吗? > > 主键是如何实现的?雪花算法。为啥不直接用redis的自增id?生成的雪花算法多少位?一定19位吗?什么情况下可能会重复?nanoid用过吗? > > 后期如果64张表不够了,怎么办? > > 如何设计一个分库分表方案?选分表键、选中间件,同步方案、切流方案。。。除了insert,还有update怎么办?

📄 ✅分表后全局ID如何生成?

打开文档:✅分表后全局ID如何生成?

📄 ✅分库分表后,表还不够怎么办?

打开文档:✅分库分表后,表还不够怎么办?

> 遇到过哪些线上问题?oom,excel导出,导出接口限流,poi->easyexcel。。dump是如何获取的?

📄 ✅OOM问题排查过程

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

📄 ✅基于EasyExcel+线程池解决POI文件导出时的内存溢出及超时问题

打开文档:✅基于EasyExcel+线程池解决POI文件导出时的内存溢出及超时问题

> 导出接口限流是怎么做的?redisson,ratelimiter。

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

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

📄 ✅如何基于Redis实现滑动窗口限流?

打开文档:✅如何基于Redis实现滑动窗口限流?

> OOM排查流程、、除了内存泄漏还有其他原因吗?Java发生OOM后会立刻挂掉吗?先发生OOM还是先GC?

📄 ✅Java发生了OOM一定会导致JVM 退出吗?

打开文档:✅Java发生了OOM一定会导致JVM 退出吗?

📄 ✅JVM 中一次完整的 GC 流程是怎样的?

打开文档:✅JVM 中一次完整的 GC 流程是怎样的?

> Nacos****用来做什么?应用如何感知到配置变化的?长轮询??为啥不建长连接? > > Nacos是AP还是CP?配置中心是哪种?为啥配置中心C比A更重要呢?

📄 ✅Nacos如何实现的配置变化客户端可以感知到?

打开文档:✅Nacos如何实现的配置变化客户端可以感知到?

📄 ✅Nacos是AP的还是CP的?

打开文档:✅Nacos是AP的还是CP的?

📄 ✅Nacos能同时实现AP和CP的原理是什么?

打开文档:✅Nacos能同时实现AP和CP的原理是什么?

> 分布式锁的粒度和事务粒度如何控制?平时是如何加事务的?编程式事务。 > > 分布式如何做链路追踪、雪花算法, > > 分布式锁,乐观锁锁和悲观锁哪个适合高并发?乐观锁无锁吗?

📄 ✅使用分布式锁时,分布式锁加在事务外面还是里面,有什么区别?

打开文档:✅使用分布式锁时,分布式锁加在事务外面还是里面,有什么区别?

📄 ✅如何实现应用中的链路追踪?

打开文档:✅如何实现应用中的链路追踪?

📄 ✅高并发场景中,乐观锁和悲观锁哪个更适合?

打开文档:✅高并发场景中,乐观锁和悲观锁哪个更适合?

📄 ✅数据库乐观锁的过程中,完全没有加任何锁吗?

打开文档:✅数据库乐观锁的过程中,完全没有加任何锁吗?