### J2EE面试题集知识点详解
#### 一、基础问答
1. **哪些类可以被继承?**
- `java.lang.Thread`: 可以被继承 (`T` 表示True)。
- `java.lang.Number`: 不可以被继承 (`F` 表示False),因为它是`final`类。
- `java.lang.Double`: 不可以被继承 (`F` 表示False),因为它同样是`final`类。
- `java.lang.Math`: 不可以被继承 (`F` 表示False),`Math`类是`final`类。
- `java.lang.Void`: 不可以被继承 (`F` 表示False),`Void`类是`final`类。
- `java.lang.Class`: 不可以被继承 (`F` 表示False),虽然`Class`类不是`final`类,但由于它是由JVM内部生成的,所以不允许用户继承。
- `java.lang.ClassLoader`: 可以被继承 (`T` 表示True)。
2. **抽象类和接口的区别**
- **接口**可以被多个类实现(`implements`),而抽象类只能被单一地扩展(`extends`)。
- 接口中所有方法默认都是`public abstract`的,没有实现;而抽象类中可以包含已实现的方法。
- 接口中的变量默认为`public static final`,抽象类中的变量则具有类成员变量的属性,除非特别声明为`public static final`。
3. **HashTable的原理与HashMap的区别**
- **HashTable的原理**: HashTable采用散列函数计算元素的存储位置,通过给定的关键码`k`,计算出散列值`H(k)`,进而确定该元素的存储位置。
- **HashMap与HashTable的区别**:
- `HashTable`是线程同步的(`synchronized`),而`HashMap`是非线程同步的。
- `HashTable`不允许`null`键和`null`值,而`HashMap`允许一个`null`键和任意数量的`null`值。
4. **Forward和Redirect的区别**
- **Forward**(请求转发)是在服务器端内部进行的资源跳转,不产生新的HTTP请求。原请求数据在转发后仍然保留。
- **Redirect**(重定向)会产生一个新的HTTP请求,原请求数据在第二次请求中不可用。
5. **Web容器的概念**
- Web容器是实现J2EE规范中Web协议的应用。它定义了Web程序的运行时环境,包括并发性、安全性、生命周期管理等方面。Web容器提供了标准的服务和API,使得Web应用程序能够在不同的服务器之间移植。
6. **J2EE核心名词解释**
- **JNDI** (Java Naming & Directory Interface): 提供了一个目录系统,用于注册和查找网络中的服务和对象。它可以支持多种目录服务,如LDAP、DNS等。
- **JMS** (Java Message Service): 定义了一组API,用于应用程序间的异步通信。支持两种模型:点对点(P2P)和发布/订阅(Pub/Sub)。
- **JTA** (Java Transaction API): 提供了一套标准的API用于管理分布式事务。它可以确保事务的ACID属性。
- **JAF** (Java Authentication and Authorization Service): 提供了一种框架来支持身份验证和授权机制。允许开发人员自定义这些服务。
- **RMI** (Remote Method Invocation): 允许在不同JVM上的对象直接调用对方的方法,如同调用本地对象一样简单。
7. **EJB的基础概念及类型**
- **EJB**(Enterprise JavaBeans)是一种Java EE服务器端组件模型,用于构建可复用的业务组件。EJB包括以下几种类型:
- **Session Bean**:
- 用于封装业务逻辑。
- 分为有状态(Stateful)和无状态(Stateless)两种。
- **Stateful Session Bean**: 记录用户的交互历史,每个客户端对应一个实例。
- **Stateless Session Bean**: 不保存客户端的状态信息,可以被任何客户端调用。
- **Entity Bean**: 用于表示持久化的业务对象,可以存储在数据库中。
- **Message Driven Bean**: 用于处理异步消息,通常与JMS一起使用。
8. **XML解析方法**
- **SAX** (Simple API for XML): 基于事件驱动的模型,适用于大文档。
- **DOM** (Document Object Model): 将整个文档加载到内存中,适合小型文档。
- **JDOM**: 是一种基于Java的DOM实现,简化了DOM的使用,并提供了更好的性能。
9. **WebService简介**
- WebService是为了实现不同系统间的通信而设计的一种标准接口。它通过HTTP/SOAP/WSDL/WS-*等技术实现不同应用程序之间的互操作性,通常用于跨语言、跨平台的信息交换和服务调用。
- WebService的主要优势包括松耦合、标准化、易于集成等。通过SOAP协议,WebService可以提供一种标准的方式来定义服务接口、调用方法、传输数据等。