信雅达Java一面面经

信雅达 · Java开发工程师 · 一面 · 2026-03

《面试题目》

  1. 说一下 Java 语言的特点有哪些?
  2. Java 实现线程有哪几种方式?
  3. JDK、JRE、JVM 它们分别是什么?以及它们的关系是什么?
  4. Java 中 IO 流分为哪几种?
  5. 集合跟数组有什么区别?
  6. 常用的集合类有哪些?
  7. 并行跟并发有什么区别?
  8. Mysql 数据库有哪些优点?
  9. 索引设计的原则有哪些?
  10. JVM 怎么判断一个对象是不是要回收呢?
  11. JVM 的常用调优参数有哪些?
  12. Java 类的加载过程分为哪几个阶段?每个阶段主要是做什么?
  13. 描述一下 springcloud 的主要组件跟功能。
  14. 微服务架构跟以前的单体架构它主要的区别是什么?
  15. 介绍一下你这个 NL2SQL 的项目。
  16. NL2SQL 的过程,需要哪些数据与前提条件?准确率如何?基于多大案例?
  17. 针对日期类型匹配不准确的问题,你的解决方案是什么?项目用的什么模型?
  18. 说说你使用 cursor、Claude code 这些 AI 工具的使用经验?
  19. 除了写代码,你还会用这些工具做其他的事情吗?如果给你一个需求,结合 AI 技术你会怎么做?

《参考解析》

  1. 线程实现:继承Thread类、实现Runnable接口、实现Callable接口(配合FutureTask)、线程池。
  2. 并行与并发:并行是指多个任务在同一时刻同时执行(多核);并发是指多个任务在同一时间段内交替执行(时间片轮转)。
  3. 索引设计原则:最左前缀原则;高频查询字段建立索引;避免在索引列上做运算;区分度高的列放在索引前面;尽量使用短索引。
  4. JVM对象回收判定:引用计数法(无法解决循环引用)和可达性分析算法(GC Roots)。
  5. 类加载过程:加载、验证、准备(静态变量赋默认值)、解析、初始化(静态代码块及赋值)、使用、卸载。
  6. 微服务vs单体:单体部署简单但耦合度高、维护难;微服务拆分服务、独立部署、技术栈灵活,但增加了分布式事务、服务治理等复杂性。