失效链接处理 |
JAVA软件开发工程师面试题整合 PDF 下载
本站整理下载:
相关截图:
![]()
主要内容:
1、垃圾回收的优点和原理。并考虑2种回收机制。
答案:
Java语言中一个显著的特点就是引入了垃圾回收机制,使c++程序员最头疼的内存管理的问题迎刃而解,它使得Java程序员在编写程序的时候不再需要考虑内存管理。
由于有个垃圾回收机制,Java中的对象不再有"作用域"的概念,只有对象的引用才有"作用域"。
优点:垃圾回收可以有效的防止内存泄露,有效的使用可以使用的内存。
原理:垃圾回收器通常是作为一个单独的低级别的线程运行,不可预知的情况下对内存堆中已经死亡的或者长时间没有使用的对象进行清楚和回收,程序员不能实时的调用垃圾回收器对某个对象或所有对象进行垃圾回收。
回收机制:有分代复制垃圾回收和标记垃圾回收,增量垃圾回收。
2、GC是什么? 为什么要有GC?
答案:
GC是垃圾收集的意思(Gabage Collection),内存处理是编程人员容易出现问题的地方,忘记或者错误的内存回收会导致程序或系统的不稳定甚至崩溃,Java提供的GC功能可以自动监测对象是否超过作用域从而达到自动回收内存的目的,Java语言没有提供释放已分配内存的显示操作方法。
3、final, finally, finalize的区别。
答案:
final 用于声明属性,方法和类,分别表示属性不可变,方法不可覆盖,类不可继承。 内部类要访问局部变量,局部变量必须定义成final类型。
finally是异常处理语句结构的一部分,表示总是执行。
finalize是Object类的一个方法,在垃圾收集器执行的时候会调用被回收对象的此方法,可以覆盖此方法提供垃圾收集时的其他资源回收,例如关闭文件等。
4、使用final关键字修饰一个变量时,是引用不能变,还是引用的对象不能变?
答案:
使用final关键字修饰一个变量时,是指引用变量不能变,引用变量所指向的对象中的内容还是可以改变的。
例如,对于如下语句: final StringBuffer a=new StringBuffer("immutable");
执行如下语句将报告编译期错误: a=new StringBuffer(""); 但是,执行如下语句则可以通过编译: a.append(" broken!");
有人在定义方法的参数时,可能想采用如下形式来阻止方法内部修改传进来的参数对象: public void method(final StringBuffer param){ } 实际上,这是办不到的,在该方法内部仍然可以增加如下代码来修改参数对象: param.append("a");
5、构造器Constructor是否可被override?
答案:
构造器Constructor不能被继承,因此不能重写Override,但可以被重载Overload。
6、面向对象的特征有哪些方面?
答案:
面向对象的三大特征:1.继承 2.封装 3.多态性
(1)继承:就是保留父类的属性,扩展新的东西。通过子类可以实现继承,子类继承父类的所有状态和行为,同时添加自身的状态和行为。
(2)封装:就是类的私有化。将代码及处理数据绑定在一起的一种编程机制,该机制保证程序和数据不受外部干扰。
(3)多态:是允许将父对象设置成为和一个和多个它的子对象相同的技术。包括重载和重写。 重载是同一个类中多态的一种表现形式,重写是父类和子类之间的一种多态的表现形式。
7、Overload和Override的区别。Overloaded的方法是否可以改变返回值的类型?
答案:
Overload是重载的意思,Override是覆盖的意思,也就是重写。
重载Overload表示同一个类中可以有多个名称相同的方法,但这些方法的参数列表各不相同(即参数个数或类型不同)。它是一个类中多态性的一种表现。返回值类型可以相同也可以不相同,无法以返回型别作为重载函数的区分标准。
重写Override:在Java中,子类可继承父类中的方法,而不需要重新编写相同的方法。但有时子类并不想原封不动地继承父类的方法,而是想作一定的修改,这就需要采用方法的重写。方法重写又称方法覆盖。 若子类中的方法与父类中的某一方法具有相同的方法名、返回类型和参数表,则新方法将覆盖原有的方法。 如需父类中原有的方法,可使用super关键字,该关键字引用了当前类的父类。
8、是否可以从一个static方法内部发出对非static方法的调用?
答案:
不可以。
因为非static方法是要与对象关联在一起的,必须创建一个对象后,才可以在该对象上进行方法调用,而static方法调用时不需要创建对象,可以直接调用。也就是说,当一个static方法被调用时,可能还没有创建任何实例对象,如果从一个static方法中发出对非static方法的调用,那个非static方法是关联到哪个对象上的呢?这个逻辑无法成立,所以,一个static方法内部发出对非static方法的调用。
9、error和exception有什么区别?
|