主题
面试速答(先看这里)
**一句话结论:**completableFuture 用了它的什么功能?
60秒标准回答:
7 年, Java 后端, 2 家大厂工作各 3 年,下单页、订单、性能,稳定性,民宿业务,导购、页面耗时优化
导购页面性能优化方案,有哪些?有哪些技术手段?链路梳理、流程优化(异步)、代码性能优化、外调接口异步,线程池并行查询, completableFuture
如果外部接口的 RT 无法保证,如何处理?弱依赖、降级。比如评价没查到,如何降级?
**答题顺序:**结论 → 原理/机制 → 关键流程 → 场景与取舍 → 易错点
回答主线:
- **要点1:**7 年, Java 后端, 2 家大厂工作各 3 年,下单页、订单、性能,稳定性,民宿业务,导购、页面耗时优化,
- **要点2:**导购页面性能优化方案,有哪些?
- **要点3:**如果外部接口的 RT 无法保证,如何处理?
- **要点4:**分库分表做过吗?
- **要点5:**如何保证读幂等?
**记忆锚点:**completableFuture → executorService → redisson → watchdog → redlock → Redis
关键取舍:
- 7 年, Java 后端, 2 家大厂工作各 3 年,下单页、订单、性能,稳定性,民宿业务,导购、页面耗时优化, 导购页面性能优化方案,有哪些?
- 链路梳理、流程优化(异步)、代码性能优化、外调接口异步,线程池并行查询, completableFuture , 如果外部接口的 RT 无法保证,如何处理?
- 性能,复用性, 分库分表做过吗?
易错提醒:
- 存量迁移和增量双写之间如何避免丢数据?
- 如何避免压测数据影响正常数据?
加分表达:
- 如果有一个外部接口必要降级,你自己会怎么做?
追问准备:
- 7 年, Java 后端, 2 家大厂工作各 3 年,下单页、订单、性能,稳定性,民宿业务,导购、页面耗时优化, 导购页面性能优化方案,有哪些?
- 有哪些技术手段?
- 链路梳理、流程优化(异步)、代码性能优化、外调接口异步,线程池并行查询, completableFuture , 如果外部接口的 RT 无法保证,如何处理?
- 比如评价没查到,如何降级?
面试者背景
> 7年,Java后端,2家大厂工作各3****年,下单页、订单、性能,稳定性,民宿业务,导购、页面耗时优化, > > 导购页面性能优化方案,有哪些?有哪些技术手段?链路梳理、流程优化(异步)、代码性能优化、外调接口异步,线程池并行查询,completableFuture, > > 如果外部接口的RT无法保证,如何处理?弱依赖、降级。比如评价没查到,如何降级? > > 如果有一个外部接口必要降级,你自己会怎么做? > > completableFuture用了它的什么功能?流式编程,他和executorService****区别是啥?线程窃取, > > 导购这部分的难点?性能,复用性, > > 分库分表做过吗?分库分表之后全局ID如何做的?雪花算法(时间戳、机器码、业务类型、标记位),时钟回拨问题?分表字段如何选的?分表算法是什么?假如128分表不够了怎么办?再扩容**+迁移、数据清理。业务不中断情况下数据迁移如何做?存量迁移和增量双写之间如何避免丢数据? > > 如果有一个大的商户,导致数据倾斜,如何解决? > > **幂等是什么?如何保证读幂等?读用做幂等吗?写请求的幂等如何保证?加锁、校验、执行。加锁用什么锁?不加锁有啥问题?如果有唯一性约束了,还需要加锁吗?f(x)= f(f(x)) > > **Redis实现分布锁的时候,哪些问题需要考虑?超时时间、redisson(watchdog)、redlock解决的是什么问题?拿到锁的机器挂了会有啥问题吗?** > > **工作7年来,遇到的最大挑战是什么?稳定性,衡量稳定性指标?****SLA,**几个九(宕机时间)、 > > 设计一个高可用的架构考虑哪些方案?异地多活、微服务、限流熔断降级、 > > 限流、降级,熔断区别是啥?限流保护自己、给外部接口降级、 > > 压测做过吗?什么是全链路压测?如何避免压测数据影响正常数据?压测标、影子表。压测标自己识别吗? > > 大促除了压测,预案怎么做的?大促封网状态,如何保证预案能执行?预案开关、 > > 线上问题排查案例讲一个。Fullgc,如何用arthas定位到那个大的list的?
题目解析
> 导购页面性能优化方案,有哪些?有哪些技术手段?链路梳理、流程优化(异步)、代码性能优化、外调接口异步,线程池并行查询,completableFuture, > > 如果外部接口的RT无法保证,如何处理?弱依赖、降级。比如评价没查到,如何降级? > > 如果有一个外部接口必要降级,你自己会怎么做? > > completableFuture用了它的什么功能?流式编程,他和executorService区别是啥?线程窃取, > > 导购这部分的难点?性能,复用性,
📄 ✅使用CompletableFuture完成并发编排,提升接口性能
打开文档:✅使用CompletableFuture完成并发编排,提升接口性能
> 分库分表做过吗?分库分表之后全局ID如何做的? > > 雪花算法?(时间戳、机器码、业务类型、标记位),时钟回拨问题?分表字段如何选的?分表算法是什么? > > 假如128分表不够了怎么办?再扩容+迁移、数据清理。 > > 业务不中断情况下数据迁移如何做?存量迁移和增量双写之间如何避免丢数据? > > 如果有一个大的商户,导致数据倾斜,如何解决?
> 幂等是什么?如何保证读幂等?读用做幂等吗?写请求的幂等如何保证?加锁、校验、执行。加锁用什么锁?不加锁有啥问题?如果有唯一性约束了,还需要加锁吗?f(x)= f(f(x))
> Redis实现分布锁的时候,哪些问题需要考虑?超时时间、redisson(watchdog)、redlock解决的是什么问题?拿到锁的机器挂了会有啥问题吗?
> 工作7年来,遇到的最大挑战是什么?稳定性,衡量稳定性指标?SLA,几个九(宕机时间)、
📄 ✅什么是SLA?
> 设计一个高可用的架构考虑哪些方案?异地多活、微服务、限流熔断降级、 > > 限流、降级,熔断区别是啥?限流保护自己、给外部接口降级、
> 压测做过吗?什么是全链路压测?如何避免压测数据影响正常数据?压测标、影子表。压测标自己识别吗? > > 大促除了压测,预案怎么做的?大促封网状态,如何保证预案能执行?预案开关、
> 线上问题排查案例讲一个。Fullgc,如何用arthas定位到那个大的list的?