实习 | 得物Java面经

校大原创

收藏 0 评论 0

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、面试最后反问环节,你可以自由向面试官提问。