Java 面试题解析与解答
面向对象编程
(持续更新)
1. 解释 Java 中的封装、继承和多态。
封装: 将数据和操作数据的方法捆绑在一起,并隐藏内部实现细节。
继承: 允许一个类(子类)继承另一个类(父类)的属性和方法,实现代码复用。
多态: 允许对象在不同情况下表现出不同的行为,例如,通过方法重写和接口实现。
2. Java 中抽象类和接口的区别是什么?
| 特性 | 抽象类 | 接口 |
|---|---|---|
| 成员变量 | 可以有 | 只能有常量 |
| 方法 | 可以有抽象方法和具体方法 | 只能有抽象方法 (Java 8 之后可以有默认方法和静态方法) |
| 实现方式 | 通过 extends 关键字继承 | 通过 implements 关键字实现 |
| 关系 | 可以继承多个接口,但只能继承一个抽象类 | 可以继承多个接口 |
3. 什么是 Java 中的异常?如何处理异常?
异常是程序运行过程中发生的意外事件,会中断程序的正常执行流程。可以使用 try-catch-finally
块来处理异常。
try {
// 可能抛出异常的代码
} catch (ExceptionType e) {
// 处理异常的代码
} finally {
// 无论是否发生异常都会执行的代码
}
集合框架
(持续更新)
1. ArrayList 和 LinkedList 的区别是什么?
| 特性 | ArrayList | LinkedList |
|---|---|---|
| 数据结构 | 动态数组 | 双向链表 |
| 随机访问 | 快 (O(1)) | 慢 (O(n)) |
| 插入/删除 | 慢 (需要移动元素) | 快 (只需改变指针) |
2. HashMap 和 HashTable 的区别是什么?
| 特性 | HashMap | HashTable |
|---|---|---|
| 线程安全 | 非线程安全 | 线程安全 |
| null 键/值 | 允许一个 null 键和多个 null 值 | 不允许 null 键和 null 值 |
多线程
(持续更新)
1. 创建线程的两种方式是什么?
- 继承
Thread
类 - 实现
Runnable
接口
2. synchronized
关键字的作用是什么?
synchronized
关键字用于实现线程同步,保证同一时刻只有一个线程可以访问同步代码块或同步方法。
暂无评论