MetaApp一面
1. 针对你第一段或以Java语言为主的实习经历,介绍一下项目中的亮点或者难点。
2. 你在消息推送改造中使用Redis ZSet加上线程池实现了定时推送,详细说说这个方案的设计思路。
3. 在分布式系统中,多个实例同时扫描Redis ZSet时,要怎么保证任务不会重复执行?
4. 从Redis中取到的任务执行超时(比如超过一秒),你们有什么措施防止任务堆积?
5. 你们的Redis ZSet中是否有过期任务的概念?过期时间设置为多久?如果任务过期了,会怎么做清理?
6. 系统中如果因为系统异常或业务异常,出现轮询Redis ZSet读不到数据(本身有数据却读不到)的情况,有没有做兜底处理?
7. 你在项目中用Redis做服务端缓存,同时将数据缓存在用户本地,怎么保证Redis缓存和数据库(DB)的数据一致性?
8. 你在项目中实现的自定义动态定时任务线程池,详细介绍一下具体的实现方式。
9. 你自定义线程池时,核心参数是怎么选择和设置的?
10. 你有没有为自定义线程池设计过自定义的拒绝策略?
11. 你在项目中使用CompletableFuture做任务编排时,是怎么控制任务的超时时间的?
12. 你在消息推送场景中使用MySQL实现多级队列,具体是怎么解决低优先级任务饿死问题的?
13. 针对C端用户创建订单的场景,怎么保证请求的幂等性,避免用户连续点击导致重复创建订单的问题?
14. 设计一个库存中心系统,数据库和Redis都会记录库存流水和总数,上游业务方发起库存扣减请求时,缓存和数据库的扣减顺序该怎么设计,数据以哪个为准?
15. 你的项目和实习经历中,使用过哪些监控、告警相关的框架或者实现机制?