药帮忙Java后端二面+HR面面经
《面试题目》
二面(27分钟):
- 个人背景、学校及家庭信息询问。
- 职业规划。
- SQL题:学生成绩表(姓名、课程、分数),按学生总成绩排序。
- sum()和count()的区别。
- 线上慢查询的排查逻辑。
- 频繁访问字典表的优化方案。
- 使用Redis的注意事项。
- Redis大Key问题的处理方式。
- RabbitMQ如何保证不重复消费。
- ACK模式下并发场景的重复消费控制。
- 优缺点评价。
- 期望薪资。
- 与同龄人的对比评价。
HR面(10分钟): 14. 优缺点重述。 15. AI工具的使用能力与规范。 16. 对使用AI的态度。 17. 是否能接受前端开发工作。
《参考解析》
- SQL排序:使用
GROUP BY按姓名分组,通过SUM(score)计算总分,最后ORDER BY排序。 - 慢查询排查:先定位SQL执行计划(EXPLAIN),查看索引命中情况;评估接口复杂度;必要时采用Redis缓存热点数据或使用MQ削峰限流。
- 字典表优化:在应用启动时加载至本地缓存或通过Redis缓存,减少数据库I/O访问,提升接口响应速度。
- Redis大Key:通过拆分Key(将大Hash拆为小Hash)、异步删除(UNLINK)、增加过期时间或迁移至特定存储引擎解决。
- MQ幂等性:利用数据库唯一键(Unique Constraint)实现幂等,或在Redis中维护一个消费流水号,在处理业务逻辑前进行校验。