Java面试深度解析:垃圾回收、线程同步与集合类

5星 · 超过95%的资源 需积分: 3 109 下载量 54 浏览量 更新于2024-09-12 收藏 88KB DOC 举报
"Java面试知识点汇总" 在Java编程领域,面试中常常会涉及到一系列核心概念和技术。以下是基于给定文件信息的详细知识点解析: 1. **垃圾回收(Garbage Collection, GC)** - **优点**:自动管理内存,避免内存泄露,确保程序稳定运行,程序员无需手动释放内存。 - **原理**:GC通过识别并清除不再使用的对象来回收内存。常见的垃圾回收机制有: - **分代复制**:将内存分为新生代和老年代,根据对象的生命周期差异采取不同的回收策略。 - **标记**:遍历所有对象,标记存活的对象,未被标记的对象被视为垃圾。 - **增量**:将垃圾回收过程分解为多个小步,减少长时间阻塞应用的影响。 2. **线程同步** - **方法**:Java提供了多种线程同步机制,以防止多个线程同时访问共享资源造成数据不一致。 - **wait()**:释放对象锁,让其他线程有机会获取该锁。 - **sleep()**:暂停当前线程的执行,释放CPU资源,但不释放锁。 - **notify()**:唤醒一个等待在该对象上的线程,使其进入可运行状态,但不保证立即执行。 - **notifyAll()**:唤醒所有等待在该对象上的线程,它们会竞争锁以执行。 3. **集合类** - **List**:有序列表,允许重复元素,支持按索引访问。ArrayList和Vector是实现,ArrayList性能通常优于Vector,因为它是非同步的。 - **Map**:存储键值对,不保证元素顺序。HashMap、TreeMap等是常见实现,HashMap提供快速访问,而TreeMap则保持键的排序。 4. **JVM加载class文件** - **原理机制**:Java类加载由ClassLoader及其子类完成。当需要使用某个类时,JVM会查找对应的字节码文件,经过验证、准备、解析三个阶段,最终初始化类,使其可供程序使用。 5. **字符类型(char)** - **存储中文**:Java的char类型使用Unicode编码,每个char占用16位(2个字节),因此可以存储一个中文字符。 6. **多线程实现与同步** - **多线程实现**: - 继承`Thread`类,重写`run()`方法。 - 实现`Runnable`接口,创建`Thread`实例,传入`Runnable`对象。 - **线程同步**: - **synchronized** 关键字:用于方法或代码块,确保同一时间只有一个线程执行特定代码。 - **wait()**/**notify()**/**notifyAll()**:配合`synchronized`实现线程间的通信。 - **Lock** 接口和实现:如`ReentrantLock`,提供了更细粒度的控制,如公平锁、非公平锁以及尝试加锁、定时加锁等。 以上知识点涵盖了Java基础、内存管理、并发编程和虚拟机等多个方面,是Java面试中常见的问题,掌握这些内容对于提升面试成功概率至关重要。