面试中的常见问题

来源:互联网 发布:暮色谷的新域名问题 编辑:程序博客网 时间:2024/06/10 05:55

1、try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候被执行,还是在return之后执行?

finally{}里面的代码块无论try catch代码块里面的内容是否执行他都会执行的。而且是在return之前执行的。但是finally{}里面的代码块不会影响到return的结果,也就是说在执行finally{}之前程序已经把结果存放到内存中了,等所有程序执行完之后就返回执行结果。

2、error和exception有什么区别?

error通常指的是系统级别的错误,或者说不需要应用程序来处理的问题,或者是运行环境中的硬件问题。常见的error有:系统内存溢出,空间资源不足的问题。

exception指的是我们在开发代码的时候对有些可能出现的异常会做一些预处理,当程序运行的时候捕获到的异常或者抛出去的异常把他们叫exception。而对于exception又区分为运行时异常和检查异常,运行时异常就是说代码可以正常编译,但是在程序执行的时候出现异常,常见的有空指针异常NullpointerException以及indexOutOfBoundsException(数组下标越界)。检查异常是说编译的时候就出现异常信息导致无法成功编译,我们必须先处理这些异常信息之后才能正常编译。最常见的就是IoException。

error是不可预知控制的, 而exception是在开发过程中可以避免的。

3、抽象类和接口的区别?

  • 接口中没有任何方法体,而且都必须定义成public或者默认类型的抽象方法,用来被继承。而抽象类中可以有非抽象的方法,并且抽象类中的访问修饰符可以用public、protected。
  • 抽象类属于类的范畴,所以抽象类中可以有普通的非抽象的方法,这里包括构造方法,但是抽象类中的构造方法是不能被直接调用。因为抽象类不能实现实例,但是继承了它的子类可以把它当作超类,用super.的方法去调用它。
  • 抽象类中可以有普通成员变量,但是接口不行,抽象类和接口中都允许有静态成员变量,但是接口中的只能用public static 来修饰,相当于一个静态变量。
  • 抽象类属于类的范畴,所以它满足实现多个接口,继承单个抽象类。
  • 接口可以继承接口,抽象类可以实现接口,如果实体中有明确的构造函数那么抽象类可以继承实体类。

0 0
原创粉丝点击