Java 30道面试题及答案.docx
需积分: 0 132 浏览量
更新于2024-02-19
收藏 15KB DOCX 举报
根据提供的文档信息,以下是从标题、描述、标签以及部分内容中提炼出的相关知识点:
### Java 30道面试题及答案
#### List 接口特点
- **顺序存储**:List 接口支持按照插入顺序存储元素。
- **可重复值**:List 允许存储相同的元素。
#### Set 接口特点
- **无序存储**:Set 不保证存储元素的特定顺序。
- **不允许重复值**:Set 接口中不允许存在相同的元素。
#### ArrayList 与 LinkedList 区别
1. **共同点**:两者都实现了 `List` 接口。
2. **ArrayList**:
- 底层使用数组实现。
- 在尾端插入和访问数据效率较高。
3. **LinkedList**:
- 使用双向链表实现。
- 在列表中间或头部插入效率较高,但访问数据时效率较低。
#### Array 与 ArrayList 区别
- **Array**:原始数据结构,固定大小。
- **ArrayList**:
- 封装了动态数组,提供更丰富的功能。
- 可以自动扩展大小。
- 提供了更多的操作方法。
#### Map 特点
- **键值对存储**:Map 使用键值对形式存储数据。
- **无序**:Map 中元素的存储顺序是不确定的。
- **不允许重复键**:Map 中不允许出现重复的键。
#### JDBC 操作步骤
1. **加载驱动**:使用 `Class.forName()` 加载相应的数据库驱动。
2. **打开连接**:通过 `DriverManager.getConnection()` 获取数据库连接。
3. **执行 SQL**:创建 `Statement` 或 `PreparedStatement` 对象执行 SQL 语句。
4. **处理结果**:使用 `ResultSet` 处理查询结果。
5. **关闭资源**:确保关闭所有打开的资源(如 `Connection`, `Statement`, `ResultSet`)。
#### 防止 SQL 注入
- 使用 `PreparedStatement` 替代 `Statement`,参数化查询可以有效避免 SQL 注入攻击。
#### 调用存储过程
- 使用 `CallableStatement` 对象来调用存储过程。
#### 数据库连接池
- **概念**:连接池是一种管理数据库连接的技术,它可以重复利用已建立的连接,减少每次新建连接的成本。
- **优点**:
- 提高性能:减少了连接数据库的时间开销。
- 资源管理:通过管理连接数量,避免过多连接导致的资源浪费。
- 易于配置和维护:简化数据库配置过程。
#### 数据源技术
- **常见技术**:Dbcp, c3p0 等。
- **优势**:
- 稳定性和安全性:c3p0 相比 Dbcp 更稳定且安全。
- 简化配置:通过外部配置文件管理数据库信息,便于维护。
#### Java IO 流分类
- **按功能分**:
- 输入流(`InputStream`)
- 输出流(`OutputStream`)
- **按类型分**:
- 字节流(如 `FileInputStream`、`FileOutputStream`)
- 字符流(如 `FileReader`、`FileWriter`)
#### 常用 IO 类
- 文件操作:`File`
- 文件输入流:`FileInputStream`
- 文件输出流:`FileOutputStream`
- 缓冲输入流:`BufferedInputStream`
- 缓冲输出流:`BufferedOutputStream`
- 打印写入:`PrintWriter`
- 字符输入流:`FileReader`
- 字符输出流:`FileWriter`
- 缓冲字符输入流:`BufferedReader`
- 缓冲字符输出流:`BufferedWriter`
- 对象输入流:`ObjectInputStream`
- 对象输出流:`ObjectOutputStream`
#### 字节流与字符流区别
- **字节流**:按 8 位传输数据。
- **字符流**:按 16 位传输数据。
#### final、finalize()、finally
- **final**:关键字,用于声明不可变变量或方法。
- **finalize()**:方法,用于对象销毁前进行资源清理。
- **finally**:代码块标志,用于 `try-catch` 结构中,确保某些代码无论是否发生异常都会被执行。
#### 抽象类与接口的区别
- **抽象类**:
- 可以包含抽象方法和具体实现。
- 子类必须实现所有抽象方法。
- 支持单一继承。
- **接口**:
- 全部方法默认为抽象方法。
- 支持多实现。
- 可以声明常量。
#### 线程同步方法
- **wait()**:使当前线程进入等待状态。
- **notify()**:唤醒正在等待的单个线程。
- **notifyAll()**:唤醒所有等待的线程。
#### 线程与进程的区别
- **进程**:资源分配的基本单位。
- **线程**:CPU 调度的基本单位。
- **关系**:
- 一个进程可以拥有多个线程。
- 同一进程内的线程共享进程资源。
- 线程间通信简单,进程间通信相对复杂。
以上内容总结了文档中提到的 Java 相关知识点,并对每个知识点进行了详细的解释。这些知识点涵盖了 Java 中常见的数据结构、数据库操作、IO 操作以及多线程编程等方面的基础知识,对于理解和准备 Java 面试具有重要的参考价值。
向前齐步走
- 粉丝: 60
- 资源: 2904
最新资源
- 【未发表】基于极光优化算法PLO优化集成学习结合鲁棒极限学习机RELM-Adaboost实现负荷数据回归预测算法研究附Matlab代码.rar
- 【未发表】基于减法平均优化算法SABO优化宽度学习BLS实现光伏数据预测算法研究附Matlab代码.rar
- 【未发表】基于减法平均优化算法SABO优化集成学习结合鲁棒极限学习机RELM-Adaboost实现负荷数据回归预测算法研究附Matlab代码.rar
- 【未发表】基于减法平均优化算法SABO优化集成学习结合核极限学习机KELM-Adaboost实现风电数据时序预测算法研究附Matlab代码.rar
- 【未发表】基于减法平均优化算法SABO优化鲁棒极限学习机RELM实现负荷数据回归预测算法研究附Matlab代码.rar
- 【未发表】基于金豺优化算法GJO优化集成学习结合鲁棒极限学习机RELM-Adaboost实现负荷数据回归预测算法研究附Matlab代码.rar
- 【未发表】基于金豺优化算法GJO优化集成学习结合核极限学习机KELM-Adaboost实现风电数据时序预测算法研究附Matlab代码.rar
- 【未发表】基于金豺优化算法GJO优化宽度学习BLS实现光伏数据预测算法研究附Matlab代码.rar
- 【未发表】基于金豺优化算法GJO优化鲁棒极限学习机RELM实现负荷数据回归预测算法研究附Matlab代码.rar
- 【未发表】基于金枪鱼优化算法TSO优化集成学习结合核极限学习机KELM-Adaboost实现风电数据时序预测算法研究附Matlab代码.rar
- 【未发表】基于金枪鱼优化算法TSO优化宽度学习BLS实现光伏数据预测算法研究附Matlab代码.rar
- 【未发表】基于金枪鱼优化算法TSO优化鲁棒极限学习机RELM实现负荷数据回归预测算法研究附Matlab代码.rar
- 【未发表】基于金枪鱼优化算法TSO优化集成学习结合鲁棒极限学习机RELM-Adaboost实现负荷数据回归预测算法研究附Matlab代码.rar
- 【未发表】基于鲸鱼优化算法WOA优化宽度学习BLS实现光伏数据预测算法研究附Matlab代码.rar
- 【未发表】基于鲸鱼优化算法WOA优化集成学习结合鲁棒极限学习机RELM-Adaboost实现负荷数据回归预测算法研究附Matlab代码.rar
- 【未发表】基于鲸鱼优化算法WOA优化集成学习结合核极限学习机KELM-Adaboost实现风电数据时序预测算法研究附Matlab代码.rar