的一个抽象概念, 表示的一些类看上去不同 的类具有本质上相同的概念.抽象类的父类和子类是 is-a 的关系. interface 是并不要求实现类和 interface 的定义在概念上是一致的, 而仅仅是实现了 interface 的行为而已. 22. abstract method 是否同时是 static, 是否同时是 native, 是否同时 synchronized? 都不是 23. 接口是否可以继承接口? 抽象类是否可实现接口? 抽象类是否继承实体类(concrete class)? 接口可以继承接口, 抽象类可以实现接口, 抽象类可以继承实体类 24. 启动一个线程使用 run() 还是 start() ? 启动线程是用 start()方法 25. 构造器 Constructor 是否可以被 override? 构造器不可以被 override 26. 是否可以继承 String 类? 不可以, 因为 String 是被 final 修饰符限定了的 27. 当一个线程进入一个对象的 synchronized 方法后, 其他线程是否可以进入此对象的其 他方法? 当线程进入一个对象的 synchronize 方法后, 其他线程可以访问这个对象的非 synchronized 方法, 但是不可以访问 synchronized 方法. 28. try{} 里有一个 return 语句, 那么紧跟在 try 后 finally{} 里 code 会不会被执行, 什 么时候被执行, 是在 return 前还是后? 会被执行, 在 return 前 29. 用最有效率的方法算出 2 乘以 8 等于几? 2 >>> 3 30. 两个对象值相同(x.equals(y) = = true), 但却有不同的 hashCode, 这句话对不对? 不对, equal 方法必须和 hashCode 方法保持一致, 如果实现者没有做到这一点, 编译器也 不会报错, 但这是一个严重的隐患 31. 当以对象被当做参数传递一个方法后, 此方法可改变这个对象的属性, 并可返回变化的 结果, 那么这里到底是值传递还是引用传递? 值传递(注:这个问题困扰过我, 解疑参见: javadude/articl
es/passbyvalue.htm) 32. switch 是否能用在 byte 上面, 是否能作用在 long 上, 是否能作用在 String 上? switch 能用在 int short char byte 四个类型上, long 和 String 都不对
33. 如果 A 引用了 B, B 引用了 A, 这种情况 JVM 如何经行垃圾回收? 首先这种情况用 count reference 方法是回收不了的, 采用跟踪法可以回收, 即从 GC roots 开始遍历对象形成一个引用链, 如果不在这个链中即垃圾.GC roots 包含以下对象:栈 里的临时变量; 静态变量; JNI 引用到的变量 34. 编程写一个 Singleton 来 方式一: public class Singleton() { private Singleton() {} private Singleton instance = new Singleton(); public static Singleton getInstance() { return instance; } } 方式二: public class Singleton() { private Singleton() {} private Singleton instance; public static synchronized Singleton getInstance() { if (instance == null) { instance = new Singleton(); } return instance; } }