Java陷阱一箩筐----面试题集5

 
谈谈 final, finally, finalize 的区别。

第二, Anonymous Inner Class ( 匿名内部类 ) 是否可以 extends( 继承 ) 其它类,是否可以 implements( 实现 )interface( 接口 )?

第三, Static Nested Class Inner Class 的不同,说得越多越好 ( 面试题有的很笼统 )

第四, & && 的区别。
第五, HashMap Hashtable 的区别。
第六, Collection Collections 的区别。

第七,什么时候用 assert

第八, GC 是什么 ? 为什么要有 GC? ( 基础 )

第九, String s = new String("xyz"); 创建了几个 String Object?

第十, Math.round(11.5) 等於多少 ? Math.round(-11.5) 等於多少 ?
第十一, short s1 = 1; s1 = s1 + 1; 有什么错 ? short s1 = 1; s1 += 1; 有什么错 ?
第十二, sleep() wait() 有什么区别 ? 搞线程的最爱

 
第十三, Java 有没有 goto?

第十四,数组有没有 length() 这个方法 ? String 有没有 length() 这个方法?

第十五, Overload Override 的区别。 Overloaded 的方法是否可以改变返回值的类型 ?

第十六, Set 里的元素是不能重复的,那么用什么方法来区分重复与否呢 ? 是用 == 还是 equals()? 它们有何区别 ?

第十七,给我一个你最常见到的 runtime exception

第十八, error exception 有什么区别 ?


第十九, List, Set, Map 是否继承自 Collection 接口 ?

第二十, abstract class interface 有什么区别 ?

第二十一, abstract method 是否可同时是 static, 是否可同时是 native ,是否可同时是 synchronized?

第二十二,接口是否可继承接口 ? 抽象类是否可实现 (implements) 接口 ? 抽象类是否可继承实体类 (concrete class)?

第二十三,启动一个线程是用 run() 还是 start()?

 
第二十四,构造器 Constructor 是否可被 override?

第二十五,是否可以继承 String ?
第二十六,当一个线程进入一个对象的一个 synchronized 方法后,其它线程是否可进入此对象的其它方法 ?

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


第二十八,编程题 : 用最有效率的方法算出 2 乘以 8 等於几 ?

第二十九,两个对象值相同 (x.equals(y) == true) ,但却可有不同的 hash code ,这句话对不对 ?

第三十,当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递 ?


第三十一, swtich 是否能作用在 byte 上,是否能作用在 long 上,是否能作用在 String ?

第三十二,编程题 : 写一个 Singleton 出来。
第三十三 Hashtable HashMap
Hashtable
继承自 Dictionary 类,而 HashMap Java1.2 引进的 Map interface 的一个实现
HashMap 允许将 null 作为一个 entry key 或者 value ,而 Hashtable 不允许
还有就是, HashMap Hashtable contains 方法去掉了,改成 containsvalue containsKey 。因为 contains 方法容易让人引起误解。
最大的不同是, Hashtable 的方法是 Synchronize 的,而 HashMap 不是,在
多个线程访问 Hashtable 时,不需要自己为它的方法实现同步,而 HashMap
就必须为之提供外同步。
Hashtable HashMap 采用的 hash/rehash 算法都大概一样,所以性能不会有很大的差异。
 
