Java 17道基础面试题.docx

preview
需积分: 0 0 下载量 33 浏览量 更新于2023-06-14 收藏 15KB DOCX 举报
Java 是一种广泛使用的面向对象的编程语言,其丰富的特性和强大的功能使得它在软件开发领域占据了重要的地位。以下是一些基于给定文件标题和描述的知识点详解: 1. **ArrayList, Vector, LinkedList 的存储性能和特性** - ArrayList 和 Vector 都基于数组实现,提供了按索引访问元素的能力。ArrayList 更加轻量级,不保证线程安全,适合单线程环境。Vector 是线程安全的,但在多线程环境下,它的同步机制降低了性能。 - LinkedList 使用双向链表,适用于频繁的插入和删除操作,因为这些操作只需修改链表节点的引用。然而,按索引访问元素的效率较低,因为它需要从头或尾部遍历链表。 2. **HashMap 和 Hashtable 的区别** - HashMap 是非线程安全的版本,比Hashtable 效率更高。它允许null键和值,而Hashtable不允许。 - Hashtable 是遗留类,早在Java诞生之初就被引入,它是线程安全的,但随着并发库的出现,通常推荐使用 ConcurrentHashMap 进行线程安全的哈希映射。 3. **Set 中元素的唯一性** - Set 不允许元素重复,使用 equals() 方法来判断元素是否重复。迭代器(iterator())可用于遍历并检查元素是否存在,而 equals() 方法用于比较两个集合是否相等,即它们的元素完全相同。 4. **static 方法与非 static 方法** - 不能从一个 static 方法内部直接调用非 static 方法,因为 static 方法与类关联,而非 static 方法与类的实例关联。在 static 方法中调用非 static 方法需要先创建对象实例。 5. **跳出多重嵌套循环** - 使用 `break` 关键字可以直接跳出最内层的循环,`return` 语句则可以结束整个方法的执行,包括跳出所有嵌套循环。 6. **try-finally 语句** - finally 块中的代码总是会被执行,无论是否发生异常或者是否有 return 语句。它通常用于确保清理操作的执行,如关闭文件或网络连接。 7. **对象参数传递** - Java 中的所有参数传递都是值传递。对于对象,传递的是对象的引用副本,而不是对象本身。这意味着,即使在方法内部改变了对象的属性,原始对象也会受到影响,因为它们引用同一个内存位置。 8. **char 型变量与中文字符** - Java 的 char 类型采用 Unicode 编码,每个字符占用16位,因此可以存储包括中文在内的多种字符。 9. **线程同步方法** - 线程同步是为了防止多个线程同时访问共享资源,导致数据不一致。常见的方法包括:synchronized 关键字、wait()、notify() 和 notifyAll()。 10. **多线程实现与同步实现** - 多线程实现:通过继承 Thread 类或实现 Runnable 接口。 - 同步实现:synchronized 关键字(方法或代码块)、wait(), notify(), notifyAll() 这些基于对象监视器的方法。 11. **抽象类与接口** - 抽象类可以有数据成员和非抽象方法,可以作为其他类的基类。一个类只能继承一个抽象类。 - 接口只包含抽象方法和常量,不支持数据成员。一个类可以实现多个接口,体现了多态性。 以上就是根据给定文件标题和描述所涵盖的一些核心 Java 知识点,这些概念对于理解和编写高质量的 Java 代码至关重要。