航旅纵横 Java后端开发二面面经
面试题目
- 自我介绍。
- 实习期间具体做了什么?觉得最难或收获最大的点是什么?
- 你是如何学习新技术、新业务流程的?有什么改进空间?
- 实习时就开始用AI编程工具了吗?现在用的比例?
- 在AI编程如此发达的时代,程序员/后端程序员的核心竞争力是什么?
- 实习或项目中,有没有定位过比较复杂的线上问题?
- 场景题:用Redis实现一个仿微信朋友圈的点赞系统,应选择哪种数据结构?为什么?
- 场景题:用MySQL实现纯文本评论系统,有什么需要注意的?如何设计表结构?
- 怎么提升评论数据的查询效率?尤其是好友查看他人帖子评论时的共同好友过滤。
- 分析两种方案:①先查出帖子所有评论再通过Redis做共同好友过滤;②直接用数据库连表(评论表+好友关系表)查询。优缺点对比?
- 自我评价:作为Java应届生,最大的优势和劣势是什么?
参考解析
- Redis点赞系统:推荐使用 Set(点赞记录)或 Hash(点赞计数)。Set 适合去重且方便判断点赞状态,Hash 适合存储计数,若数据量极大需考虑分片。
- MySQL评论系统:重点在于表结构设计,包括评论内容、作者ID、帖子ID、回复层级(如 parent_id 存储父评论ID)。注意索引优化(如帖子ID、创建时间),防止大表查询缓慢。
- 共同好友过滤优化:方案①(Redis)适合高并发读,利用 Redis 的 SINTER 等集合操作处理好友关系;方案②(DB)适合数据一致性要求高、并发量相对较小的场景。核心难点在于好友关系数据的缓存策略与热点数据过滤。
- 程序员核心竞争力:AI能写代码但不能完全理解复杂的业务逻辑、技术选型决策及系统的高可用设计。核心竞争力在于:抽象能力、架构设计思维、对业务深刻的洞察力以及在复杂故障下的定位与解决能力。