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