Java 30道面试题及答案.docx

preview
需积分: 0 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
上传资源 快速赚钱
voice
center-task 前往需求广场,查看用户热搜

最新资源