2025年Java初级面试题及答案
一、Java基础
-
问题:Java中的基本数据类型有哪些?
答案:Java有8种基本数据类型:byte、short、int、long、float、double、char、boolean。
-
问题:String、StringBuilder和StringBuffer的区别?
答案:String是不可变的,StringBuilder和StringBuffer是可变的;StringBuilder是非线程安全的,StringBuffer是线程安全的。
-
问题:什么是自动装箱和拆箱?
答案:自动装箱是将基本类型自动转换为对应的包装类对象,拆箱是将包装类对象自动转换为基本类型。
二、面向对象
-
问题:什么是面向对象的三大特性?
答案:封装、继承、多态。
-
问题:抽象类和接口的区别?
答案:抽象类可以有构造方法和具体方法实现,接口在Java8之前只能有抽象方法;一个类只能继承一个抽象类,但可以实现多个接口。
-
问题:什么是方法重载和方法重写?
答案:重载是在同一个类中方法名相同但参数不同,重写是子类重写父类的方法,方法签名必须相同。
三、集合框架
-
问题:ArrayList和LinkedList的区别?
答案:ArrayList基于数组实现,查询快增删慢;LinkedList基于链表实现,增删快查询慢。
-
问题:HashMap的工作原理?
答案:HashMap基于哈希表实现,通过键的hashCode计算存储位置,使用链表或红黑树解决哈希冲突。
-
问题:HashSet如何保证元素唯一?
答案:HashSet内部使用HashMap存储元素,通过元素的hashCode和equals方法保证唯一性。
四、异常处理
-
问题:Java中的异常分类?
答案:分为Error(严重错误)和Exception(异常),Exception又分为RuntimeException(运行时异常)和Checked Exception(检查型异常)。
-
问题:try-catch-finally的执行顺序?
答案:先执行try块,如果发生异常执行catch块,最后无论是否发生异常都会执行finally块。
五、多线程
-
问题:创建线程的几种方式?
答案:1)继承Thread类 2)实现Runnable接口 3)实现Callable接口 4)使用线程池
-
问题:synchronized和Lock的区别?
答案:synchronized是关键字,自动释放锁;Lock是接口,需要手动释放锁,提供更多功能如尝试获取锁、公平锁等。
六、JVM基础
-
问题:Java内存区域划分?
答案:程序计数器、虚拟机栈、本地方法栈、堆、方法区(元空间)。
-
问题:什么是垃圾回收?
答案:JVM自动回收不再使用的对象占用的内存,常见的垃圾回收算法有标记-清除、复制、标记-整理等。
七、新特性
-
问题:Java8有哪些重要新特性?
答案:Lambda表达式、Stream API、Optional类、新的日期时间API、接口默认方法等。
-
问题:什么是函数式接口?
答案:只有一个抽象方法的接口,可以用@FunctionalInterface注解标记,如Runnable、Comparator等。
八、数据库
-
问题:JDBC连接数据库的基本步骤?
答案:1)加载驱动 2)获取连接 3)创建Statement 4)执行SQL 5)处理结果 6)关闭资源
-
问题:什么是SQL注入?如何防止?
答案:通过构造特殊SQL语句攻击数据库,防止方法:使用PreparedStatement、参数化查询、输入验证等。
九、框架基础
-
问题:Spring框架的核心是什么?
答案:IoC(控制反转)和AOP(面向切面编程)。
-
问题:什么是Spring Bean?
答案:由Spring容器管理的Java对象,通过配置文件或注解定义,由容器负责创建和管理生命周期。
十、设计模式
-
问题:列举几个常用的设计模式?
答案:单例模式、工厂模式、观察者模式、装饰器模式、策略模式等。
-
问题:什么是单例模式?如何实现?
答案:确保一个类只有一个实例,实现方式:1)饿汉式 2)懒汉式(双重检查锁) 3)静态内部类 4)枚举