CVTE应用软件工程师Java面经

《面试题目》

  1. 自我介绍
  2. 多线程
    • 了解多线程吗?
    • 线程安全是什么?如何确保?
  3. Java 锁机制
    • Java 中有哪些常见的锁?
    • 讲讲悲观锁和乐观锁?
  4. 计算机网络
    • 什么是 TCP?
    • TCP 和 UDP 的区别是什么?应用场景?
    • TCP 分片粘包了解吗?
    • TCP 是如何确保可靠性的?
  5. 手撕代码
    • 九宫格游戏
  6. 项目与实践
    • 实习经历介绍
    • Vibe Coding:实习中使用过什么 AI,对 AI 的看法

《参考解析》

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