“金三银四”求职季即将到来,你是否也在准备面试或已经历了几轮“车轮战”?

这里为大家整理了 77 道经典 Java 面试题,涵盖语言基础、集合、并发、JVM、数据库、Web 等方面。如果你的基础还不够扎实,或面试表现不佳,不妨从这些题目入手。

什么是 Java 虚拟机?为什么 Java 被称为“平台无关语言”?

JDK 与 JRE 的区别。

static 关键字的含义,能否覆盖 private 或 static 方法?

静态环境中能否访问非静态变量?

Java 支持哪些数据类型?什么是自动装箱与拆箱?

方法覆盖(Overriding)与重载(Overloading)的区别。

构造函数、构造函数重载、复制构造函数的概念。

Java 是否支持多继承?

接口与抽象类的区别。

值传递与引用传递的区别。

进程与线程的区别。

创建线程的几种方式,你偏好哪种?为什么?

线程的几种状态及其含义。

同步方法与同步代码块的区别。

什么是死锁?

如何避免 N 个线程访问 N 个资源时发生死锁?

集合框架的基本接口有哪些?

为什么集合类没有实现 Cloneable 与 Serializable?

什么是迭代器(Iterator)?

Iterator 与 ListIterator 的区别。

快速失败(fail-fast)与安全失败(fail-safe)的区别。

HashMap 的工作原理。

hashCode() 与 equals() 方法的重要性。

HashMap 与 Hashtable 的区别。

数组与 ArrayList 的区别,何时用数组?

ArrayList 与 LinkedList 的区别。

Comparable 与 Comparator 的作用与区别。

什么是优先级队列(PriorityQueue)?

了解大 O 表示法吗?能举例不同数据结构的时间复杂度吗?

如何选择使用有序数组还是无序数组?

集合类使用的最佳实践有哪些?

Enumeration 与 Iterator 的区别。

HashSet 与 TreeSet 的区别。

System.gc() 与 Runtime.gc() 的作用。

finalize() 方法何时调用?其目的是什么?

对象引用置为 null 后,垃圾回收器会立即释放内存吗?

Java 堆的结构是什么?永久代(PermGen)是什么?

串行收集器与吞吐量收集器的区别。

对象何时可以被垃圾回收?

永久代中会发生垃圾回收吗?

Java 中哪两种异常类型?区别是什么?

Exception 与 Error 的区别。

throw 与 throws 的区别。

异常处理完成后,Exception 对象会怎样?

finally 块与 finalize() 方法的区别。

什么是 JDBC?

JDBC 中驱动(Driver)的作用。

Class.forName() 方法的作用。

PreparedStatement 相比 Statement 的优势。

何时使用 CallableStatement?如何创建?

什么是数据库连接池?

什么是 RMI?

什么是分布式垃圾回收(DGC)?如何工作?

序列化与反序列化的概念。

什么是 Servlet?

Servlet 的体系结构。

GenericServlet 与 HttpServlet 的区别。

Servlet 的生命周期。

doGet() 与 doPost() 的区别。

什么是服务端包含(SSI)?

什么是 Servlet 链(Servlet Chaining)?

如何获取请求 Servlet 的客户端信息?

HTTP 响应的结构。

什么是 Cookie?Session 与 Cookie 的区别。

浏览器与 Servlet 之间使用什么协议通信?

什么是 HTTP 隧道?

sendRedirect() 与 forward() 的区别。

什么是 URL 编码与解码?

JSP 请求的处理过程。

什么是 JSP 指令?有哪些类型?

什么是 JSP 动作(Action)?

隐含对象是什么?有哪些?

面向对象开发的优点。

封装的定义与好处。

多态的定义。

继承的定义。

抽象的定义,抽象与封装的区别。