每一个好的.NET开发者都应该能够回答问题,并且对这个问题的内容和方法印象深刻,因此,同样的精神,我问这个问题是为了Java/JavaEE开发者。
你认为一个好的Java/JavaEE程序员能回答什么问题?
我将这个问题标记为社区wiki,因为它不是特定于用户的,它的目标是为整个编程社区服务。
期待一些惊人的反应。
编辑:请按照评论中的建议回答问题,这样人们也可以学习有关语言的新知识。
- 为什么这个问题不能得到与.NET问题相似的回答?
- 上帝啊:)一年前,有人问了.NET问题,而这个问题刚过一天,你正在比较答案。
- 为了让一些统计数据引起注意,.net问题最后一次回答是在2008年12月13日,所以这个问题的最后一次回答也是1岁的时候:)
- 你为什么不编辑你的问题并加上一句话"请回答你自己的问题",这样人们甚至可以学到一些东西(新的)。
- "当前企业版的缩写是什么";)
- 这就像是SCJP考试的学习指南。
- 爱因斯坦的轶事……一天,爱因斯坦的一位同事向他要了电话号码。爱因斯坦找到了一个电话号码簿,查了一下。"你不记得自己的号码了吗?"那人吓了一跳,问道。"不,"爱因斯坦回答。为什么我要记住我能从书中轻易得到的东西?"我能接触到每个人吗?是的,我知道,爱因斯坦没有面对面试官…
- 我很高兴能及时回答。我说,"我不知道。"(马克吐温)
- 我在stackoverflow.com/questions/5265846/hellip;上看到了这个问题,我也在投票结束这个问题。
- 忽略"你的最爱是什么…"的格式,如果"答案"的要求从一开始就存在的话,这将是非常有用的。
hashcode()和equals()之间的关系是什么?这些方法的意义是什么?实施它们的要求是什么?
- 是的,每个开发人员至少应该意识到这些问题,即使在实践中不一定会遇到它们。
- 在javaTeaFododo.COM/Tea/Java/EngalHasH.HTML中的均衡器()和HASCODE()
集合、映射和列表有什么区别?
在电话采访中有多少人不认识这个,我仍然感到惊讶。
- 当然,但是在网络上查看文档是20秒的事情("Java集合框架"),所以许多有价值的人可能不愿意把它保存在内存中。
- 不,对不起,不要买,这是每个开发人员都应该知道的基本知识。
- 我想说的是,任何一个想在软件领域工作的人不仅需要理解这一点,还需要了解不同类型列表(arraylist/linkedlist)之间的差异。不一定是最好的实现,甚至不一定是O(N)符号,而是理解何时使用什么是正确的。
- + 1 @乔恩:我通常订阅"不需要记住细节"的学派,但是如果你根本不知道这些基本接口之间的基本概念差异,那么你肯定不是一个好的Java开发者。
- 约阿希姆:你可以从你的声明中删除"Java"这个词。集合、映射和列表是基本的算法概念。
- 很多开发人员只是使用列表。我遇到了一个不幸的人,他写了一些方法来实现列表周围的集合语义。+作为一个简单但有用的问题,找出某人是否有半点线索。
- 如何使Java EE开发者具备资格?
- 我同意。如果你不知道这个简单的事情,我就不会雇佣你。
- @Balusc Javaee开发人员不使用集合或其他什么?:)
Can an interface extend multiple
interfaces?
大多数人回答"否",因为他们知道Java没有多重继承。但是一个接口仍然可以扩展多个接口(但是一个类不能扩展多个类)。这不会导致钻石问题。
如果答案是"不",面试官应该问"为什么禁止?"然后你开始考虑它,你应该意识到它没有问题。
所以你在面试中(自己)学到了一些东西,你向面试官展示了你能够对类、对象、继承、多态性等进行推理。事实上,这比一个心中有数却不明白为什么的候选人要好得多。
- 昨天我把一个C++讲师和钻石遗产问题搞糊涂了,她根本不知道。
- 有一次有人问我这个问题,我回答"不"。我觉得是压力加上我回答得太快了。对你从不使用的东西总是很难知道答案。
- 我在课文中做了更多的阐述。回答"不"实际上没问题。这个问题的好处在于,它是引发关于OO概念讨论的好方法,并了解候选人的原因。如果面试官你只是想听到"是",那么这实际上是毫无意义的。接口的多重继承实际上并不是人们所知道的那样普遍。
- 这个问题的一个更棘手的版本是"Java支持多重继承吗?"答案"有点"只针对接口
在方法调用中使用final关键字。例如,为什么下面代码中的方法测试没有给出任何编译错误,尽管使用了方法参数的最终限定符。
ZZU1〔0〕
- 我很想知道这个问题的答案。听起来很有趣。
- @雷切尔:原因是final关键字应用于Name对象,而不是类Name的Name字段。
- 参数n被声明为最终参数,这意味着它不能在test方法体中重新分配。它不会导致错误,因为方法test不尝试重新分配参数,它只在参数上设置一个属性…n = new Name("test");会导致编译错误…
- 添加到@rjohnston的注释中:使用final for方法参数不能确保类实例的不可变。如果需要不可变性,那么类(本例中的名称)的设计应该是这样的(例如,本例中不提供setter)
- 感谢大家分享宝贵的信息。我非常感谢你在这方面的投入。
- 我搞糊涂了。上面确实给出了一个编译错误。测试方法所属的公共类在哪里?另外,最后一个关键字似乎没有效果-我看不到这个例子显示了什么…?
- 很抱歉,我注意到name类的ctr是私有的,将其更改为public。示例不完整(它们是代码段)。为了消除编译错误:a.用name"b"创建一个公共类。创建另一个具有方法"test"c的公共类(test)。在test中,有一个主要方法创建name(name n=new name("hello")。在main中创建测试实例并调用test new test().test(n)。final关键字不能确保正在传递的实例不被修改,它可以确保引用指向同一个实例。在"test"中添加行:n=新名称("kind")会产生编译错误。
一个肯定是字符串的比较。两者之间的差异
String helloWorld ="Hello World";
helloWorld =="Hello World";
"Hello World".equals(helloWorld);
- 很肯定你需要做一些像新字符串("你好,世界")之类的事情。字符串常量不是从池中提取的吗,就像intern()的效果一样,因此这两个语句都是真的吗?
- javatechniques.com/blog/string-equality-and-interning
技巧问题:Java中引用引用的参数是什么?
令人惊讶的是,有多少人仍然重复着"原语是通过价值传递的,对象是通过引用传递的"这句咒语。
- 我完全同意你的看法。我在这场讨论中挣扎了很久。
- 我想发布"Java是按值传递还是通过引用传递?"但担心会引起网络争论
- 我认为大多数人都有权这样做。这并不是一个永无止境的争论,因为只有一个正确答案,即使是Java规范所说的,IIrC。:)
- 我希望我能不止一次地对此进行升级——我在开发过程中确实遇到了这种微妙之处,了解真正发生的事情是一件令人大开眼界的事情。
- 我想知道正确的答案是否总是面试时要给出的答案。在我采访的一个地方,采访者也重复了同样的话。
- 所有这些都是按值计算的,包括引用。
- 我注意到,研究C作为第一语言的人们和研究C++作为第一语言的人在回答关于Java的问题时有不同。可能是因为C用户被教导向值传递指针是一个"传递引用"。
- 实际上我是先学C的,我花了很长时间才意识到传递指针和传递引用是不一样的,但这并不能为无知辩解,只是稍微减轻了它:)。
- 这是一个愚蠢的问题,因为如果你同时问"什么后果已经通过参考"的话,"错误的"答案在技术上很可能是正确的。这只是一个定义引用传递方式的问题,因此在Java世界中没有太大价值,因为只有一种方法可以传递对象。理解实际发生的事情比使用一个aribitrary定义来按您想要的方式传递引用更重要。
- 这个问题至少是有问题的,因为它主要取决于"传递值"/"传递引用"的精确定义,而"传递引用"经常被错误地使用。虽然我同意一个好的开发人员应该知道这些定义,但了解其结果更重要。如果你理解Java的实际行为,那么知道这个概念的正确名称不是很有意义,因为它不是你在实践中讨论的东西,因为它永远不会改变。
- 同意。然而,我看到很多在大学里涉足C++的Java开发者认为"通过引用"在两种语言中都是相同的。
- @ Uri不是吗?-哦
- ERM,对象在Java中通过引用传递。不能按值传递对象;除其他外,堆栈上永远不存在对象。当然,引用是按值传递的。
- @马克,是的,但这是你不想在那里工作的迹象…
- Java没有"通过引用"的概念。一切都是按值传递的。引用只是堆栈上分配的另一个基元类型,与其他类型一样——它们恰好是一个键,可以解析为堆上的某个内容。
你说"好","开发商"。这也是我的2美分……:)
- "检查异常"是什么意思?
- 使用哪一个更好?何时:断言或异常来处理意外情况?
- 为什么字符串类是最终类?(或者不是吗?);)
- wait、notify和notifyall方法是否在对象类中?
- 为什么线程类不是最终的?为什么我要延长线,永远?
- 为什么有两个日期类:一个在java.util包中,另一个在java.sql中?
- 如果在finally块中抛出异常,会发生什么?剩下的是否最终执行?
- 有一个垃圾收集器没事,但是在Java应用程序中内存泄漏完全不存在吗?如果不是,怎么会这样?
对于J2EE:
- 在servlet中使用实例/静态变量是否很好?为什么不?那么你把"州"储存在哪里呢?
- 继续上述问题:对于(Web)应用程序,"状态"在哪里?
- 如果我开始在"jsp"中创建/关闭db连接会发生什么?
- 处理JSP异常的方法是什么?试试抓?六羟甲基三聚氰胺六甲醚。。还有别的吗?
我可以想象他们中的很多,很多,更多,但现在就这样了:)
- 答案会很好,我不知道其中一些答案。
- 选中的异常是指程序在发生异常时必须有一个计划来处理的异常。如果没有try/catch块围绕某个引发选中异常的对象,则程序将不会编译。等待、通知和通知都用于同步线程,而在Java中,所有对象都可以同步。如果在概念上类需要它自己的线程,即它需要做一些管理,并且不表示可以在另一个工作线程上运行的任务,那么我将扩展线程(而不是实现可运行的线程)。
- 如果在finally块中抛出异常,那么它的其余部分将不会运行。在"纯"Java程序中,规范内存泄漏是不存在的。但是,如果数据结构包含对不再需要的对象的引用,那么内存仍然可以得到使用,而这不应该。如果使用本机库,那么可能需要管理它们的资源,例如在SWT中,对某些资产调用.dispose()以确保它们不会泄漏是很重要的。
- 在开发过程中要处理的"永远不应该发生这种情况"错误中使用断言。对可能在运行时实际发生的错误使用异常,程序将需要以某种方式处理它们。
String、StringBuffer和StringBuilder之间有什么区别?
- 字符串-表示字符串的不可变类。StringBuffer - Builder模式在旧版本的Java中引入,它同步每个操作(或大多数操作)来构建一个字符串。String Bu建器——在Java 5(JDK 1.5)中引入的一个类,它共享String Buffic API,用于构建在每个操作(或大多数操作)上不同步的字符串。因为字符串的构建往往发生在单个线程中,因此StringBuilder在支持Java的运行时/JDKS中首选。
"什么是部署描述符?"
如果候选人不由自主地发抖,他就有使用3.0版以前的EJB的经验。
- 让它"不由自主地颤抖+大量出汗+重复这个问题两次后死掉",我有时觉得这是他们添加/支持整个注释的"唯一"原因!:)
在http://www.techinterfaces.com/interview-questions/java上可以找到许多问题和访谈,我并不认为复制/粘贴这些问题和访谈的价值所在。
不,这取决于你自己创造你认为重要的东西的汇编。就我个人而言,我总是分两步进行:首先是几个问题,了解基本的经验和技能,然后是解决问题的情况。我确实不相信能够回答任何已知的问题会让你成为一个好的或坏的未知问题解决者。所以,我更喜欢让人们解决一个给定的问题,给他们一些需求,并要求他们编写代码(但不是在纸上)。我给了他们一些时间,让他们回到我身边,检查他们是如何做到的,他们的编码风格,他们如何使用建议的API,等等。
尽管如此,我最喜欢的问题是"你不喜欢Java什么?"(本着这一点)。这确实是一个很好的问题,它给你一个即时反馈,说明一个候选人使用了多少Java并探索了它的API,以及他是否只信奉它(如OP写的)。
更新:正如CPerkins所建议的,上面提到的问题的一个更好的措辞可能是"在Java中你最希望看到什么变化?"我更喜欢这样。
- 我不喜欢问"你不喜欢Java什么?",我会撒谎,因为听起来就像是"你为什么离开上一家公司?"另外,他们可能会想:"如果你讨厌Java,我们就不会给你这份工作。"
- @这是你的权利,但我不同意你的观点,我认为你错过了这个问题的要点。
- 我通常看到这更像是:"你最想看到的是Java改变了什么",而不是"不喜欢"。
- @这确实是一个更好的措辞,比"不喜欢"更好,比"恨"更好(在参考文献中)。谢谢。
system.out.println中的"system"、"out"、"println"是什么?当你在hashmap上调用"put"时会发生什么?
- 答案是什么??我从没想过什么系统类!!我很想知道是谁:)
解释Java中使用的各种访问修饰符。我已经有很多人为此而挣扎,尤其是默认访问。
如果你能改变Java语言或平台的一点,它会是什么?优秀的开发人员在这里会有答案,而那些对开发不感兴趣的人可能不在乎。
如果他们的简历上说他们使用ejb2.1,那么询问ejb3以了解他们对它的了解。即使不使用新版本,最好的开发人员也会跟上最新的开发。
- 如果只有一件事我可以改变,我会在语言中添加运算符重载,可能只使用一组受限的重载运算符(即,没有重载new或^或>>、<<和>>>)。如果我可以改变另一件事,那就是添加真正的引用调用语义。第三件事是添加unsigned积分类型。
- 委托和闭包,也许还有lambda表达式,但这不是真正必要的。扩展方法也将是宏大的。如果使用得当,它们确实可以清除代码。
- 当覆盖等号时,一般合同是什么?
- 更好的选项是首选列表还是数组?
- 一般公认的命名约定是什么?
- 序列化如何工作?
- 如何实现可比性?
- 使用JDBC准备好的语句有什么好处?
- 什么是JavaEE?
- 什么是容器,它提供什么服务?
打印什么?
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| public void testFinally (){
System. out. println(setOne (). toString());
}
protected StringBuilder setOne (){
StringBuilder builder =new StringBuilder ();
try{
builder. append("Cool");
return builder. append("Return");
}finally{
builder. append("+1");
}
} |
回答:CoolReturn+1
有点困难:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| public void testFinally (){
System. out. println(setOne (). toString());
}
protected StringBuilder setOne (){
StringBuilder builder =new StringBuilder ();
try{
builder. append("Cool");
return builder. append("Return");
}finally{
builder =null; /* ;) */
}
} |
答案:COOLRETURN
- 第一个代码表示即使在try块中有返回语句,finally也总是被执行,但是我没有得到第二个代码??当语句生成器=空;发生什么情况??
- @ALAA,它就像一个临时值被设置为构建器,构建器在finally块中被设置为空,然后临时值被返回。
- 还是不明白:(
- @维克斯托,是的,阿拉给出了很好的描述。这个代码检查被采访者是如何理解这种尝试的…最后一个块,返回内部,变量范围一般,变量处理
- RETURN语句返回对StringBuilder对象的引用。更改finally中的引用对实际返回的引用不起任何作用。但是,更改对象的内容确实会影响返回的内容,如第一个示例中所示。
如果你用Java"经验"雇佣一个简单的问题,比如写一些会导致Null PoExtExchange异常的代码,可以区分哪些考生最近使用过Java,并且在他们完成单元/课程时并没有停止。
- "throw new nullPointerException()"是正确答案吗?
- 好吧,由面试官决定。如果他们展示了一个测试变量的例子,并用一条有用的消息抛出一个NPE,那么我会很高兴的。如果我认为他们使用这个答案是因为他们不能想出一些可以合法抛出NPE的代码,那么我会担心。
简单的问题,例如,
- 什么是JRE和JDK?
- 为什么Java要求互操作性?
虽然这些都是非常基本的,但是许多开发人员不知道答案。我建议在与代码相关的查询之前询问这些问题。
- 不知道JDK/JRE部分。例如,在Mac上没有这样的区别。因此,作为Mac上的Java开发人员,根本不需要知道这一点。
- 我认为这是一个很好的问题,如果它有助于揭露那些被误导的人,试图在MAC上尝试认真的Java开发就更好了。严重的是,如果你声称自己是Java开发人员,但不知道点击JavaSuncom的下载链接,那就有问题了。
- 作为一名Java开发人员,我们不必担心他/她所关注的平台。理解Java工具似乎是基本要求。至少我这么认为。我不知道Mac OS.still,我不担心我工作的OS。
- @这是一个相当刻薄的评论。虽然我是在Mac上开发的,而且我知道JRE/JDK是什么,但老实说,在实际开发中,这真的很重要吗?尤其是在命令行使用过去的IDE中,Java DEV需要知道如何使用语言胜过其他任何东西。
抽象类和接口有什么区别?你什么时候使用它们?
很多Java开发人员不知道这一点,我在大学的计算机科学课程中问了很多人,绝大多数人回答不了。
- 唯一的区别是抽象类不能包含非抽象方法。
- 如果你读过JAVA书的话,这就是答案。尽管如此,您还可以添加它们也可以包含成员变量:p但是在何时使用它们以及为什么使用它们的区别更有趣。
- 使用接口为我提供了非常强大的技术,它是多元论,它可以从实现接口的类中调用任何重写的方法,而不需要知道每个子类的类型。
- 不要忘记,在JAVA当前使用的单一继承模型中,您只能扩展一个抽象类,用于一组功能-但是,可以将单个接口中的多个接口组合起来,以实现多个功能,而不需要单一继承限制。
前5个J2EE/JEE问题
我所面临的J2EE/JEE中间件问题列表非常长,但下面是我被问到的前5个问题,并导致了很好的讨论:
当MDB遇到无法处理的异常时会发生什么?这个问题通常会导致关于有害消息、错误队列等的各种有趣的讨论。
给定一个JMS主题,以及不同JVM上的几个消费者,关于有持久消费者和没有持久消费者的各种场景的问题。这个问题通常允许我讨论何时使用持久订户、何时使用队列等。
如果陷入访问hibernate/jpa pojo内容会导致异常的情况,如何解决它?这导致了关于延迟加载、再水化等的精彩讨论,甚至导致了将JPA与实体bean进行比较和对比。我发现做好准备和明确概念是很有用的。
如何提供简单的Web服务?从简单的基于Web服务器的解决方案到复杂的SOAP/REST解决方案,以及两者之间的任何解决方案,都应该足够好。此外,基于采访者,有时它会导致一些主题的非常有趣的讨论,例如一些设计思想——WSDL优先、文档样式、SOAP中介等,它可能会导致一些问题,例如列出JAX-WS对JAX-RPC的改进,或者SOAP1.2对SOAP1.1的改进,这些问题的答案通常基于我记得的多少。
JEE 5资源注入从服务定位器模式到javax.naming.Context问题,这个问题有很多种提出方式。
我觉得另一个棘手的问题是,依赖库如何打包到存档中?或捆绑归档中各种类的可见性。如果讨论没有导致不同应用服务器的类加载器层次结构、资源归档等,那么最好辞职并继续。
Java核心5大问题:
有关java.util.collections的问题这是所有问题的根源。一旦你能有效地让面试官进入这个领域,如果你做好了准备,面试的其余部分通常都会留在这里。一定要了解Set、List、Map以及Object.equals()和Object.hashCode()在这些接口的每一个实现中的重要性。
重构问题如果面试官思想开放的话,这些都很好。如果面试官已经有了一个具体的解决方案,而你的方案与他/她的方案不匹配,那么你就注定要失败。最好同意"我理解其他解决方案是可能的"的答案。
JDK5中的多线程问题,与早期的JDK版本比较我发现最好准备java.util.concurrent包类。DougLea的书有很多答案。
JDK1.6/JDK1.7中有什么新功能?这对许多面试官来说是一个很有把握的问题。尽管我很讨厌这个,但最好做好准备。至少记住一些我曾经共事过的事情,并把讨论引向另一个方向,在很大程度上有效地回避和解决了问题。
Java API中的模式一次又一次,我被要求在Java API中指出一个GOF模式。最好做好准备。
你最喜欢Java什么?为什么?
为什么要重写toString()方法?
Web服务器和Web容器之间的区别
一个更纯粹的Java问题:
睡眠和等待有什么区别?没有多少人真正理解等待是如何工作的。
您需要如何处理InterruptedExceptions?
这是我在面试中面临的问题。
为什么Java中的main方法被称为公共静态空隙main(String)[ARGs?
答:
1.main()必须声明为public,因为它在程序执行开始时由jvm调用。jvm不属于我们的程序包。
为了访问包外部的main,我们必须将其声明为public。如果我们将其声明为public以外的任何内容,它将显示运行时错误,但不会显示编译时错误。
2.main()必须声明为static,因为如果方法声明为static,那么我们可以使用classname.methodname()在类外部调用该方法;
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| class Sample
{
static void fun ()
{
System. out. println("Hello");
}
}
class Test
{
public static void main (String[] args )
{
Sample. fun();
}
} |
JVM将首先加载测试类,并检查命令行参数,并将main方法作为test.main()调用;
3.main()必须声明为void main(),因为jvm不需要main()中的任何值。因此,必须声明为void。
如果提供了其他返回类型,则它是一个运行时错误,即NoSuchMethodFoundError。
4.main()必须将字符串参数作为数组,因为jvm通过传递命令行参数来调用main方法。当它们存储在字符串数组对象中时,它作为参数传递给main()。
- 如果您愿意,可以使用public static void main(String... args):-)它与[]具有相同的签名。
J2SE和J2EE(或JSE和JEE)有什么区别?
开发人员应该能够指出,企业版基本上是一个接口定义(即规范),可以由供应商实现。而标准版本身就是一种实现。
- 在一天结束的时候,保持营销术语的直截了当的能力真的那么重要吗?
- @劳伦斯-这是一件很可笑的事。这两件事之间有一个真正的区别,你会惊讶于有多少所谓的经验丰富的开发人员只是不理解
- 我的观点是,如果有人是一个好的编码人员,我就不在乎他们是否知道J2SE和J2EE之间的区别。
- 我把这个问题理解为"Jee+JSE开发人员应该知道的东西",在这种情况下,我认为理解这两种技术之间的区别是相关的。
- @劳伦斯,我很难想象一个好的Jee编码器,它不知道EE和SE之间的区别。
- @ Thorbj和248;RN Ravn Andersen,我怀疑大多数Java编码器,包括好的,都强烈地意识到上面的区别,"企业版基本上是一个接口定义…而标准版本身就是一种实现。对于大多数优秀的Java程序员来说,区分哪些API是可用的。例如servlet是EE的一部分,等等,就像我认为找到好的程序员比优秀的语言程序员更重要一样,我认为找到好的Java程序员比好的JSE/JEE程序员更重要。
- @劳伦斯。如果有问题的人与吉普系统有任何关系,我强烈希望他们知道这一点(如果他们不知道的话就不多)。也许我们只是对"好"的程序员有不同的期望。
volatile如何影响编译器的代码优化?
- 那个条目也应该包含正确的答案。
- 我不记得完整的答案,请看这个精选的youtube.com/&hellip;,了解好的解释。简而言之:假设该方法在某一点上使用了可变变量。然后编译器不会在这之后优化这个方法的代码。
酷kù睿ruì:1。什么是选中和未选中的异常?2。在代码中添加新的异常时,使用什么类型(选中/未选中)?
Servlet:1。response.sendRedirect()和request.forward()有什么区别?
- 你能回答这些问题吗?这是我第一次知道"已检查和未检查的异常"!!
- 简单的谷歌搜索可以引导你找到答案:google.co.in/&hellip;
编写一个接受两个整数的程序,并将两个数字中最大的一个输出到您选择的位置的文件中。现在描述每个语句的作用。
从进口声明的意义到异常终止,很有可能进行深入调查。
会话bean是什么,描述无状态会话bean和有状态会话bean之间的一些区别。
threads如何工作?什么是synchronized?如果一个类中有两个synchronized方法,那么它们可以由两个线程同时执行。听到很多人回答"是",你会很惊讶。然后所有与线程相关的问题,例如死锁、饥饿等。
- 这是因为答案&180;是&180;是……
- @福特加-怎么可能?每个方法在对象上都有一个锁。如果一个thread正在运行该方法,其他thread都不能获得锁。
- 如果有两个相同类型的对象,则可以同时调用第一个对象的第一个方法和第二个对象的第二个方法。当然,除非这些方法是静态的。
- @福特加-这不需要考虑。如果同一方法在不同的实例上,则可以同时调用它。
- 如果你不能正确理解锁是如何发生的,那就不是一件容易的事。另外,尽管这可能是一个很简单的问题,但这并不意味着我的回答是错误的:—)
- 答案可能会让那些在工作中不使用线程的程序员感到困惑,但我认为这是一个很好的答案:)
许多Java程序员不知道的一件事就是字符串是不可变的,所以使用StringBuilder或StringBuffer!
1 2 3 4
| String s ="";
for(int i = 0; i < 100; i ++) {
s +="Strings" +"are" +"immutable," +" so use StringBuilder/StringBuffer to reduce memory footprint";
} |
- 数字如整数、长等
- 从性能上讲,连接不可变字符串和使用StringBuilder之间不再有区别。这是因为现代Java编译器将优化连接:Java.Sun.com/DOCS/Boox/JLs/TurdjEdit/HTML/Helip;最好使用任何更可读的方法。
- @布伦特林森,你所联系的不会做你所想的。它将把s +="a" +"b" +"c"变为Stringbuilder.append(...)场景。但它不会优化for循环。这个答案中的代码最终将创建总共201个字符串、100个StringBuilder和(取决于实现情况)300个不同的char[]在这些StringBuilder中,估计有425000多个字符。直接将其更改为使用StringBuilder会将其减少为1个字符串、1个StringBuilder和13-15个内部char[]只使用大约8K个字符,而不像应该的那样。
什么时候使用会话bean或消息驱动bean?
会话bean中如何处理事务?
本地和远程会话bean之间的区别是什么?这个问题更多的是关于是否知道rpc在图片中,因为暴露为本地或远程的方法可能仍然工作不同(对参数的副作用在本地是可能的,而在远程是不可能的)。
一个好的测试是:不要按同样的顺序提问。我们在海外工作的经验是,有时候他们的反应顺序是错误的。因此,你应该确保你能看到你正在审问的人。
线程安全类和显式同步代码的优缺点以及两者的良好应用实例。在多线程应用程序中,信任线程安全类作为数据一致性的保证通常是不正确的。
- 你能详细解释一下为什么线程安全类不应该被多线程应用程序信任吗?
描述内部类的"四"(不是三;)类型之间的差异。
- 您是指四种嵌套类(Java.Sun.COM/DOCS/Booo/Tudio/Java/javao/NestSt.html)吗?有静态嵌套类、内部类、匿名类和本地类,最后三个类只是具有父实例的内部类。
- @为什么不应该使用内部类?它们在Swing程序中作为事件处理程序无处不在,而像Google Collections这样的功能性集合库依赖于它们。
- 我所说的"内部"是指在方法内部内联声明的类型。如果您真的想要,可以扩展到包含其他本地类型。
- 更好的问题是你为什么要用秋千
- 局部类有时实际上非常有用,特别是对于快速应用程序开发或快速原型设计。你需要快速和肮脏的东西,它能完成任务。一旦您通过了原型阶段,您就可以将事物重构为适当的类,并替换本地类。由于缺乏可维护性,我不会将它们放入生产代码中,但它们在很多方面确实很方便。
所有人的问题都很好,答案也很好。很高兴看到这样的问题。我想再添加一些可以使这个答案库更丰富的内容。
核心Java在Java中主要是关键字吗?更多信息
Java是独立于JVM的平台形式。
我们可以在类中有私有构造函数吗,如果有,它的用法是什么?
为什么我们需要在抽象类中有构造函数,尽管我们不能实例化它?更多信息
而不是最重要的是,还有更多关于核心Java的问题。更多信息
问:给出一个真实的例子场景,您将使用genericservlet而不是httpservlet?
- 你能给我举个例子吗?
- 我对此没有确切的答案,但基本上,如果您必须编写一个servlet来处理来自客户机的非hhtp请求,那么是否可以使用一个泛型servlet实现来完成它?