`
Qieqie
  • 浏览: 337808 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

Core Java题目快速回答(摘)

阅读更多
Core Java题目快速回答(摘),判断题,每题限制10秒


类定义了其包含的数据和方法成员,所以,JVM中每个对象都将拥有一个独立的数据和方法成员内存区?
使用synchronized声明实例方法,则,并发调用该对象的这个方法是同步的?
使用synchronized声明实例方法,则,并发调用该类所有实例的这个方法是同步的?
因为sleep方法属于Thread类,所以可以调用某个线程的sleep方法,使它在某个时间点到达时暂停一段时间后再继续运行?
因为notify方法和wait方法和线程相关,所以他们在Thread类中定义?
要使当前线程等待某个某种事件,应该调用该线程的wait方法?
当某个期待的事件发生时,应该调用该事件的nofify或notifyAll方法通知正在等待的线程?

祝你回答顺利
分享到:
评论
52 楼 manmoon 2007-05-28  
大家讨论挺激烈阿
呵呵
如果你想彻底了解JVM我觉得你还是拜读源代码吧。或者说你该把C搞好一些。
光靠看书本上怎么说就认为自己掌握了,尽信书不如无书啊。
你知道这些和不知道这些知识的人一样,因为大家所追求的不同。
对于老板,能带来效率就行
对于自己,能赚到钱就行。
个人愚见,我喜欢技术,但是我不崇拜技术。
51 楼 ken1984 2007-05-28  
是的,JVM懂了确实对做JAVA有帮助,但不是每个人都应该懂,这也不是基本的吧。如果是,那大家的基础都不行了吗,怎么还能做出那么多东西呢?
50 楼 Qieqie 2007-05-28  
貌似我应该没直接说“不懂JVM怎么能玩好JAVA”,虽有嫌疑。反正这个论点可能有点武断,但是如果能搞懂JVM却有助从更根本的地方掌握JAVA语言,或者说玩好了,有时出现“怪异”的事情时,也能胸有成竹解决之。
(JVM本来就是JAVA的OS,想想OS的重要性就是了)。
(说JVM重要的人-包括现在的我-不代表他就能完全精通JVM。我绝对没有完全精通JVM,但一般的JVM/OS知识我有去了解,我能感觉到对我有用)

底层这个无底洞,不能说一概不知,但也适可而止,两个极端都不行。


49 楼 Godlikeme 2007-05-28  
Qieqie 写道
Java的Class在虚拟机中只会保存一份对该类的方法定义,在该Class被load进来的时候完成这个工作。

该类的每一个对象,只是保持该对象的数据成员而已,不会每个对象都保存一份独立的方法定义副本。
调用该对象的方法时,只是在所执行的线程的方法调用栈中增加一个方法执行情况记录:记录该本次对被执行方法的局部变量的中间值等。

这也从本根上说明了,定义在方法内部的局部变量是多线程安全的(每个线程都保持一份不同的执行数据副本),
只要该方法只是使用局部变量,不会对全局变量进行“写”操作,或者使用的全局共享资源(如DataSource)是线程安全的,便可以称该方法是线程安全的,Spring的XxxxTemplate方法大部分属于此类型。


ps:现象解释:为什么过多的递归调用会outofmemoryerror

因为每个方法调用都是往调用栈增加一个元素,过多的调用,这个栈就会越来越大,超过java规定的长度就会抛出这个异常

以上只是常识,书本知识而已,掌握了没什么了不起~~~~~~没掌握似乎也没影响


能说道这个程度已经不容易了,估计没看过jvm深入浅出还是有点难度地,

基本上没什么问题吧。
但对于这个红字是有问题的,因为读也有 data race 的问题。
48 楼 solospider 2007-05-28  
ken1984 写道
Qieqie 写道


以上只是常识,书本知识而已,掌握了没什么了不起~~~~~~没掌握似乎也没影响


楼主说的,不懂JVM怎么能玩好JAVA?相反不懂TCP/IP协议以及整个网络模型各层的作用,怎么用好SOCKET?如果你懂IP如何分片,TCP分组如何重组,懂得知道什么是MTU,MSS,滑窗协议,阻塞窗口,那你就可以最大限度的利用网络资源,并且可以防止发送过量数据导致网络阻塞等等等等,这些系统都给你做好了,API都给你指好了路,你顺着用就行了,要想挖底层,我估计你最后会拿起物理媒体,电子信号,通信之类的书本。因为上层要把数据发给其他机器还得通过更底层的物理层,转化成电信号后通过物理媒体传输。


凡事都有个度,没必要这么偏颇。在一定限度内了解一些底层的知识不是什么坏事。
而且做java不一定都是开发j2ee, java的应用领域那么广泛, 所以需要有广泛的知识储备才行。
47 楼 ken1984 2007-05-28  
Qieqie 写道


以上只是常识,书本知识而已,掌握了没什么了不起~~~~~~没掌握似乎也没影响



既然是这样也就不用拿来考核别人的能力了;

另外说一句关于底层的,大家还是往UNIX/LINUX方向走,绝对能满足你对底层的渴望。楼主说的,不懂JVM怎么能玩好JAVA?相反不懂TCP/IP协议以及整个网络模型各层的作用,怎么用好SOCKET?如果你懂IP如何分片,TCP分组如何重组,懂得知道什么是MTU,MSS,滑窗协议,阻塞窗口,那你就可以最大限度的利用网络资源,并且可以防止发送过量数据导致网络阻塞等等等等,这些系统都给你做好了,API都给你指好了路,你顺着用就行了,要想挖底层,我估计你最后会拿起物理媒体,电子信号,通信之类的书本。因为上层要把数据发给其他机器还得通过更底层的物理层,转化成电信号后通过物理媒体传输。
46 楼 Qieqie 2007-05-28  
zhuyi8319 写道
还没有给题目答案呢,


题目答案、对错似乎不重要~~~~
有用到相关应用时,到时翻翻书自己搞明白就是了

要答案可以给我发站内消息要阿

你的回帖属于“灌水”,和我这个回帖一样,可能被投隐藏扣分
45 楼 zhuyi8319 2007-05-28  
还没有给题目答案呢,
44 楼 Qieqie 2007-05-28  
Java的Class在虚拟机中只会保存一份对该类的方法定义,在该Class被load进来的时候完成这个工作。

该类的每一个对象,只是保持该对象的数据成员而已,不会每个对象都保存一份独立的方法定义副本。
调用该对象的方法时,只是在所执行的线程的方法调用栈中增加一个方法执行情况记录:记录该本次对被执行方法的局部变量的中间值等。

这也从本根上说明了,定义在方法内部的局部变量是多线程安全的(每个线程都保持一份不同的执行数据副本),
只要该方法只是使用局部变量,不会对全局变量进行“写”操作,或者使用的全局共享资源(如DataSource)是线程安全的,便可以称该方法是线程安全的,Spring的XxxxTemplate方法大部分属于此类型。


ps:现象解释:为什么过多的递归调用会outofmemoryerror

因为每个方法调用都是往调用栈增加一个元素,过多的调用,这个栈就会越来越大,超过java规定的长度就会抛出这个异常

以上只是常识,书本知识而已,掌握了没什么了不起~~~~~~没掌握似乎也没影响
43 楼 ken1984 2007-05-28  
Godlikeme 写道
应该是类同的。
但是这样也不太准确,方法不会有多份,但每个对象会有一个方法表。


我的意思是,类的方法就一份,类只有一个,然而类的对象会有无数个。
42 楼 Godlikeme 2007-05-28  
应该是类同的。
但是这样也不太准确,方法不会有多份,但每个对象会有一个方法表。
41 楼 ken1984 2007-05-28  
Godlikeme 写道
ls,好像是c++!


如果JAVA不是这样设计的,那我会很惊讶。 
40 楼 Godlikeme 2007-05-28  
恩,打住,不值得
39 楼 抛出异常的爱 2007-05-28  
楼上
到此打住。。。。

38 楼 Qieqie 2007-05-28  
temp0_0 写道
中国不缺象楼主这样的沙比,自以为底层的东西知道的多就牛X了,其实不懂得,真正的大型软件的架构才更重要,向microsoft的office,其中肯定有许多所谓的底层的东西,但更重要的如何做出功能庞大,性能优越,宜用性好的东西,这就是软件架构的任务了,同时还有管理方面的卓越才能,象楼主这样的考法,估计就孤芳自赏吧



删除回复。

本来是语气很强硬地回复了这个人的帖子,
而后我又进入看了这位temp0_0的博客,看了她的帖子,让我直摇头,故删除原先的回复,实没有必要为这样的文字进行反驳!


37 楼 Godlikeme 2007-05-28  
ls,好像是c++!
36 楼 ken1984 2007-05-28  
要想性能优越又不懂底层,,有点可笑。


看来还有很多人不明白类的方法和数据成员对于所有对象是独立还是共享的
以下可做参考:
class   test  
  {  
  int   a;  
  public:  
  int   fun();  
  }  
  用test类做解释  
  1.类数据成员指的是a,类成员函数指的是fun  
  因为每个类对a的存储是不一样的,所以当然需要每一个类都自己有a的
一份拷贝。  
  但fun函数只个一个类的操作,每一个操作的代码都是一样的(存储在代码区域),为什么要留有多份呢??没有必要的,所以一份就够了。  
  /*  
  (定义了A的3个对象a1、a2、a3)他们自己都有存储类数据成员的地址,但A的函数就只有一份。  
  */  
它通过传递进来的this指针的不同来区分不同的object的数据,object虽不同,class却是同一个。  
35 楼 temp0_0 2007-05-27  
中国不缺象楼主这样的沙比,自以为底层的东西知道的多就牛X了,其实不懂得,真正的大型软件的架构才更重要,向microsoft的office,其中肯定有许多所谓的底层的东西,但更重要的如何做出功能庞大,性能优越,宜用性好的东西,这就是软件架构的任务了,同时还有管理方面的卓越才能,象楼主这样的考法,估计就孤芳自赏吧
34 楼 icefire 2007-05-25  
多核时代来了!
不过JAVA的桌面程序还是不行!!
导致多线程编程用的很少!
33 楼 eonhy 2007-05-23  
考SCJP的时候,那些题目不久是要求你把自己脑瓜子当作JVM来考虑程序代码的运行状态么?

相关推荐

Global site tag (gtag.js) - Google Analytics