锁定老帖子 主题:JAVA程序员面试32问,你能回答多少题?
精华帖 (0) :: 良好帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2006-12-13
而且答案中的单例模式的种类也是不正确的,目前用的最多的单例模式都没有阐述,struts和spring中的单例模式都是把类实例放到一个map中,有的话就从map中拿,没有的话就建一个放进去,这不也是单例吗
|
|
返回顶楼 | |
发表时间:2006-12-15
[quote="Lucas Lee"][quote="zhuixinjian"] 第二,Anonymous Inner Clas* (匿名内部类) 是否可以**tends(继承)其它类,是否可以implements(实现)inte***ce(接口)? 匿名的内部类是没有名字的内部类。不能extends(继承) 其它类,但一个内部类可以作为一个接口,由另一个内部类实现。 [/quote] 是谁写的这个答案?我写了个小程序试过了,这个答案是不成立的。巧的是,我面试的时候人家还问了我这个问题。匿名内部类是可以继承具体类的,当然不是用extends 关键字,而是是用实现接口同样的语法,比如: Object o1=new Object(){}; 我的程序如下: [code] package test; public class Test1 { public static void main(String[] args) { Object o1=new Object(){ @Override public int hashCode(){ return 10; } }; System.out.println(o1.hashCode()); } } [/code][/quote] 没看明白哪个匿名内部类继承了具体类了。
|
|
返回顶楼 | |
发表时间:2006-12-15
Lucas Lee 写道 zhuixinjian 写道 第二,Anonymous Inner Clas* (匿名内部类) 是否可以**tends(继承)其它类,是否可以implements(实现)inte***ce(接口)? 匿名的内部类是没有名字的内部类。不能extends(继承) 其它类,但一个内部类可以作为一个接口,由另一个内部类实现。 是谁写的这个答案? 我写了个小程序试过了,这个答案是不成立的。巧的是,我面试的时候人家还问了我这个问题。 匿名内部类是可以继承具体类的,当然不是用extends 关键字,而是是用实现接口同样的语法,比如: Object o1=new Object(){}; 我的程序如下: package test; public class Test1 { public static void main(String[] args) { Object o1=new Object(){ @Override public int hashCode(){ return 10; } }; System.out.println(o1.hashCode()); } } 没看明白哪里继承了具体类了。 |
|
返回顶楼 | |
发表时间:2006-12-16
zhuixinjian 写道 第十二,sleep() 和 wait() 有什么区别? 搞线程的最爱 sleep()方法是使线程停止一段时间的方法。在sleep 时间间隔期满后,线程不一定立即恢复执行。这是因为在那个时刻,其它线程可能正在运行而且没有被调度为放弃执行,除非(a)“醒来”的线程具有更高的优先级,(b)正在运行的线程因为其它原因而阻塞。 wait()是线程交互时,如果线程对一个同步对象x 发出一个wait()调用,该线程会暂停执行,被调对象进入等待状态,直到被唤醒或等待时间到。 第二十六,当一个线程进入一个对象的一个synchronized方法后,其它线程是否可进入此对象的其它方法? 不能,一个对象的一个synchronized方法只能由一个线程访问。 这两道关于线程的题楼主都答错了。 第十二:最关键的区别是:sleep()不会释放当前线程拥有的对象monitor,wait()会释放当前线程拥有的(被调用)对象monitor。 第二十六:其它线程可以进入此对象的非synchronized方法。 |
|
返回顶楼 | |
发表时间:2006-12-16
zhuixinjian 写道 第二十九,两个对象值相同(x.equals(y) == true),但却可有不同的hash code,这句话对不对? 不对,有相同的hash code。 这个答案也不准确。 对象的equals方法和hashCode方法是可以自己override的,因此在两个对象equals成立的情况下,hashCode是可以不一样的。只是不提倡这样实现hashCode()方法。 其实在大多数实际情况下都不会为对象实现hashCode()方法,因此在多数情况下当两个对象equals成立时,其hashCode不一样(采用Object类的确省实现,由对象的内部地址转换而来,不同的对象不一样)。 |
|
返回顶楼 | |
发表时间:2006-12-16
Java基础还是比较重要的。我在上一个公司就遇到过别的项目组负责人写的多线程程序在运行一段时间后出故障,自己研究了两天没找到什么问题,归咎于是Java系统的bug。我仔细看过他的代码后,经过与他交流,才发现是他自己把Java的一些基本语法语义理解错了,导致了多个线程并发访问同一个对象的错误。
|
|
返回顶楼 | |
发表时间:2006-12-16
ddandyy 写道 引用 第二十六,当一个线程进入一个对象的一个synchronized方法后,其它线程是否可进入此对象的其它方法?
不能,一个对象的一个synchronized方法只能由一个线程访问。 可以进入此对象的其他synchronized或非synchronized方法... |
|
返回顶楼 | |
发表时间:2006-12-16
okhaoba 写道 ddandyy 写道 引用 第二十六,当一个线程进入一个对象的一个synchronized方法后,其它线程是否可进入此对象的其它方法?
不能,一个对象的一个synchronized方法只能由一个线程访问。 可以进入此对象的其他synchronized或非synchronized方法... 这种说法不对,此对象的其他synchronized方法也不能进入。 |
|
返回顶楼 | |
发表时间:2006-12-18
null
不小心发了个帖,结果论坛没有删除功能 |
|
返回顶楼 | |
发表时间:2006-12-24
第26题是这样子的,一个类可以声明多个synchronized方法,同时只能有一个线程访问synchronized方法中的一个,互斥锁是加在对象上的,而这不影响其他线程访问其他非synchronized方法。
|
|
返回顶楼 | |