JAVA常见面试题库及解答(6)

void play();

  }

  interface Bounceable

  {

  void play();

  }

  interface Rollable extends Playable, Bounceable

  {

  Ball ball = new Ball("PingPang");

  }

  class Ball implements Rollable

  {

  private String name;

  public String getName()

  {

  return name;

  }

  public Ball(String name)

  {

  this.name = name;

  }

  public void play()

  {

  ball = new Ball("Football");

  System.out.println(ball.getName());

  }

  }

  答案: 错。"interface Rollable extends Playable, Bounceable"没有问题。interface可继承多个interfaces,所以这里没错。问题出在interface Rollable里的"Ball ball = new Ball("PingPang");"。任何在interface里声明的interface variable (接口变量,也可称成员变量),默认为public static final。也就是说"Ball ball = new Ball("PingPang");"实际上是"public static final Ball ball = new Ball("PingPang");"。在Ball类的Play()方法中,"ball = new Ball("Football");"改变了ball的reference,而这里的ball来自Rollable interface,Rollable interface里的ball是public static final的,final的object是不能被改变reference的。因此编译器将在"ball = new Ball("Football");"这里显示有错。

  8)请说一下java中为什么要引入内部类?还有匿名内部类?(瞬联,IBM)

  9)请说一下final,finally和finalize的区别?(瞬联)

  final 用于声明属性,方法和类,分别表示属性不可变,方法不可覆盖,类不可继承。

  finally是异常处理语句结构的一部分,表示总是执行。

  finalize是Object类的一个方法,在垃圾收集器执行的时候会调用被回收对象的此方法,可以覆盖此方法提供垃圾收集时的其他资源回收,例如关闭文件等。

  10)请说一下HTTP请求的基本过程(IBM)

  11)java中存在内存泄漏问题吗?请举例说明?(IBM)

  会

  int i,i2; return (i-i2); //when i为足够大的正数,i2为足够大的负数。结果会造成溢位,导致错误。

  12)请说一下java中的内存回收机制所采用的算法(IBM,瞬联)

  虽然垃圾回收关心着大部分的问题,包括内存管理,使得程序员的任务显得更加轻松,但是程序员还是可能犯些错误导致内存泄漏问题。GC(垃圾回收)通过递归对所有从“根”对象(堆栈中的对象,静态数据成员,JNI句柄等等)继承下来的引用进行工作,然后标记所有可以访问的活动着的对象。而这些对象变成了程序唯一能够操纵的对象,其他的对象都被释放了。因为GC使得程序不能够访问那些被释放的对象,所以这样做是安全的。

  

本文已影响6827
上一篇:华图面试题目及参考答案 下一篇:软件测试面试题库及参考答案

相关文章推荐

|||||