在Java开发领域,针对有3至5年经验的开发者的面试,通常会涵盖从基础语法、面向对象编程、多线程、集合框架、设计模式、数据库交互、性能优化、JVM调优、框架使用(如Spring、Hibernate等)到系统设计等多个方面。以下是30道常见的Java面试题及其答案:
问题:Java中的基本数据类型有哪些?
答案:Java有8种基本数据类型:byte、short、int、long、float、double、char、boolean。
问题:解释一下Java中的自动装箱和拆箱。
答案:Java 5.0引入了自动装箱和拆箱功能。装箱就是自动将基本数据类型转换为包装器类型;拆箱就是自动将包装器类型转换为基本数据类型。
问题:Java中的访问修饰符有哪些?
答案:Java中的访问修饰符有private、default(包级别访问)、protected、public。
问题:什么是构造方法?它的作用是什么?
答案:构造方法是一种特殊的方法,用于初始化新创建的对象。它的名称必须与类的名称完全相同,并且它不能有任何返回类型。
问题:解释一下Java中的线程生命周期。
答案:Java中的线程生命周期包括新建、就绪、运行、阻塞和死亡五个状态。
问题:如何在Java中创建线程?
答案:可以通过继承Thread类或实现Runnable接口来创建线程。
问题:wait()和notify()方法是什么?它们应该在哪个类中使用?
答案:wait()和notify()方法是Java中用于线程间通信的方法。它们应该在同步方法或同步块中使用,并且只能在Object或其子类的对象上调用。
问题:Java中的集合框架包含哪些主要接口和类?
答案:Java的集合框架包括List、Set、Queue、Map等接口及其实现类,如ArrayList、HashSet、LinkedList、HashMap等。
问题:ArrayList和LinkedList有什么区别?
答案:ArrayList是基于动态数组实现的,适合随机访问元素;LinkedList是基于双向链表实现的,适合在列表头尾进行插入和删除操作。
问题:Spring框架有哪些主要模块?
答案:Spring框架的主要模块包括Spring Core、Spring Context、Spring Beans、Spring AOP、Spring DAO、Spring ORM、Spring Web等。
问题:解释一下Spring的依赖注入。
答案:Spring的依赖注入是指通过配置或注解的方式,将对象之间的依赖关系交由Spring容器来管理。这样可以降低代码间的耦合度,提高可维护性。