1、请做一个简单的自我介绍,并简要介绍你参与过的、印象最深的实习或项目经历。
2、说一说你在实习或者项目开发过程中,遇到过最具挑战性的工作内容,完整讲解你的处理过程与解决思路。
3、你们项目中为什么要重构整体的数据权限架构?重构的核心原因是什么?
4、早期代码中将角色标识roleKey硬编码的方式,存在哪些缺陷和隐患?
5、你项目中基于AOP结合MyBatis动态SQL实现的数据权限功能,具体的落地实现逻辑是什么?
6、你所开发维护的这套系统,整体用户体量和使用规模大概是什么水平?
7、权限属于系统核心敏感模块,你们在权限功能迭代上线时,有没有对应的灰度发布、功能校验方案?
8、请分别说明你们项目的接口权限、数据权限是如何设计、如何实现管控的?
9、用户每发起一次请求,系统是否都会重新计算、加载用户的权限信息?
10、如果系统用户量级较大,频繁查询角色和权限数据会造成数据库压力过高,你会如何优化解决?
11、针对系统的权限数据和普通业务数据,你们的缓存整体是如何规划和设计的?
12、你在校项目中的业务数据,是通过何种方式采集、汇总得到的?
13、请详细说明整套系统中,PC端、移动端、硬件传感器三者之间的完整数据传输链路。
14、对于Vue、uni-app前端框架,你是否具备阅读代码和独立开发编写的能力?
15、MySQL包含哪四种事务隔离级别?每一种隔离级别分别可以解决哪些数据库并发问题?
16、在MySQL默认的可重复读RR隔离级别下,如何解决幻读问题?
17、请解释什么是间隙锁,它的作用和使用场景是什么?
18、在执行批量更新数据库操作时,可以通过哪些方式减少死锁的产生?
19、MySQL中有哪些常用的索引类型?各自有什么特点?
20、实际开发中,有哪些常见的索引失效场景?
21、线上出现慢SQL问题时,你的完整排查思路和处理流程是什么?
22、使用EXPLAIN分析SQL执行计划时,需要重点关注哪些核心字段来判断SQL性能?
23、你们项目中的报表数据统计,采用的是实时查询计算还是离线计算的方式?
24、当初项目架构为什么没有选用离线计算或大数据方案?如果后续业务数据量持续暴涨,你该如何扩容优化?
25、分别讲解缓存穿透、缓存击穿、缓存雪崩三种缓存问题的成因,以及对应的完整解决方案。
26、业务开发中分布式锁有哪些常见的实现方案?
27、你是否了解Redisson框架?请讲解Redisson中WatchDog看门狗的工作原理。
28、请介绍Java线程池的七大核心参数及各自作用。
29、向线程池提交任务后,完整的执行流转过程是什么?
30、Java线程池的四种拒绝策略分别是什么?适用场景有何不同?
31、针对CPU密集型任务和IO密集型任务,线程池的核心线程数该如何合理配置?
32、你是否了解消息队列MQ?简单说说你的理解。
33、在电商下单的整体业务链路中,哪些操作适合同步执行,哪些操作可以借助MQ异步处理?
34、电商流程里的创建订单、扣减库存、支付校验、清空购物车、短信通知、积分发放,分别适合同步还是异步处理?
35、MQ如何解决消息重复消费问题,保证业务接口幂等性?
36、你是否了解本地消息表、RocketMQ事务消息这两种分布式事务方案?
37、电商下单流程中,优惠券的核销与计算逻辑适合同步执行还是异步执行?说明理由。
38、面试最后反问环节,你可以自由向面试官提问。