### Java及J2EE面试题集知识点解析 #### 一、面向对象的四大特性 **1. 抽象** - **定义**: 抽象是指在编程中忽略对象中与当前目标无关的部分,以便更好地关注与目标相关的方面。 - **作用**: 通过抽象,可以将复杂的系统简化为更易于理解和管理的形式。 - **示例**: 在设计一个汽车系统时,我们可以抽象出“汽车”这一概念,而不需要考虑引擎的具体实现细节。 **2. 继承** - **定义**: 继承是一种使一个类(子类)能够继承另一个类(父类)的属性和方法的机制。 - **作用**: 继承支持代码复用,减少了重复编码的工作量。 - **示例**: 假设有一个`Vehicle`类,我们可以通过继承创建一个`Car`类,从而`Car`类自动获得了`Vehicle`类的所有属性和方法。 **3. 封装** - **定义**: 封装是指隐藏对象内部的状态和行为,仅通过公开的接口进行访问和修改。 - **作用**: 保护数据的安全性,提高模块间的独立性。 - **示例**: 使用private修饰符隐藏类的字段,并通过public的方法(getter和setter)来访问这些字段。 **4. 多态** - **定义**: 多态性指的是同一个行为在不同的对象上有不同的表现形式。 - **作用**: 提高代码的灵活性和扩展性。 - **示例**: 通过继承,可以让子类覆盖或实现父类的方法,从而在运行时根据对象的实际类型调用相应的方法。 #### 二、Java基础知识点 **1. String是否为基本数据类型** - **解释**: `String`不是基本数据类型,而是`java.lang.String`类的一个实例。 - **特点**: `String`类是不可变的,这意味着一旦创建了一个`String`对象,它的值就不能改变。 **2. int与Integer的区别** - **定义**: `int`是基本数据类型,而`Integer`是`int`的包装类。 - **区别**: `int`占用的是固定长度的内存空间,而`Integer`则是对象,占用的内存空间不仅包括数据本身还包括对象头信息。 - **使用场景**: 当需要进行大量数值运算时,通常使用`int`;而在需要进行对象操作时,则使用`Integer`。 **3. String与StringBuffer的区别** - **定义**: `String`是不可变的字符串,而`StringBuffer`是可变的字符串。 - **应用场景**: 当字符串内容不需要修改时,使用`String`;如果需要频繁修改字符串内容,使用`StringBuffer`会更加高效。 - **线程安全性**: `StringBuffer`是线程安全的,适用于多线程环境。 #### 三、异常处理 **1. 运行时异常与一般异常的异同** - **相同点**: 都是异常,都会中断正常的程序执行流程。 - **不同点**: - 运行时异常通常是程序员的错误导致的,如数组越界、空指针等; - 非运行时异常(编译时异常)通常是外部环境造成的,如IO异常,这类异常需要在程序中显式处理。 #### 四、Servlet相关知识点 **1. Servlet的生命周期** - **初始化阶段**: `init()`方法在Servlet首次被加载时调用。 - **处理请求阶段**: 每次请求调用`service()`方法,该方法会进一步调用`doGet()`或`doPost()`等具体方法。 - **销毁阶段**: 当Web应用卸载或重启时,`destroy()`方法会被调用。 **2. Servlet与CGI的区别** - **执行效率**: Servlet在一个进程中执行,通过多线程服务请求,而CGI为每个请求启动一个新的进程,因此Servlet的执行效率更高。 - **资源消耗**: Servlet重用实例,而CGI为每个请求创建新的实例,因此Servlet对资源的消耗更小。 #### 五、集合类比较 **1. ArrayList与LinkedList** - **存储结构**: `ArrayList`底层采用数组实现,而`LinkedList`采用双向链表实现。 - **性能差异**: `ArrayList`适用于频繁查询的场景,而`LinkedList`适合频繁插入删除操作的场景。 **2. Vector与ArrayList** - **线程安全**: `Vector`是线程安全的,而`ArrayList`不是。 - **性能**: 由于`Vector`使用`synchronized`关键字确保线程安全,因此性能普遍比`ArrayList`低。 #### 六、EJB相关知识点 **1. EJB的技术基础** - **基础**: EJB(Enterprise JavaBeans)基于Java EE标准,利用了Java的反射、代理等技术。 - **组件**: 包括Session Bean和Entity Bean等。 **2. SessionBean与EntityBean的区别** - **SessionBean**: 用于管理业务逻辑,可以是无状态(Stateless)的也可以是有状态(Stateful)的。 - **EntityBean**: 用于持久化数据,相当于数据库中的表。 **3. StatefulBean与StatelessBean的区别** - **StatefulBean**: 保存客户端状态,每次客户端请求都返回同一个实例。 - **StatelessBean**: 不保存客户端状态,每次客户端请求都会创建一个新的实例。
- 粉丝: 5
- 资源: 73
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助