### Java面试题及答案解析 #### 一、面向对象的基本特征 面向对象编程(OOP)是Java编程语言的核心思想之一,主要包括以下四个特征: 1. **抽象**:抽象是指从现实世界的问题中提取出本质特征的过程,忽略掉不重要的细节。在Java中,抽象可以通过接口(interface)和抽象类(abstract class)来实现。例如,定义一个动物接口,其中包含了所有动物共有的行为(如吃、喝、跑),而具体每种动物如何实现这些行为,则由具体的子类去完成。 2. **继承**:继承是一种创建新类的方式,新类可以继承已有类的属性和方法,并可以在基础上添加新的功能。例如,创建一个“狗”类继承自“动物”类,那么“狗”类不仅拥有了“动物”的所有行为,还可以有自己的特殊行为(如摇尾巴)。 3. **封装**:封装是指将对象的状态信息隐藏在对象内部,不允许外部程序直接访问,而是通过该类提供的公共方法来实现对数据的操作。这样做的好处是可以防止程序中的数据被破坏,提高程序的安全性。例如,如果有一个`Person`类,其中包含了`name`和`age`两个私有字段,可以通过提供`getName()`和`getAge()`等方法来获取这些字段的值。 4. **多态性**:多态性是指允许不同类的对象对同一消息作出响应的能力。在Java中,多态可以通过继承和接口实现。例如,定义一个`Animal`接口,其中包含一个`makeSound()`方法,然后让不同的动物类实现这个接口,这样就可以通过一个统一的接口来调用不同动物的声音。 #### 二、String与StringBuffer的区别 1. **String**:在Java中,`String`是一个不可变的类,一旦创建就不能更改其内容。这使得`String`非常适合用于常量或者不需要修改的文本。因为它的不变性,所以在多线程环境中使用`String`是安全的。 2. **StringBuffer**:`StringBuffer`是一个可变的字符串类,它允许在字符串的基础上进行添加、删除等操作。`StringBuffer`的所有方法都是同步的,这意味着它是线程安全的。如果你需要在一个多线程环境中修改字符串内容,建议使用`StringBuffer`。 #### 三、运行时异常与一般异常的区别 1. **运行时异常**:运行时异常通常是由程序错误引起的,比如数组越界异常(`ArrayIndexOutOfBoundsException`)。这类异常的特点是在程序运行时发生,而且通常是可以避免的。Java编译器不要求必须捕获运行时异常。 2. **一般异常**:一般异常指的是那些由系统资源问题引发的异常,如文件找不到异常(`FileNotFoundException`)。这类异常通常是无法避免的,需要程序员编写代码来处理这些异常情况。Java编译器要求必须处理或声明抛出这些异常。 #### 四、Servlet的生命周期与CGI的区别 1. **Servlet生命周期**:当Web容器加载Servlet时,首先会调用`init()`方法进行初始化;当客户端发起请求时,容器会调用`service()`方法,根据请求类型自动分发到相应的`doGet()`、`doPost()`等方法;当容器决定卸载Servlet时,会调用`destroy()`方法释放资源。 2. **Servlet与CGI的区别**:Servlet是在服务器进程中运行的,可以利用多线程同时处理多个请求,因此效率较高。而CGI(通用网关接口)对于每个HTTP请求都会创建一个新的进程来处理,这导致了较高的资源消耗和较低的性能。此外,Servlet实例在服务器启动时就被创建,而CGI则为每个请求创建新的进程。 #### 五、ArrayList、Vector、LinkedList的存储性能和特性 1. **ArrayList**:使用数组实现,支持随机访问,插入和删除操作相对较慢。 2. **Vector**:类似于`ArrayList`,但所有方法都是同步的,因此在多线程环境下更安全。 3. **LinkedList**:使用双向链表实现,不支持随机访问,但在插入和删除操作上比`ArrayList`和`Vector`更快。 #### 六、EJB技术及其组成部分 1. **EJB技术**:EJB(Enterprise JavaBeans)是Java EE平台中用于开发企业级应用的一种技术,它包括Session Beans、Entity Beans等组件。 2. **SessionBean**与**EntityBean**的区别: - **SessionBean**:用于处理业务逻辑,没有持久化的状态。 - **EntityBean**:用于表示数据库中的实体,持久化状态。 3. **StatefulBean**与**StatelessBean**的区别: - **StatefulBean**:保持客户端会话状态,适用于需要维护会话状态的应用场景。 - **StatelessBean**:不保存客户端状态,每次请求都独立处理,适用于简单的业务逻辑处理。 以上内容是对给定文档中的Java基础知识进行了详细的解释和扩展,希望能帮助准备Java面试的朋友更好地理解这些核心概念和技术要点。
剩余37页未读,继续阅读
- 粉丝: 0
- 资源: 1
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助