Java面试必备:异常处理、接口、垃圾回收与线程同步

需积分: 0 1 下载量 110 浏览量 更新于2024-07-29 收藏 53KB DOCX 举报
所有处于等待状态的线程,效果同上,但会唤醒所有等待该对象的线程。 在Java面试中,这些问题涉及到的核心知识点如下: 1. 异常处理:Java的异常处理机制是通过`try-catch-finally`块来实现的。当程序中发生异常时,会抛出一个异常对象,这个对象可以通过`catch`块捕获并处理。异常分为检查型异常(必须捕获或声明)和运行时异常(非检查型异常),如`IOException`是检查型,`NullPointerException`是运行时异常。异常类都是继承自`Throwable`的。 2. 接口与虚类:Java的接口(Interface)是一种完全抽象的类型,它不包含任何方法实现,只定义了方法签名。接口的实现采用`implements`关键字,一个类可以实现多个接口。相比之下,C++的虚类(Virtual Class)允许多继承,具有方法的实现,但可能会导致菱形问题(即一个类同时继承了两个有共同父类的类,形成菱形结构,可能导致冲突)。Java为了避免菱形问题,选择了单继承但支持接口的策略。 3. 垃圾回收(Garbage Collection, GC):GC是Java的一大特性,自动回收不再使用的内存空间,防止内存泄漏。Java的垃圾回收器使用不同的算法进行垃圾收集,如分代收集(Young Generation, Tenured Generation等)、标记-清除、复制算法等。GC线程通常在后台运行,无法精确控制其执行时间。 4. 线程同步:在多线程环境中,线程同步用于确保共享资源的安全访问。Java提供了多种同步机制,如`synchronized`关键字(可以修饰方法或代码块,实现互斥访问),`wait()`, `notify()`, `notifyAll()`这些是Object类的方法,用于线程间的通信。`wait()`让当前线程等待,释放锁;`notify()`唤醒一个等待该对象锁的线程,`notifyAll()`唤醒所有等待的线程。此外,还有`ReentrantLock`可重入锁,`Semaphore`信号量,`CountDownLatch`计数器等高级同步工具。 5. Java内存模型(JMM):Java内存模型规定了线程如何访问共享变量,以及如何保证数据的一致性。它定义了主内存和工作内存的概念,线程之间的通信以及可见性都受到JMM的约束。 6. 面向对象设计原则:在面试中,面试官可能会考察你对SOLID原则的理解,包括单一职责原则(SRP)、开闭原则(OCP)、里氏替换原则(LSP)、接口隔离原则(ISP)和依赖倒置原则(DIP)。 7. 设计模式:常见的设计模式如工厂模式、单例模式、观察者模式、装饰者模式、代理模式、建造者模式等,都是面试中的常见话题。 8. 集合框架:对ArrayList、LinkedList、HashSet、HashMap等集合类的理解,以及它们的性能特点、操作差异和适用场景。 9. 并发编程:Java并发库(java.util.concurrent)提供的工具类,如ExecutorService、Future、Callable、CompletableFuture等,以及并发容器如ConcurrentHashMap、CopyOnWriteArrayList等。 以上就是Java面试题中涉及的一些关键知识点,理解和掌握这些内容对于准备Java面试至关重要。