JAVA企业面试题精选 OOP 11-20

2.11.是否可以继承String类?

参考答案:

  String类是final类,故不可以继承

2.12.阐述一下static关键字的作用

参考答案:

  static表示”静态”的意思,用来修饰成员变量和成员方法,也可以形成静态代码块.只要这个类被加载,Java虚拟机就能根据类名在运行时数据区的方法区找到它们.因此staitc成员可以在它的任何对象创建之前访问,无需引用任何对象.
  1)修饰成员变量.用static修饰的成员变量不属于对象的数据结构;static变量是属于类的变量,通常可以通过类名来引用static成员;static成员变量和类的信息一起存储在方法区,而不是在堆中,一个类的static成员变量只有”一份”,无论该类创建了多少对象.
  2)修饰成员方法.static修饰的方法则不需要针对某些对象进行操作,其运行结果仅与输入的参数有关,调用时直接用类名引用.由于static在调用时没有具体的对象,因此在static方法中不能对非static成员(对象成员)进行访问.static方法的作用在于提供一些”工具方法”和”工厂方法”等.
  3)static块:属于类的代码块,在类加载期间执行的代码块,只执行一次,可以用来在软件中加载静态资源.

2.13.解释Java关键字的含义及用法

1)abstract
2)extends
3)final/finally
4)implements
5)import
6)instanceof
7)synchronized
8)throw/throws

参考答案:

1)abstract:抽象,修饰类和方法.含有abstract方法的类是抽象类,抽象方法主要是为了让子类继承实现.
2)extends:继承,子类通过继承父类来添加变量或方法,或者覆盖父类的方法;子接口继承父借口来添加方法.
3)final/finally:final用于定义常量.finally用来执行一段代码,不管在前面定义的try语句中是否有异常或运行时错误发生.
4)implements:在类的声明中是可选的,用来指明当前类实现的接口.
5)import:在源文件的开始部分指明后面将要引进的一个类或整个包.
6)instanceof:判断其指向对象的实际类型.
7)synchronized:修饰方法或方法块.防止多个线程同时访问这个类中的synchronized块.
8)throw/throws:throw允许用户抛出一个exception对象或者任何实现throwable的对象.throws用在方法的声明中来说明哪些异常这个方法是不处理的,而是提交到程序的更高一层.

2.14.静态变量和实例变量的区别?

参考答案:

  静态变量也称为类变量,归全类共有,它不依赖于某个对象,可通过类名直接访问,而实例变量必须依存于某一实例,只能通过对象才能访问到它.

2.15.GC是什么?为什么要有GC?

参考答案:

  GC是垃圾回收的意思(Gabage Collection),内存处理是编程人员容易出现问题的地方,忘记或者错误的内存回收会导致程序或系统的不稳定甚至崩溃,Java提供的GC功能可以自动检测对象是否超过作用域从而达到自动回收内存的目的.Java程序员编程的时候不用考虑变量不用时释放内存,Java虚拟机可以自动判断出并回收垃圾.

2.16.件数垃圾回收的优点和原理.并举例2中回收机制

参考答案:

  Java语言中一个显著的特点就是引入了垃圾回收机制,使C++程序员最头疼的内存管理的问题迎刃而解,它使得Java程序员在编写程序的时候不再需要考虑内存管理.由于有个垃圾回收机制,Java中的对象不再有”作用域”的概念,只有对象的引用才有”作用域”.垃圾回收可以有效的防止内存泄漏,有效的使用可以使用的内存.
  垃圾回收器通常是作为一个单独的低级别的线程运行,不可预知的情况下对内存堆中已经死亡的或者长时间没有使用的对象进行清除和回收,程序员不能实时的调用垃圾回收器对某个对象或所有对象进行垃圾回收.
1)增量收集器
  增量收集器把堆栈分为多个域,每次仅从一个域收集垃圾.这会造成较小的应用程序中断.
2)分代收集器
  这种收集器把堆栈分为两个或多个域,用以存放不同寿命的对象.JVM生成的新对象一般放在其中的某个域中.过一段时间,继续存在的对象将获得使用期并转入更长寿命的域中.分代收集器对不同的域使用不同的算法以优化性能.

2.17.接口是否可继承接口?抽象类是否可实现(implements)接口?抽象类是否可继承实体类(concrete class)?

参考答案:

1)接口可以继承接口
2)抽象类可以实现(implements)接口
3)抽象类可继承实体类

2.18.public class MyString extends String{}有什么错?

参考答案:

  String类是final类,不能被继承.

2.19.子类A继承父类B,A a = new A();则父类B构造函数,父类B静态代码块,父类B非静态代码块,子类A构造函数,子类A静态代码块,子类A非静态代码块执行的先后顺序是?

参考答案:

父类B静态代码块->子类A静态代码块->父类B非静态代码块->父类B的构造函数->子类A非静态代码块->子类A构造函数

2.20.简述”类(class)”,”类库(class library)”,”包(package)”,”jar文件”这四个概念间的联系

参考答案:

1)类(class)实际上是对某种类型的对象定义变量和方法的原型.它表示对现实生活中一类具有共同特征的事物的抽象.
2)为了更好地组织类,Java提供了包机制.包(package)是类的容器,用于分隔类名空间.
3)类库(class library)是用来实现各种功能的类的集合.
4)jar文件用于发布和使用类库,可被编译器和JVM直接使用.

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值