Java面试必备知识:异常处理、线程操作与内存管理

需积分: 9 0 下载量 20 浏览量 更新于2024-09-30 收藏 49KB TXT 举报
"这是一份整理的JAVA面试试题集,包含了关于JAVA语言特性和异常处理等多个方面的知识点,适合准备JAVA面试者复习使用。" 1. 异常处理对比: 在C++中,异常处理使用try-catch-finally结构,而在JAVA中,异常也是通过try-catch-finally来捕获和处理。但JAVA有其独特之处,例如,JAVA支持多异常捕获,一个catch块可以捕获多种类型的异常。此外,JAVA中存在两种异常:Error和Exception。Error通常表示系统级错误,如虚拟机错误,而Exception是程序运行时可能出现的需要处理的异常。 2. 类与继承的区别: JAVA中的类不支持多重继承,但可以通过接口实现多态性。类的访问修饰符也与C++不同,JAVA默认类成员是包内可见(package-private),而C++默认是私有的(private)。JAVA中抽象类的声明使用abstract关键字,并且抽象方法没有方法体,而C++中抽象类是通过包含纯虚函数来定义的。 3. 字符串操作差异: JAVA字符串是不可变对象,创建新的字符串会生成新的对象,而C++中的字符串可以修改。在JAVA中,字符串拼接使用"+"操作符会产生新的字符串对象,频繁操作可能导致性能问题。因此,建议使用StringBuilder或StringBuffer类进行字符串的拼接。 4. 线程同步方法: - wait():使当前线程等待,释放持有的锁,进入等待状态,直到被其他线程调用notify()或notifyAll()唤醒。 - sleep():让当前线程休眠指定时间,不释放锁,醒来后继续执行。 - notify():唤醒等待在同一对象锁上的一个线程。 - notifyAll():唤醒所有等待同一对象锁的线程。 5. 析构函数: JAVA中没有像C++那样的析构函数,而是使用 finalize() 方法,它在垃圾回收器准备回收对象时被调用,用于清理资源。但不能依赖 finalize() 来确保资源的释放,因为垃圾回收的时间不确定。 6. final关键字: final在JAVA中用于声明不可变的对象、变量和类。final变量一旦赋值就不能改变,final类不能被继承,final方法不能被重写。 7. 内存区域: JAVA内存分为堆(Heap)和栈(Stack)。堆主要存储对象实例,而栈则存储基本类型和对象引用。栈内存的分配和回收速度较快,但空间有限;堆内存用于存储大型数据,垃圾回收机制负责管理。 8. 堆栈详解: 堆内存是全局的,所有线程共享,用于存放对象实例。而栈内存是线程私有的,每个方法调用都会创建一个栈帧,用于存储局部变量表、操作数栈、动态链接、方法出口等信息。 9. long类型溢出: JAVA中的long类型是64位,如果需要存储超过long类型最大值的数值,可以自定义大整数类,如示例中的BigInt,通过数组或其他方式实现。 10. 图形对象的表示: 在JAVA中,可以使用Point、Line、Rectangle、Triangle等图形类来表示和操作图形。这些类通常位于java.awt包下,提供了绘制和操作图形的方法。 11. 关键字final、finally、finalize: - final:修饰变量、方法和类,表示不可变或不可继承。 - finally:异常处理中,无论是否发生异常,finally块中的代码总会被执行。 - finalize():对象被垃圾回收前,系统会调用此方法,用于清理资源,但并不保证一定会执行。 这些知识点涵盖了JAVA的基础语法、异常处理、多线程、内存管理以及图形编程等多个方面,对于理解JAVA语言和准备面试非常有帮助。