春秋航空 Java 开发实习面试经验
《面试题目》
一、个人与项目经历
- 自我介绍及实习时间确认。
- 蓝桥杯竞赛详情。
- 项目功能模块拆解及架构设计。
- 项目中百级用户并发控制策略。
- 人工智能工具使用及Python相关库了解。
- 印象深刻的项目难点解决与团队冲突处理。
二、Java基础与面向对象
- Java基础及集合框架(线程安全/不安全集合)。
- String/StringBuffer/StringBuilder区别,基类有哪些。
- 面向对象特性、类与对象区别、实例化方法。
- 构造方法、抽象类、接口与多继承。
- 包装类比较、equals重写、深拷贝与浅拷贝。
- 强/软/弱/虚引用区别。
- 反射应用场景。
- 锁机制(Synchronized加在类与方法区别)。
三、框架与数据库
- Restful API设计规范及请求方式。
- JUnit单元测试注解与依赖。
- MySQL事务控制(开启、回滚、提交)。
- Spring事务隔离级别及嵌套事务(Propagation)问题。
- Redis缓存穿透、击穿、雪崩及加锁机制。
- Spring Boot全局异常处理及Bean容器化。
四、非技术问题
- 职业规划与地域选择、加班文化看法。
《参考解析》
- Spring事务嵌套问题:若子方法异常,是否回滚取决于事务传播行为(Propagation)。默认REQUIRED下,子方法异常会标记当前事务为rollback-only,导致外层事务随之回滚。
- 缓存三兄弟:
- 穿透:查询不存在数据,解决:布隆过滤器或缓存空对象。
- 击穿:热点Key失效,解决:互斥锁(Redis SETNX)或逻辑过期。
- 雪崩:大量Key同时过期,解决:随机过期时间或加锁限流。
- Synchronized机制:加在方法上锁的是当前对象实例(this);加在类(static方法或类对象)上锁的是类对象(Class),影响该类所有实例。
- 引用类型:强(GC不回收)、软(内存不足回收)、弱(GC即回收)、虚(无法通过引用取值,用于回收监控)。
- 深拷贝与浅拷贝:浅拷贝仅复制引用,深拷贝需通过序列化或递归复制对象内部所有属性。