CVTE应用软件工程师Java面经
《面试题目》
- 自我介绍
- 多线程
- 了解多线程吗?
- 线程安全是什么?如何确保?
- Java 锁机制
- Java 中有哪些常见的锁?
- 讲讲悲观锁和乐观锁?
- 计算机网络
- 什么是 TCP?
- TCP 和 UDP 的区别是什么?应用场景?
- TCP 分片粘包了解吗?
- TCP 是如何确保可靠性的?
- 手撕代码
- 九宫格游戏
- 项目与实践
- 实习经历介绍
- Vibe Coding:实习中使用过什么 AI,对 AI 的看法
《参考解析》
- 线程安全与锁:线程安全是指在多线程环境下,共享数据被多个线程访问时仍能保持预期行为。可通过
synchronized、ReentrantLock等实现。悲观锁假设竞争总是发生,操作前先加锁;乐观锁(如 CAS)假设冲突概率低,通过版本号或循环重试实现。 - TCP 可靠性:通过序列号与确认应答(ACK)、超时重传、流量控制(滑动窗口)、拥塞控制以及校验和机制保证数据不丢失、不重复且按序到达。
- TCP 粘包拆包:粘包是多个数据包被合并发送,拆包是单个包被切分。解决方法包括:在包头添加长度字段、使用固定长度数据包、或通过特殊分隔符(如 \n)进行边界区分。
- TCP vs UDP:TCP 面向连接、可靠、全双工;UDP 无连接、不可靠、首部开销小。TCP 适用于文件传输、邮件等;UDP 适用于实时视频、直播、游戏同步等。
- AI 开发 (Vibe Coding):重点强调 AI 辅助编写样板代码、查错、优化算法逻辑的经验,并结合实际项目说明 AI 如何提升开发效率,同时表达对 AI 辅助开发中代码规范与安全性审查的深度思考。