Java面试必备:基础、多线程与集合区别详解

需积分: 0 1 下载量 39 浏览量 更新于2024-09-21 收藏 15KB DOCX 举报
在Java面试过程中,面试官经常会针对语言的基础知识、数据结构和并发处理能力提出一系列问题。以下是一些关键知识点的详细解析: 1. **作用域** - Java中的访问权限控制由`public`, `protected`, `default` (即不明确指定) 和 `private` 四种关键字定义。- `public` 可被任何类访问,无论在哪一个包中;- `protected` 在当前类及其子类中可用,且在同一个包内的其他类中也可以访问;- `default`(不写时的默认)在同一个包内有效,仅限于同一个类的成员;- `private` 只在定义它的类内部可见,对外部不可见。理解这些区别有助于确保代码的封装性和安全性。 2. **ArrayList和Vector** - Vector是线程安全的集合,但在性能上相对较慢,因为它在添加元素时会创建新的数组并复制所有元素。相比之下,ArrayList是非线程安全的,但增长方式更高效,只在必要时扩大容量。- 当涉及到多线程环境时,除非明确需要线程安全,否则ArrayList通常更受欢迎。 3. **HashMap和Hashtable** - 这两个都是键值对存储的数据结构。Hashtable基于早期的Dictionary类,是线程安全的,不允许null键值对。HashMap是Java 1.2引入的,非线程安全,但允许null键值对,提供了更好的性能,尤其是在单线程环境下。 4. **char类型与中文字符** - Java中的`char`类型可以存储Unicode字符,包括中文字符,因为一个`char`占16个字节,足以容纳一个完整的汉字。这体现了Java对于国际化支持的能力。 5. **多线程和同步** - Java中实现多线程主要有两种方法:- 继承`Thread`类,重写`run()`方法;- 实现`Runnable`接口,并通过`Thread`的构造函数传入实例。- 同步控制主要通过`synchronized`关键字来实现,以及`wait()`和`notify()`方法进行线程间的协作。 6. **类继承与执行顺序** - 在Java的类继承中,子类的构造函数会在父类构造函数之后执行。如果面试题目中给出的是选择题,关于子类执行顺序的问题,通常会考察你对构造函数调用的理解,例如"ChildClassCreate"会在"FatherClassCreate"之后输出。 以上知识点展示了Java面试中可能会涉及的关键领域,掌握它们可以帮助你在面试中表现出扎实的基础和深入理解。在准备面试时,不仅要熟悉这些概念,还要能灵活运用到实际问题中去。