论坛首页 招聘求职论坛

Core Java题目快速回答(摘)

浏览 26635 次
精华帖 (0) :: 良好帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2007-05-28  
Godlikeme 写道
ls,好像是c++!


如果JAVA不是这样设计的,那我会很惊讶。 
0 请登录后投票
   发表时间:2007-05-28  
应该是类同的。
但是这样也不太准确,方法不会有多份,但每个对象会有一个方法表。
0 请登录后投票
   发表时间:2007-05-28  
Godlikeme 写道
应该是类同的。
但是这样也不太准确,方法不会有多份,但每个对象会有一个方法表。


我的意思是,类的方法就一份,类只有一个,然而类的对象会有无数个。
0 请登录后投票
   发表时间:2007-05-28  
Java的Class在虚拟机中只会保存一份对该类的方法定义,在该Class被load进来的时候完成这个工作。

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

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


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

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

以上只是常识,书本知识而已,掌握了没什么了不起~~~~~~没掌握似乎也没影响
0 请登录后投票
   发表时间:2007-05-28  
还没有给题目答案呢,
0 请登录后投票
   发表时间:2007-05-28  
zhuyi8319 写道
还没有给题目答案呢,


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

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

你的回帖属于“灌水”,和我这个回帖一样,可能被投隐藏扣分
0 请登录后投票
   发表时间:2007-05-28  
Qieqie 写道


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



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

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


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


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


凡事都有个度,没必要这么偏颇。在一定限度内了解一些底层的知识不是什么坏事。
而且做java不一定都是开发j2ee, java的应用领域那么广泛, 所以需要有广泛的知识储备才行。
0 请登录后投票
   发表时间:2007-05-28  
Qieqie 写道
Java的Class在虚拟机中只会保存一份对该类的方法定义,在该Class被load进来的时候完成这个工作。

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

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


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

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

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


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

基本上没什么问题吧。
但对于这个红字是有问题的,因为读也有 data race 的问题。
0 请登录后投票
   发表时间:2007-05-28  
貌似我应该没直接说“不懂JVM怎么能玩好JAVA”,虽有嫌疑。反正这个论点可能有点武断,但是如果能搞懂JVM却有助从更根本的地方掌握JAVA语言,或者说玩好了,有时出现“怪异”的事情时,也能胸有成竹解决之。
(JVM本来就是JAVA的OS,想想OS的重要性就是了)。
(说JVM重要的人-包括现在的我-不代表他就能完全精通JVM。我绝对没有完全精通JVM,但一般的JVM/OS知识我有去了解,我能感觉到对我有用)

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


0 请登录后投票
论坛首页 招聘求职版

跳转论坛:
Global site tag (gtag.js) - Google Analytics