主题
面试速答(先看这里)
**一句话结论:**介绍下一个核心的业务流程,收发货,核心单据数据量有多少?
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怎么办?
> 遇到过哪些线上问题?oom,excel导出,导出接口限流,poi->easyexcel。。dump是如何获取的?
📄 ✅基于EasyExcel+线程池解决POI文件导出时的内存溢出及超时问题
打开文档:✅基于EasyExcel+线程池解决POI文件导出时的内存溢出及超时问题
> 导出接口限流是怎么做的?redisson,ratelimiter。
> OOM排查流程、、除了内存泄漏还有其他原因吗?Java发生OOM后会立刻挂掉吗?先发生OOM还是先GC?
> Nacos****用来做什么?应用如何感知到配置变化的?长轮询??为啥不建长连接? > > Nacos是AP还是CP?配置中心是哪种?为啥配置中心C比A更重要呢?
> 分布式锁的粒度和事务粒度如何控制?平时是如何加事务的?编程式事务。 > > 分布式如何做链路追踪、雪花算法, > > 分布式锁,乐观锁锁和悲观锁哪个适合高并发?乐观锁无锁吗?
📄 ✅使用分布式锁时,分布式锁加在事务外面还是里面,有什么区别?