*********************** 第一个人的补充  abcdhy(程旭) **********************************
上面的答案有问题 :!!! 我把有争议的几个列出来 :
第二, Anonymous Inner Class ( 匿名内部类 ) 是否可以 extends( 继承 ) 其它类,是否可以 implements( 实现 )interface( 接口 )?
匿名的内部类是可以 extends( 继承 ) 其它类的 , 这个我做过测试 .
第十一, short s1 = 1; s1 = s1 + 1; 有什么错 ? short s1 = 1; s1 += 1; 有什么错 ?
short s1 = 1; s1 += 1 
也不是正确。 其中 short s1 = 1 这句会出错的 , 因为 1 int
第十六, Set 里的元素是不能重复的,那么用什么方法来区分重复与否呢 ? 是用 == 还是 equals()? 它们有何区别 ?
Set
里的元素是不能重复的,那么用 iterator() 方法来区分重复与否。 equals() 是判读两个 Set 是否相等。  这个答案也不正确 , Set 区分重复元素是有具体子类来实现的 .
第二十六,当一个线程进入一个对象的一个 synchronized 方法后,其它线程是否可进入此对象的其它方法 ?
不能,一个对象的一个 synchronized 方法只能由一个线程访问。
这个也有问题 , 一个线程进入一个对象的一个 synchronized 方法后 , 这个线程占有了该对象的同步锁 . 其他线程是不能进入此对象的其它同步方法的 , 因为其他线程得不到该对象的同步锁 . 但其他线程可以入此对象的其它非同步方法 , 因为进入非同步方法 , 不需要同步锁 .
第二十九,两个对象值相同 (x.equals(y) == true) ,但却可有不同的 hash code ,这句话对不对 ?
不对,有相同的 hash code    按照 Java 的编码规范 , x.equals(y) == true ,hash code 一定一样 , 但这只是编码规范 , 自己编程的时候可以不这么做 , 一样可以正常运行 .
第三十,当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递 ?
是值传递。 Java 编程语言只由值传递参数。当一个对象实例作为一个参数被传递到方法中时,参数的值就是对该对象的引用。对象的内容可以在被调用的方法中改变,但对象的引用是永远不会改变的。
, 居然说:对象的引用是永远不会改变 ,对象的引用是什么 , 是内存地址 (uint), 怎么变啊 . 传值还是传引用 , 是针对 " 对象 " 来说的 对一个 " 对象的引用 " 来说是 : 传值还是传引用 , 有意义吗 ??
我简单看了一下 , 大家有什么意见可以一起讨论 !!
*********************** 第三个人的回答  abcdhy(程旭) **********************************
第一,谈谈 final, finally, finalize 的区别。
太简单
第二, Anonymous Inner Class ( 匿名内部类 ) 是否可以 extends( 继承 ) 其它类,是否可以 implements( 实现 )interface( 接口 )?
都可以
第三, Static Nested Class Inner Class 的不同,说得越多越好。
static
类不存在和外围类的关联
第四, & && 的区别。
太简单
第五, HashMap Hashtable 的区别。
太简单
第六, Collection Collections 的区别。
太简单 : 前者是接口 , 或者是一个应用类
第七,什么时候用 assert
调试吧
第八, GC 是什么 ? 为什么要有 GC?
不用说
第九, String s = new String("xyz"); 创建了几个 String Object?
废话 , 当然是一个 , 别说引用是对象
第十, Math.round(11.5) 等於多少 ? Math.round(-11.5) 等於多少 ?
我晕
第十一, short s1 = 1; s1 = s1 + 1; 有什么错 ? short s1 = 1; s1 += 1; 有什么错 ?
前者编译不了
第十二, sleep() wait() 有什么区别 ?
前者自己睡 , 后者等别人
第十三, Java 有没有 goto?
关键字 , 没有用
第十四,数组有没有 length() 这个方法 ? String 有没有 length() 这个方法 ?
数组是属性 ,String 是方法
第十五, Overload Override 的区别。 Overloaded 的方法是否可以改变返回值的类型 ?
重载和覆盖
第十六, Set 里的元素是不能重复的,那么用什么方法来区分重复与否呢 ? 是用 == 还是 equals()? 它们有何区别 ?
废话 ! 怎么会用 ==?
第十七,给我一个你最常见到的 runtime exception
NullPointerException
第十八, error exception 有什么区别 ?
错误和异常 , 严重度不一样
第十九, List, Set, Map 是否继承自 Collection 接口 ?
Map
不是
第二十, abstract class interface 有什么区别 ?
这个也问 ?
第二十一, abstract method 是否可同时是 static, 是否可同时是 native ,是否可同时是 synchronized?
我猜 : 不能
第二十二,接口是否可继承接口 ? 抽象类是否可实现 (implements) 接口 ? 抽象类是否可继承实体类 (concrete class)?
当然可以
第二十三,启动一个线程是用 run() 还是 start()?
废话 ,start
第二十四,构造器 Constructor 是否可被 override?
有点可笑
第二十五,是否可以继承 String ?
noway
第二十六,当一个线程进入一个对象的一个 synchronized 方法后,其它线程是否可进入此对象的其它方法 ?
当然可以
第二十七, try {} 里有一个 return 语句,那么紧跟在这个 try 后的 finally {} 里的 code 会不会被执行,什么时候被执行,在 return 前还是后 ?
当然是 return
第二十八,编程题 : 用最有效率的方法算出 2 乘以 8 等於几 ?
我考 int sb=2<<3;
第二十九,两个对象值相同 (x.equals(y) == true) ,但却可有不同的 hash code ,这句话对不对 ?
这个问题是 sb 问给 sb .
可以有不同的 hashCode, 但是 java 不建议这样
第三十,当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递 ?
这个问题又是 sb 问给 sb
是传值 , 但是这个值是一个引用
第三十一, swtich 是否能作用在 byte 上,是否能作用在 long 上,是否能作用在 String ?
int
第三十二,编程题 : 写一个 Singleton 出来
双重 check 无效

你可能感兴趣的:(J2SE)