信雅达Java一面面经
《面试题目》
- 说一下 Java 语言的特点有哪些?
- Java 实现线程有哪几种方式?
- JDK、JRE、JVM 它们分别是什么?以及它们的关系是什么?
- Java 中 IO 流分为哪几种?
- 集合跟数组有什么区别?
- 常用的集合类有哪些?
- 并行跟并发有什么区别?
- Mysql 数据库有哪些优点?
- 索引设计的原则有哪些?
- JVM 怎么判断一个对象是不是要回收呢?
- JVM 的常用调优参数有哪些?
- Java 类的加载过程分为哪几个阶段?每个阶段主要是做什么?
- 描述一下 springcloud 的主要组件跟功能。
- 微服务架构跟以前的单体架构它主要的区别是什么?
- 介绍一下你这个 NL2SQL 的项目。
- NL2SQL 的过程,需要哪些数据与前提条件?准确率如何?基于多大案例?
- 针对日期类型匹配不准确的问题,你的解决方案是什么?项目用的什么模型?
- 说说你使用 cursor、Claude code 这些 AI 工具的使用经验?
- 除了写代码,你还会用这些工具做其他的事情吗?如果给你一个需求,结合 AI 技术你会怎么做?
《参考解析》
- 线程实现:继承Thread类、实现Runnable接口、实现Callable接口(配合FutureTask)、线程池。
- 并行与并发:并行是指多个任务在同一时刻同时执行(多核);并发是指多个任务在同一时间段内交替执行(时间片轮转)。
- 索引设计原则:最左前缀原则;高频查询字段建立索引;避免在索引列上做运算;区分度高的列放在索引前面;尽量使用短索引。
- JVM对象回收判定:引用计数法(无法解决循环引用)和可达性分析算法(GC Roots)。
- 类加载过程:加载、验证、准备(静态变量赋默认值)、解析、初始化(静态代码块及赋值)、使用、卸载。
- 微服务vs单体:单体部署简单但耦合度高、维护难;微服务拆分服务、独立部署、技术栈灵活,但增加了分布式事务、服务治理等复杂性。