实习 |得物 Java 开发工程师 面经

校大原创

收藏 0 评论 0

面试基本信息

| **面试公司** | 得物 |

| **面试岗位** | Java 开发工程师 |

| **面试时长** | 约 50 分钟 |

| **面试形式** | 项目深挖 + 八股 + 场景题,**无手撕环节** |

| **考察范围** | 项目深挖、MySQL、Redis、线程池、MQ 场景题 |

一、项目深挖・数据权限体系

1. 挑一个实习 / 项目中比较有挑战的事情详细讲

2. 数据权限体系为什么要重构?

3. 原来的 **roleKey 硬编码** 有什么问题?

4. **AOP + MyBatis 动态 SQL** 的数据权限具体怎么实现?

5. 系统用户量大概多少?

6. 权限这种敏感功能上线有没有**灰度 / 验证方案**?

7. **接口权限和数据权限**分别怎么做?

8. 每次请求都重新计算用户权限吗?

9. 如果用户量很大,每次查询角色和权限数据库压力比较大,怎么优化?

10. **权限和业务缓存**怎么设计?

二、学校项目・数据采集链路

1. 学校项目的数据是怎么采集的?

2. PC、手机端和传感器之间的**数据链路**是什么?

3. 前端 **Vue / uni-app** 能不能看、能不能写?

三、MySQL・事务与锁

1. MySQL 四种**事务隔离级别**,各自解决什么问题?

2. **RR(可重复读)下幻读怎么解决?**

3. **间隙锁**是什么?

4. **批量更新怎么减少死锁?**

四、MySQL・索引与慢 SQL

1. MySQL 有哪些**索引类型**?

2. 常见**索引失效**场景有哪些?

3. 慢 SQL 怎么排查?

4. **EXPLAIN 主要看哪些字段?**

五、报表场景・实时与离线

1. 报表查询是**实时还是离线**?

2. 为什么不用离线计算 / 大数据方案?**数据量继续增长怎么办?**

六、Redis・缓存与分布式锁

1. **缓存穿透、击穿、雪崩**及解决方案

2. 分布式锁怎么实现?

3. **Redisson** 了解吗?**WatchDog 原理**?

七、线程池

1. 线程池**七大参数**

2. 线程池**任务提交执行流程**

3. 四种**拒绝策略**

4. **CPU 密集 / IO 密集**线程数怎么设置?

八、MQ・电商下单场景题

1. MQ 了解吗?

2. 电商下单流程里哪些操作应该**同步**,哪些可以 **MQ 异步**?

3. **创建订单、扣库存、支付、删除购物车、发短信、积分**分别怎么处理?

4. **MQ 重复消费怎么保证幂等?**

5. **本地消息表 / 事务消息**了解吗?

6. **优惠券**在下单流程里应该同步还是异步?

九、反问环节