### Java面试过关的面试题详解
#### 一、基础概念辨析
1. **`java.lang`包中的类是否可被继承?**
- `java.lang.Thread`: 可被继承 (T)。
- `java.lang.Number`: 可被继承 (T)。
- `java.lang.Double`: 不可被继承 (F),因为它是`final`类。
- `java.lang.Math`: 不可被继承 (F),也是`final`类。
- `java.lang.Void`: 不可被继承 (F),同样为`final`类。
- `java.lang.Class`: 可被继承 (F),虽然`Class`不是用来继承的,但它本身是可继承的。
- `java.lang.ClassLoader`: 可被继承 (T)。
2. **接口与抽象类的区别:**
- 接口可以被多个类实现,而一个类只能继承一个抽象类。
- 接口中所有的方法默认是公共的、静态的、最终的(public static final),而抽象类则没有这样的限制。
- 接口用于定义行为标准,抽象类则用于提供部分实现。
#### 二、集合框架详解
3. **`Hashtable`与`HashMap`的区别:**
- `Hashtable`是线程安全的(synchronized),不允许使用`null`作为键或值。
- `HashMap`是非线程安全的(unsynchronized),允许使用一个`null`键和多个`null`值。
- `Hashtable`的内部实现是通过计算键的哈希值来定位元素的位置。
4. **转发(forward)与重定向(redirect)的区别:**
- 转发(forward):在Servlet内部进行的跳转,只涉及一次请求,服务器端的行为,客户端不知道发生了什么。
- 重定向(redirect):涉及到两次请求,客户端会收到一个302的状态码,并被引导到另一个资源,原请求和新请求之间没有任何关联。
#### 三、Web应用架构与J2EE核心组件
5. **什么是Web应用?**
- Web应用是基于Web的软件应用程序,它使用Web技术(如HTML、CSS、JavaScript等)来提供服务。J2EE平台提供了构建复杂Web应用所需的标准化组件和技术支持。
6. **J2EE核心组件介绍:**
- **JNDI (Java Naming & Directory Interface)**:用于查找和访问分布式环境中的命名和目录服务。
- **JMS (Java Message Service)**:提供了一种异步通信机制,使得应用程序能够发送消息给其他程序。
- **JTA (Java Transaction API)**:为事务管理提供了一个标准化的API,简化了事务处理的复杂性。
- **JAF (Java Action Framework)**:提供了一系列安全功能,支持身份验证、授权和加密等功能。
- **RMI (Remote Method Invocation)**:支持远程对象调用,使得一个虚拟机上的对象可以调用另一台机器上虚拟机中的对象的方法。
#### 四、企业级组件与服务
7. **EJB (Enterprise JavaBeans)介绍及其类型:**
- EJB是J2EE平台的核心组件之一,用于开发和部署企业级应用中的中间层服务。
- EJB包括Session Bean、Entity Bean、Message-Driven Bean等类型。
- **Session Bean**:用于处理业务逻辑。
- **Entity Bean**:用于表示持久化数据。
- **Message-Driven Bean**:用于接收消息驱动的事件。
- Session Bean又分为Stateful Session Bean和Stateless Session Bean两种:
- **Stateful Session Bean**:维护客户端状态。
- **Stateless Session Bean**:不保存客户端状态。
#### 五、XML解析方式
8. **XML解析方式:**
- **SAX (Simple API for XML)**:适用于大型文档的解析,但不能修改文档。
- **DOM (Document Object Model)**:将整个文档加载到内存中并创建一个树形结构,便于查询和修改文档。
- **JDOM**:一种轻量级的DOM实现,适用于小型文档的解析。
#### 六、WebService概念与特点
9. **WebService概述与特点:**
- WebService是一种开放的标准协议,用于在网络上发布、查找以及调用服务。
- 特点包括:
- 跨平台性:可以在不同的操作系统之间交换数据。
- 基于标准:使用XML、HTTP、SOAP等标准协议进行数据交换。
- 易于集成:可以轻松地与其他系统集成。
- 安全性:可以使用各种安全协议确保数据的安全传输。
- 可扩展性:易于添加新的服务和更新现有的服务。
#### 七、并发编程模型
10. **并发编程模型:**
- **多线程模型**:
- 实现方式:通过继承`Thread`类或者实现`Runnable`接口。
- **同步模型**:
- 实现方式:使用`synchronized`关键字、`wait()`和`notify()`等方法来控制线程间的同步问题。
#### 八、JSP指令详解
11. **JSP指令标签详解:**
- `<%@ include file=%>`:用于静态包含文件,当被包含文件发生变化时,不会立即反映在主页面上。
- `<jsp:include page="" flush="true"/>`:动态包含文件,当被包含文件发生变化时,会立即反映在主页面上。