### Java面试题汇总知识点解析 #### 一、面向对象的基本特征 **1. 抽象** - **定义**: 抽象是指在设计阶段只关注事物的本质特征,忽略次要的细节,以便更好地理解和处理问题。 - **作用**: 有助于简化问题,使设计更加清晰。 - **形式**: 抽象可以通过接口(interface)或抽象类(abstract class)来实现。 - **接口**: 定义了一组行为规范,但不提供具体实现。 - **抽象类**: 提供了一些默认实现,并允许子类覆盖或扩展。 **2. 继承** - **定义**: 继承是一种创建新类的方式,新类(子类)继承现有类(父类)的属性和方法。 - **优势**: 提高代码复用性和模块化。 - **语法**: 在Java中,继承通过关键字`extends`来实现。 - **例子**: ```java public class Animal { public void eat() { System.out.println("Animal is eating"); } } public class Dog extends Animal { public void bark() { System.out.println("Dog is barking"); } } ``` **3. 封装** - **定义**: 封装是将数据和对数据的操作绑定在一起,隐藏内部细节,只暴露必要的接口。 - **目的**: 保护数据,防止外部直接访问。 - **实现方式**: - 使用访问修饰符(private, protected, public)控制成员变量和方法的可见性。 - 提供getter和setter方法访问和修改私有变量。 - **示例**: ```java public class Person { private String name; public String getName() { return name; } public void setName(String name) { this.name = name; } } ``` **4. 多态** - **定义**: 多态是指同一接口可以有不同的实现方式。 - **分类**: - **参数化多态**: 通过泛型实现,如`List<T>`。 - **包含多态**: 通过继承实现,如`Object obj = new Dog();`。 - **优点**: 增强代码灵活性,便于维护。 #### 二、基本类型与包装类型 **1. String是最基本的数据类型吗?** - **解答**: 不是。Java中的基本数据类型包括byte、short、int、long、float、double、char、boolean。`String`是`java.lang.String`类的实例,属于引用类型。 **2. int和Integer有什么区别** - **区别**: - `int`: 是Java的基本数据类型之一,占用32位存储空间。 - `Integer`: 是`int`的封装类,属于引用类型。 - **应用场景**: - `int`用于数值计算,内存占用少。 - `Integer`用于集合操作、方法参数传递等场景。 **3. String和StringBuffer的区别** - **String**: 不可变的字符序列,适合于内容不变的字符串。 - **StringBuffer**: 可变的字符序列,支持字符串的动态修改。 - **性能差异**: 对于频繁修改的字符串,`StringBuffer`性能更好。 #### 三、异常处理 **1. 运行时异常与一般异常有何异同** - **运行时异常**: 如`NullPointerException`,通常由程序逻辑错误引起。 - **非运行时异常**(检查异常): 如`IOException`,通常由外部因素导致。 - **区别**: - 运行时异常不需要显式捕获或声明。 - 非运行时异常需要显式处理或声明。 #### 四、Servlet与CGI的区别 - **Servlet**: - 运行在服务器进程中,通过多线程处理请求。 - 实例一般不会销毁,性能较高。 - **CGI**: - 每个请求生成一个新的进程。 - 服务完成后销毁,效率较低。 #### 五、集合类比较 **1. ArrayList vs Vector vs LinkedList** - **ArrayList**: - 基于数组实现,支持随机访问。 - 插入和删除操作较慢。 - **Vector**: - 同`ArrayList`,但线程安全。 - 性能略低。 - **LinkedList**: - 基于双向链表实现。 - 插入和删除操作较快。 - 随机访问较慢。 #### 六、EJB技术基础 **1. EJB技术实现** - **基础**: Java EE标准的一部分,用于构建企业级应用。 - **组件**: - **Session Bean**: 分为无状态和有状态两种,处理业务逻辑。 - **Entity Bean**: 表示持久化数据,分为实体Bean和消息驱动Bean。 **2. SessionBean和EntityBean的区别** - **Session Bean**: - 用于执行业务逻辑。 - 可以是有状态或无状态的。 - **Entity Bean**: - 代表数据库中的持久化对象。 - 用于持久化数据和管理实体的状态。 - **总结**: Session Bean关注业务流程,Entity Bean关注数据模型。
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![text/x-c++](https://img-home.csdnimg.cn/images/20210720083646.png)
![text/x-c++](https://img-home.csdnimg.cn/images/20210720083646.png)
![wps](https://img-home.csdnimg.cn/images/20210720083653.png)
![txt](https://img-home.csdnimg.cn/images/20210720083642.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![txt](https://img-home.csdnimg.cn/images/20210720083642.png)
![application/pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![application/x-zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![avatar-default](https://csdnimg.cn/release/downloadcmsfe/public/img/lazyLogo2.1882d7f4.png)
![avatar](https://profile-avatar.csdnimg.cn/9df05118927c4a0c8b7e18aa43731b20_waising.jpg!1)
- 粉丝: 0
- 资源: 3
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助
![voice](https://csdnimg.cn/release/downloadcmsfe/public/img/voice.245cc511.png)
![center-task](https://csdnimg.cn/release/downloadcmsfe/public/img/center-task.c2eda91a.png)
最新资源
![feedback](https://img-home.csdnimg.cn/images/20220527035711.png)
![feedback-tip](https://img-home.csdnimg.cn/images/20220527035111.png)
![dialog-icon](https://csdnimg.cn/release/downloadcmsfe/public/img/green-success.6a4acb44.png)