赢时胜Java后端开发线下面试经验
面试题目
面试形式:线下群面,2位面试官(HR+技术)对2位候选人。
主要内容:
- 实习经历及项目经验深挖。
- 技术八股文:
- 索引失效的常见场景有哪些?
- synchronized锁的实现原理是什么?
- 如何理解RAG(检索增强生成)和MCP(模型上下文协议)?
- HR环节:考察个人经历及其他综合素质。
参考解析
1. 索引失效的场景
- 违背最左前缀法则:跳过复合索引的左侧字段查询。
- 字段使用函数或表达式计算:如
WHERE YEAR(date) = 2025。 - 类型隐式转换:如字符串列未加引号进行比对。
- 使用
!=或<>、IS NULL、LIKE '%abc'等操作符。 - 优化器评估全表扫描代价低于索引查询时。
2. synchronized锁的实现原理
- 基于JVM层面的重量级锁,底层通过对象的Monitor(监视器)实现。
- 锁升级过程:无锁 -> 偏向锁 -> 轻量级锁 -> 重量级锁,以减少性能开销。
- 编译后会在代码块前后生成
monitorenter和monitorexit指令。 - 保证了原子性、可见性和有序性,是可重入锁。
3. 对RAG和MCP的理解
- RAG(检索增强生成):通过外部检索数据库获取相关文档片段,填充到Prompt中,提升大模型输出内容的准确性和实时性。
- MCP(模型上下文协议):一种标准化的连接协议,旨在解决AI模型与数据源、开发工具之间孤岛问题,让模型能安全、高效地获取上下文信息。