药帮忙java一面面经
《面试题目》
一、项目与综合能力
- 介绍下在校项目的核心功能和亮点。
- 实习期间优化慢查询接口的完整逻辑。
- 项目与实习经历中使用到的设计模式。
- 开发中是否使用过AI工具,以及对项目周期的效率提升。
- 是否阅读过开源项目源码。
- 入职后涉及前端开发是否可以接受。
二、技术八股 7. Java常用数据结构。 8. HashMap底层存放原理及哈希冲突处理。 9. 慢SQL优化手段(explain关键字及其字段含义)。 10. 索引使用注意事项及失效场景。 11. 索引结构(聚簇索引与非聚簇索引)。 12. 回表概念。 13. 主键查询是否会全表扫描。 14. Spring AOP的实现原理。 15. Spring @Transactional事务失效场景。 16. ES与MySQL缓存一致性解决方案。 17. Redis常用数据结构及项目使用场景。
《参考解析》
- HashMap原理:数组+链表/红黑树结构,通过key的hashCode进行散列,1.7使用头插法,1.8使用尾插法,且引入红黑树优化O(n)查询效率。
- 慢SQL优化:通过Explain分析执行计划,关注type(是否有索引扫描)、key(实际使用的索引)、rows(扫描行数)等。优化策略包括:添加合适索引、避免SELECT *、减少函数计算及隐式转换。
- 索引失效场景:对索引字段做运算、使用函数、使用!=或<>、like以%开头、字符串未加引号导致隐式类型转换等。
- Spring事务失效:主要包括:方法非public、方法内部自调用(非代理对象调用)、异常被try-catch吞掉、注解在非Spring管理Bean上、rollbackFor未正确配置等。
- ES与MySQL一致性:常用方案有:双写模式、基于binlog的异步同步(如使用Canal监听MySQL binlog并写入ES)、消息队列削峰填谷。