Java面试关键点:作用域、集合与多线程

需积分: 0 1 下载量 127 浏览量 更新于2024-10-11 收藏 41KB DOCX 举报
"Java面试题库,包含了Java面试中常见的问题和对应答案,涉及范围包括但不限于作用域、集合类的区别、字符编码、多线程以及类的构造执行顺序等核心知识点。" 在Java编程语言中,面试题通常涵盖了许多基础到高级的概念。以下是基于给定内容的一些关键知识点的详细解释: 1. **作用域访问修饰符**:在Java中,有四种基本的作用域访问修饰符:`public`, `private`, `protected` 和默认(友好)访问权限。它们决定了类成员(如变量、方法)的可见性范围: - `public`:任何地方都能访问。 - `protected`:同一包内的类、子类和不同包下的子类可以访问。 - `friendly`(默认):仅限于同一包内的类访问。 - `private`:仅限于定义它的类内部访问。 2. **ArrayList和Vector的区别**: - **同步性**:`Vector` 是线程安全的,即所有操作都是同步的,适合多线程环境;而 `ArrayList` 不是线程安全的,适合单线程或已经做了同步处理的多线程环境。 - **增长策略**:当需要增加容量时,`Vector` 默认增长为其当前容量的两倍,而 `ArrayList` 增长为当前容量的一半。这可能影响到性能,尤其是频繁插入元素时。 3. **HashMap和Hashtable的区别**: - **历史背景**:`Hashtable` 是较早的类,基于 `Dictionary`,而 `HashMap` 是在Java 1.2引入的,实现了 `Map` 接口。 - **同步性**:同样,`Hashtable` 是线程安全的,`HashMap` 不是。 - **值**:`HashMap` 允许使用 `null` 作为键或值,而 `Hashtable` 不允许。 4. **char型变量存储中文**:在Java中,`char` 类型使用Unicode编码,每个 `char` 占16位,因此可以存储包括中文在内的大多数Unicode字符。 5. **多线程实现**: - **创建方式**:创建多线程有两种主要方式:一是通过继承 `Thread` 类,二是实现 `Runnable` 接口并将其传递给 `Thread` 的构造函数。 - **同步机制**:Java提供了多种同步手段,如 `synchronized` 关键字(用于方法或代码块),以及对象的 `wait()`, `notify()` 和 `notifyAll()` 方法(用于线程间通信)。 6. **类的执行顺序**: - 在继承关系中,父类的构造器会在子类构造器之前执行。给出的例子中,首先会输出 "FatherClassCreate",然后输出 "ChildClassCreate",这是因为子类的构造器首先调用父类的无参构造器,接着执行自己的构造逻辑。 这些面试题反映了Java程序员应该掌握的基本技能和理解,包括面向对象设计、集合框架、线程管理和内存管理等核心概念。熟悉这些知识点对于通过Java面试和在实际开发中解决问题至关重要。