中科创达 Java 一面面经

中科创达 · java · 一面 · 天津 · 2026-04

面试题目

  1. 请做一个简单的自我介绍。
  2. 针对实习经历和项目经历,有没有遇到过一些困难?怎么思考和解决的?
  3. 实习开发的是 CI/CD 插件,主要用的是什么语言?
  4. open API 规范里用到了 MCP 和大模型,你对 AI 和 Java 这一块的理解目前是什么样的?
  5. 说一下面向对象的特点。
  6. 平时都用到哪些数据结构?
  7. 说一下 Java 内存模型(JMM)。
  8. 三个线程同时处理一个数从 1 加到 100,如何保证数据的可见性和有序性?
  9. 用 synchronized 时,锁是怎么进行升级的?
  10. 说一下 TCP/IP 四层网络模型架构。
  11. 传输层有哪些协议?TCP 和 UDP 的特点分别是什么?
  12. 给你一个链表,如何判断链表有没有环?
  13. 意向城市是天津吗?
  14. 对自己的未来技术规划(职业规划)有什么想法?

参考解析

Java内存模型(JMM): JMM定义了线程和主内存之间的抽象关系,规定了线程对变量的操作必须在本地内存中进行,不能直接读写主内存。主要涉及原子性、可见性和有序性三个核心特性。

synchronized锁升级: 锁状态依次为:无锁 -> 偏向锁 -> 轻量级锁 -> 重量级锁。锁的升级是单向的,目的是为了减少获得锁和释放锁带来的性能消耗。

多线程可见性与有序性: 使用volatile关键字保证变量在多线程间的可见性与防止指令重排;若要保证累加操作的原子性,需配合AtomicInteger类或使用synchronized/ReentrantLock锁机制。

判断链表环: 使用快慢指针法(Floyd判圈算法)。设置一个慢指针每次走一步,一个快指针每次走两步,若快指针能追上慢指针,则说明链表有环;若快指针走到头,则无环。

TCP与UDP: TCP是面向连接的、可靠的传输协议,通过三次握手建立连接,保证顺序和数据完整;UDP是无连接的,传输速度快,但不保证可靠性,适用于直播、实时音视频等场景。