问问每一位优秀的Java / Java EE开发人员应该能够回答?


Answers

Set,Map和List有什么区别?

我仍然很惊讶有多少人在电话采访中不知道这个。

Question

我正在经历的问题每一个好的.Net开发人员都应该能够回答这个问题,并且对这个问题的内容和方法印象深刻,所以本着同样的精神,我正在为Java / Java EE Developer问这个问题。

你认为一个好的Java / Java EE程序员应该回答什么问题?

我将这个问题标记为社区wiki,因为它不是用户特定的,它旨在为广大的编程社区提供服务。

期待着一些惊人的回应。

编辑 :请按照评论中的建议回答问题,以便人们也可以学习有关该语言的新内容。




抽象类和接口之间有什么区别? 你什么时候使用他们每个人?

很多Java开发人员并不知道这一点,我在大学时向大多数人询问了我的计算机科学课程,绝大多数人都无法回答。




技巧问题:在Java中通过引用传递了哪些参数?

令人惊讶的是,有多少人仍然鹦鹉“原始物质通过价值传递,物体通过参考传递”的口头禅。




在方法调用中使用final关键字。 例如,为什么下面的代码中的方法测试不会给出任何编译错误,尽管使用方法参数的最终限定符。

class Name {
    private String name;

    public Name (String s) {
        this.name = s;
    }

    public void setName(String s) {
        this.name = s;
    }
}

private void test (final Name n) {
    n.setName("test");
}




前5个J2EE / JEE问题

我遇到的J2EE / JEE中间件问题列表非常长,但是这里列出了我所提出的前5名,并且导致了良好的讨论:

  1. MDB遇到无法处理的异常时会发生什么?
    这个问题通常会导致关于有害消息,错误队列等的各种有趣的讨论,
  2. 给定一个JMS主题,以及不同JVM上的一些消费者,提供关于具有和不具有持久消费者的各种情景的问题。
    这个问题通常允许我讨论何时使用持久订户,何时使用队列等,
  3. 如果停留在访问Hibernate / JPA POJO内容导致异常的情况下,如何解决它?
    这导致了关于延迟加载,补充等的精彩讨论,它甚至导致JPA与实体bean的比较和对比。 我发现准备工作很有用,而且在概念上要清楚。
  4. 如何提供简单的Web服务?
    从简单的Web服务器到复杂的SOAP / REST解决方案以及任何介于两者之间的任何解决方案都应该足够好。 此外,基于面试官,有时候会引发一些关于主题的非常有趣的讨论,比如某些设计思路 - 首先是WSDL,doc风格,SOAP中介等。这可能会导致问题,例如JAX-WS上的JAX上的改进-RPC或SOAP1.2通过SOAP1.1,其答案通常基于我记得多少。
  5. JEE 5资源注入
    这个问题有很多方面,从Service Locator模式到javax.naming.Context问题。

我发现另一个棘手的问题,但是很多时候都面临着, 依赖库如何打包到一个存档中?
捆绑存档中各种类的可见性。
如果讨论不会导致不同应用程序服务器,资源归档等的类加载器层次结构,则最好先辞职并继续前进。

前5个核心Java问题:

  1. 关于java.util.collections的问题
    这是所有问题的母亲。 一旦你可以有效地降低面试官的面积,并且如果你准备好了,面试的其余部分通常会留在这里。 确保在每个这些接口的实现中都知道SetListMap以及Object.equals()Object.hashCode()的重要性。
  2. 重构问题
    如果面试官有一个开放的心态,这很好。 如果面试官已经有了一个具体的解决方案,而你的面试官不符合他/她的话,那么你几乎注定要失败。 最好同意答案“我了解其他解决方案是可能的”。
  3. 与JDK版本相比,JDK5中的多线程问题我发现最好使用java.util.concurrent包类来准备。 Doug Lea的书中有大部分答案。
  4. JDK1.6 / JDK1.7中有哪些新功能?
    这是许多采访者的一个肯定的问题。 尽管我讨厌这个,但最好做好准备。 至少要记住我曾与之合作过的一些方面,并在其他方向上进行讨论,这样可以大大有效地避免和解决问题。
  5. Java API中的模式
    我一再要求在Java API中指出一个GoF模式。 更好地为这一个做好准备。



许多问题和访谈都可以在http://www.techinterviews.com/interview-questions/java ,我真的没有看到复制/粘贴它们的选择的价值。

不,这取决于你自己编写认为重要的内容。 就我个人而言,我总是分两步进行:首先提出几个问题,以获得关于经验和技能的基本概念,然后解决问题的情况。 我确实不相信能够回答任何已知问题会使你成为一个好的或不好的未知问题解决者。 所以,我更喜欢让人们解决一个给定的问题,给他们一些要求,并要求他们编写代码(但不是写在纸上)。 我给他们一些时间回到我身边,检查他们是如何做到的,他们的编码风格,他们如何使用建议的API等等。

所有人都说,我最喜欢的问题是“你不喜欢Java?” (本着这一精神)。 这真的是一个很好的问题,它可以让你立即反馈一个候选人使用Java并探索其API的情况,以及他是否对此信服(如OP所写)。

更新:正如CPerkins所建议的那样,对于上面提出的问题,更好的措辞可能是“你最希望在Java中看到什么变化?”。 事实上,我更喜欢这种方式。




如何处理会话bean,并描述无状态和有状态会话bean之间的一些差异。




  1. 解释Java中使用的各种访问修饰符。 我有很多人为此而苦恼,特别是默认访问。
  2. 如果你能改变一件关于Java语言或平台的事情,它会是什么样子? 优秀的开发人员会在这里得到答案,而那些对开发没有兴趣的人可能不在意。
  3. 如果他们的简历中有类似于他们使用EJB2.1的内容,那么可以询问EJB3以了解他们对此的了解。 即使不使用新版本,最好的开发人员也会跟上最新的发展。



你最喜欢Java /最不喜欢的是什么?为什么?




String,StringBuffer和StringBuilder有什么区别?




许多Java程序员不知道的一点是字符串是不可变的,所以使用StringBuilder或StringBuffer!

String s = "";
for(int i = 0; i < 100; i++) {
  s += "Strings " + "are " + "immutable, " + " so use StringBuilder/StringBuffer to reduce memory footprint";
}



一个更纯粹的Java问题:

睡眠和等待有什么区别? 没有多少人真正了解如何等待工作。

你如何处理InterruptedExceptions?




核心:1.什么是检查和未检查的异常? 2.在代码中添加新的异常时使用什么类型(Checked / Unchecked)?

Servlet:1. response.sendRedirect()和request.forward()之间有什么区别?




如果您正在招聘带有Java“体验”的毕业生,那么写一些简单的问题,比如编写一些会引发NullPointerException的代码,可以区分哪些候选人最近使用过Java,并且在完成单元/课程时不会停下来。




J2SE和J2EE(或JSE和JEE)有什么区别?

开发人员应该能够指出企业版基本上是一个可以由供应商实现的接口定义(即规范)。 而标准版本身就是一个实现




Links