java面试题目汇总

preview
需积分: 0 0 下载量 197 浏览量 更新于2018-08-04 收藏 73KB DOC 举报
Java 面试题是程序员在求职过程中经常遇到的挑战,涵盖了许多核心概念和技术。以下是对题目中涉及的一些关键知识点的详细解析: 1. **访问控制符**:在Java中,有四种访问控制符:`public`、`private`、`protected`和默认(无修饰符)。`public`成员可以在任何地方被访问;`private`成员只在同一个类内部可访问;`protected`成员在同包内和子类中可访问;默认修饰符的成员在同一包内可访问,不同包的子类不可访问。 2. **ArrayList vs Vector**: - **同步性**:`ArrayList`是非线程安全的,而`Vector`是线程安全的。这意味着在多线程环境下,`Vector`的性能可能更低,因为它对每个操作都进行了同步。 - **数据增长**:`Vector`默认增长容量为原来的两倍,而`ArrayList`增长为原来的一半。这可能导致`Vector`在内存管理上更保守,但可能会导致更多的内存碎片。 3. **HashMap vs Hashtable**: - **历史背景**:`Hashtable`是较早的实现,基于`Dictionary`类,而`HashMap`是Java 1.2引入的,实现了`Map`接口。 - **同步性**:如同`ArrayList`和`Vector`的情况,`Hashtable`是线程安全的,`HashMap`则不是。 - **值**:`HashMap`允许使用`null`作为键或值,而`Hashtable`则不允许。 4. **Collection 和 Collections**: - **Collection**:这是Java集合框架的基础接口,代表了一组对象,这些对象也称为元素。例如,`List`、`Set`都是它的子接口。 - **Collections**:这是一个工具类,提供了对集合的各种操作方法,如排序、查找、填充等。 5. **输入输出(IO)**: - **File对象**:`isFile()`用于检查文件是否为普通文件,`getAbsolutePath()`返回文件的完整路径。 - **BufferedReader 和 BufferedWriter**:这两个类用于高效地进行字符流的读写,它们通过缓冲区提升性能。 - **FileInputStream 和 FileOutputStream**:这两个类处理字节流,用于读写二进制数据,如图片、音频等。 - **InputStream 和 OutputStream**:这是所有输入流和输出流的基类,分别用于读取和写出原始字节数据。 - **Reader 和 Writer**:与InputStream/OutputStream相对,它们处理字符流,用于读取和写出字符数据,支持Unicode编码。 6. **名词解释**: - **实体类**:通常指具有持久化能力的类,如在数据库操作中使用的类,它们通常映射到数据库中的表。 - **RandomAccessFile**:提供了随机访问文件的能力,可以定位到文件的任意位置进行读写。 7. **流的类型**: - **Java IO**中主要有字节流和字符流两大类,包括输入流和输出流。常见的抽象类如`InputStream`和`OutputStream`代表字节流,`Reader`和`Writer`代表字符流。 8. **流的继承关系**: - Java的流体系结构非常丰富,例如`InputStream`有`FileInputStream`、`BufferedInputStream`等子类,`Reader`有`InputStreamReader`、`BufferedReader`等子类。它们提供了多种特定功能的实现。 掌握这些基本概念和技术对于Java程序员来说至关重要,因为它们构成了Java编程的核心部分,并且在面试中常常会被问到。了解并熟练应用这些知识点能帮助你在面试中表现出色。