web-dev-qa-db-ja.com

すべての優れたJava / Java EE開発者が答えられるべき質問ですか?

すべての良い.Net開発者が答えられるべき質問 を通過し、この質問の内容とアプローチに非常に感銘を受けたので、同じ精神で、この質問をJava/Java EE開発者。

どんな質問良いJava/Java EEプログラマーが答えられると思いますか?

この質問はユーザー固有ではなく、プログラミングコミュニティ全体に役立つことを目的としているため、コミュニティWikiとしてマークしています。

素晴らしい反応を楽しみにしています。

EDIT:コメントで示唆されているように、質問にも答えてください。そうすれば、人々は言語に関して何か新しいことを学ぶことができます。

138
Rachel

HashCode()とequals()の関係は何ですか?これらの方法の重要性は何ですか?それらを実装するための要件は何ですか?

83
Jeff

セット、マップ、リストの違いは何ですか?

電話インタビューで、これを知らない人がどれだけいるのか、まだ驚いています。

70
Jon

インターフェースは複数のインターフェースを拡張できますか?

Javaには多重継承がないことを知っているため、ほとんどの人は「いいえ」と答えます。ただし、インターフェイスは引き続き複数のインターフェイスを拡張できます(ただし、クラスは複数のクラスを拡張できません)。これはダイヤモンドの問題にはつながりません。

答えが「いいえ」の場合、インタビュアーは「なぜwould禁止されているのか?」と尋ねるべきです。それからあなたはそれについて考え始め、あなたはそれに問題がないことを認識する必要があります。

そのため、インタビューで(自分で)何かを学び、クラス、オブジェクト、継承、ポリモーフィズムなどについて推論できることをインタビュアーに示しました。理由を理解する

44
ewernli

の使用法 最後の メソッド呼び出しのキーワード。たとえば、なぜメソッドは テスト 以下のコードでは、使用してもコンパイルエラーは発生しません 最後の メソッドパラメータの修飾子。

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");
}
 </ code>
23
sateesh

確かなのは、文字列の比較です。との差

文字列helloWorld = "Hello World";
helloWorld == "Hello World";
"Hello World" .equals(helloWorld);

19
zapping

あなたは「良い」、「開発者」と言った。こちらも私の2セントです。

  • 「チェック例外」とはどういう意味ですか?
  • どちらを使用するのが適切で、どのような場合:予期しない条件を処理するためのアサーションまたは例外ですか?
  • Stringクラスがfinalである理由(またはそうではない?;))
  • objectクラスのwait、notify、notifyAllメソッドは何ですか?
  • Threadクラスがfinalではないのはなぜですか?なぜスレッドを拡張するのですか?
  • Dateクラスが2つある理由。 1つはJava.utilパッケージに、もう1つはJava.sqlにありますか?
  • Finallyブロックで例外がスローされるとどうなりますか?残りは最終的に実行されますか?
  • ガベージコレクターは問題ありませんが、Javaアプリケーションにはメモリリークはまったくありませんか?そうでない場合、どのように?

J2EEの場合:

  • サーブレットにインスタンス/静的変数を含めるのは良いですか?何故なの?次に、「状態」をどこに保存しますか?
  • 上記の質問に続きます:(Web)アプリケーションの「状態」とは何ですか?
  • 「JSP」でDB接続の作成/終了を開始するとどうなりますか?
  • JSP例外を処理する方法は何ですか?トライキャッチ?うーん。他に何かありますか?

私は多くの、多くの、より多くの「em」を考えることができますが、これは今のところそうするでしょう:)

17
Elister

トリックの質問:Javaではどのような種類のパラメーターが参照渡しされますか?

「プリミティブは値で渡され、オブジェクトは参照で渡される」というマントラをまだ多くの人がオウムしているのは驚くべきことです。

17
Chinmay Kanchi

String、StringBuffer、StringBuilderの違いは何ですか?

16
Thunderhashy

「デプロイメント記述子とは?」

候補者が思わず身震いする場合は、3.0より前のEJBでの作業経験があります。

13

多くの質問とインタビューは http://www.techinterviews.com/interview-questions/Java で利用できます。それらの選択をコピー/貼り付けても実際には価値がありません。

いいえ、自分のものを編集するのはあなた次第ですyouは重要だと思います。個人的に、私は常に2つのステップに進みます。まず、経験とスキルの基本的なアイデアを得るためのいくつかの質問、次に問題解決の状況です。確かに、既知の質問に答えることができると、あなたは良い(または悪い)未知の問題解決者になると確信していません。だから、私は人々に与えられた問題を解決し、彼らにいくつかの要件を与え、コードを書くように頼むことを好む(しかし紙の上ではない)。彼らに戻って、彼らがそれをどのようにしたか、彼らのコーディングスタイル、彼らが提案されたAPIをどのように使用したかなどをチェックする時間を与えます。

以上のことを言っても、私の好きな質問は「Javaが好きではないですか」です。 ( this one )の精神で。これは本当に素晴らしい質問です。候補者がJavaをどれだけ使用してAPIを調査したか、そして彼が(OPが書いたように)それについてただ宗教的であるかどうかを即座にフィードバックします。

Update:CPerkinsが提案したように、上記の質問に対するより良い言い回しは、「Javaで何が変わりたいと思いますか?」です。そして確かに、私はこの方法を好みます。

12
Pascal Thivent

System.out.printlnの「System」、「out」、「println」とは何ですか? HashMapで「put」を呼び出すとどうなりますか?

11
Adi
  1. Javaで使用されるさまざまなアクセス修飾子について説明します。多くの人がこれ、特にデフォルトアクセスに苦労しています。
  2. Java言語またはプラットフォームに関する1つのことを変更できるとしたら、それはどうなりますか?優れた開発者はここで答えを見つけますが、開発にあまり興味がない人はおそらく気にしません。
  3. 彼らのCVがEJB2.1を使用しているようなことを言ったら、EJB3について尋ねて、それについて知っていることを確認します。最高の開発者は、新しいバージョンを使用しなくても、最新の開発に遅れずについていくことができます。
10
Mark
  • オーバーライドが等しい場合の一般契約は何ですか?
  • より良いオプションはリストまたは配列を好みますか?
  • 一般的に受け入れられている命名規則は何ですか?
  • シリアル化の仕組み
  • Comparableの実装方法
  • JDBCのPrepared Statementを使用する利点は何ですか?
  • Java EEとは何ですか?
  • コンテナとは何ですか、またどのようなサービスを提供しますか?
10
JuanZe

Java "experience"で卒業生を採用している場合、NullPointerExceptionがスローされるコードを書くのような単純な質問で、Javaを使用した候補を区別できます。 _最近、彼らがユニット/コースを終了したときに停止しませんでした。

9
David

何が印刷されますか?

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

もう少し難しい:

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

9
zaletniy

次のような簡単な質問、

  • JREとJDKとは何ですか?
  • Javaが相互運用性を要求するのはなぜですか?

これらは非常に基本的なものですが、多くの開発者は答えを知りません。コード関連のクエリの前にこれらを尋ねることをお勧めします。

8
Ravisha

抽象クラスとインターフェースの違いは何ですか?それぞれをいつ使用しますか?

多くのJava開発者はこれを知らないので、大学のコンピューターサイエンスコースのほとんどの人に尋ねたところ、ほとんどの人が答えられませんでした。

8
ZoFreX

上位5つのJ2EE/JEEの質問

私が直面したJ2EE/JEEミドルウェアの質問のリストは非常に長いですが、ここに私が尋ねられた上位5つがあり、良い議論につながっています。

  1. MDBが処理できない例外に遭遇するとどうなりますか?
    この質問は通常、有害なメッセージ、エラーキューなどに関するさまざまな興味深い議論につながります。
  2. JMSトピックと、さまざまなJVMのいくつかのコンシューマーについて、耐久性のあるコンシューマーがある場合とない場合のさまざまなシナリオに関する質問を示します。
    この質問により、通常、永続サブスクライバーをいつ使用するか、キューをいつ使用するかなどについて議論できます。
  3. Hibernate/JPA POJOコンテンツにアクセスすると例外が発生するという状況に陥った場合、どのように解決しますか?
    これにより、遅延読み込み、リハイドレートなどに関する素晴らしい議論が行われます。JPAとEntity Beanの比較と対比にもつながります。準備ができており、概念が明確であることが有用であることがわかりました。
  4. 単純なWebサービスをどのように提供できますか?
    シンプルなWebサーバーベースから洗練されたSOAP/RESTソリューションまで、およびその中間のソリューションであれば十分です。また、インタビュアーに基づいて、WSDLファースト、docスタイル、SOAP仲介者など、いくつかの設計アイデアなどのトピックに関する非常に興味深い議論につながる場合があります。 JAX-RPC上のJAX-WS、またはSOAP1.1上のSOAP1.2では、通常、どれだけ覚えているかに基づいて回答が決まります。
  5. JEE 5リソースインジェクション
    この質問は、Service Locatorパターンからjavax.naming.Context質問まで、さまざまな方法で提起されます。

私が厄介な問題を見つけたが、何度も直面している別のトリッキーな質問は、依存ライブラリがアーカイブにどのようにパッケージ化されていますか?
またはバンドルされたアーカイブ内のさまざまなクラスの可視性
議論が、異なるアプリケーションサーバー、リソースアーカイブなどのクラスローダー階層につながらない場合は、辞任して先に進むことが最善です。

上位5つのコアJava質問:

  1. Java.util.collectionsに関する質問
    これはすべての質問の母です。このエリアで面接担当者を効果的に着陸できるようになり、準備ができていれば、残りの面接は通常ここに留まります。これらのインターフェイスのすべての実装で、SetListMap、およびObject.equals()およびObject.hashCode()の重要性を必ず確認してください。
  2. 質問のリファクタリング
    これらは、インタビュアーが心を開いている場合に適しています。インタビュアーがすでに特定の解決策を念頭に置いており、あなたの回答が彼/彼女と一致しない場合、あなたはほとんど運命にあります。 「他の解決策も可能であると理解しています。」という答えに同意するのが最善です
  3. JDK5でのマルチスレッドに関する質問、以前のJDKバージョンとの比較Java.util.concurrentパッケージクラスで準備するのが最善であることがわかりました。ダグリーの本にはほとんどの答えがあります。
  4. JDK1.6/JDK1.7の新機能...?
    これは、多くのインタビュアーによる確実な質問です。私はこれを嫌いですが、準備するのが最善です。少なくとも私と一緒に仕事をしたことをいくつか覚えて、議論を他の方向に導き、大部分は効果的に問題を避けて解決します。
  5. Java AP​​Iのパターン
    何度も、Java AP​​IでGoFパターンを指摘するように求められました。これに備えておくといいでしょう。
6
CMR

Javaの何が一番好きですか、何が一番好きですか?

5
Carsten

WebサーバーとWebコンテナーの違い

5
user256777

なぜtoString()メソッドをオーバーライドしますか?

5
SWD

より純粋なJava質問:

Sleepとwaitはどう違いますか?待機がどのように機能するかを実際に理解している人は多くありません。

InterruptedExceptionsをどのように処理する必要がありますか?

4
David Nouls

これは私のインタビューで直面した質問です。

なぜJavaのmainメソッドがpublic static void main(String [] args)として呼び出されるのですか?

回答:

1 .main()はpublicとして宣言する必要がありますこれは、プログラムの実行が開始されるたびにJVMによって呼び出されるためです。JVMはプログラムパッケージに属していません。

パッケージ外のメインにアクセスするには、パブリックとして宣言する必要があります。パブリック以外として宣言すると、Runtime Errorではなくコンパイル時間エラー

2 .main()はstaticとして宣言する必要がありますメソッドがstaticとして宣言されている場合、ClassName.methodName();を使用してクラス外でそのメソッドを呼び出すことができるため

class Sample
{
     static void fun()
     {
           System.out.println("Hello");       
     }
}

class Test
{
      public static void main(String[] args)
      {
                Sample.fun();
      }
}

JVMは最初にTestクラスをロードし、コマンドライン引数をチェックして、メインメソッドをTest.main()として呼び出します。

3 .main()はvoid main()として宣言する必要があります。これは、JVMがmain()からの値を予期していないためです。したがって、voidとして宣言する必要があります。

他の戻り値の型が提供されている場合、それはRunTimeError i.e; NoSuchMethodFoundErrorです。

4 .main()は文字列引数を配列として持つ必要があります JVMはコマンドライン引数を渡すことでmainメソッドを呼び出すため、文字列配列オブジェクトに格納されているため、main()への引数として渡されます。

4
Sai Upadhyayula

J2SEとJ2EE(またはJSEとJEE)の違いは何ですか?

開発者は、エンタープライズエディションが基本的にベンダーが実装できるインターフェイス定義(つまり仕様)であることを指摘できるはずです。一方、標準版はそれ自体が実装です

3
oxbow_lakes

volatileはコンパイラによるコード最適化にどのように影響しますか?

3
Roman

2つの整数を受け入れ、最大の2つの数値を選択した場所のファイルに出力するプログラムを作成します。次に、各ステートメントの機能を説明します。

Importステートメントの重要性から異常終了まで、かなり深く掘り下げることができます。

2
Everyone

セッションBeanとは何か、ステートレスセッションBeanとステートフルセッションBeanの違いについて説明します。

2
Kristian

コア:1.チェック済みおよび未チェックの例外とは何ですか? 2.コードに新しい例外を追加するときに、どのタイプ(チェック済み/チェックなし)を使用するか?

サーブレット:1. response.sendRedirect()とrequest.forward()の違いは何ですか?

2
YoK

多くのJavaプログラマーが知らないことの1つは、ストリングが不変であるため、StringBuilderまたはStringBufferを使用することです。

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

threadsはどのように機能しますか? synchronizedとは何ですか?クラスに2つのsynchronizedメソッドがある場合、2つのスレッドで同時に実行できます。多くの人がyesと答えると聞いて驚くでしょう。次に、すべてのスレッド関連の質問、例えばデッドロック飢vなど.

1
fastcodejava

セッションBeanまたはメッセージ駆動型Beanはいつ使用しますか?

セッションBeanではトランザクションはどのように処理されますか?

ローカルセッションBeanとリモートセッションBeanの違いは何ですか?この質問は、ローカルまたはリモートの両方として公開されているメソッドの動作が異なる可能性があるため、RPCが見えないかどうかを知ることに関するものです(ローカルではパラメーターに対する副作用が可能ですが、リモートでは不可能です)。

良いテストは、同じ順序で質問をしないでください。オフショアリングの経験がありましたが、実際には間違った順序で実際に応答を返していました:-)。その結果、質問している人を実際に見ることができることを確認する必要があります。

0
David Nouls

Q. HttpServletではなくGenericServletを使用する実際のシナリオ例を挙げてください。

0
akjain

内部クラスの「4」(3つではなく)タイプの違いを説明してください。

0
mP.

素晴らしい質問と素晴らしい回答。このようなタイプの質問を見るのは素晴らしいことです。この回答リポジトリをよりリッチにするために、さらにいくつか追加したいと思います。

コアJavaの場合メインはJavaのキーワードですか? 詳細

Javaはプラットフォームに依存しませんJVMはどうですか?

クラスにプライベートコンストラクターを含めることはできますか?.

インスタンス化できないのに、なぜ抽象クラスにコンストラクターが必要なのですか? 詳細

上記のすべての代わりに、コアJavaに関連するより多くの質問があります。 詳細

0
Sanjay Jain

スレッドセーフクラスと明示的に同期されたコードの長所と短所、および両方の優れたアプリケーションの例。多くの場合、マルチスレッドアプリケーションでのデータの一貫性を保証するスレッドセーフクラスを信頼することは正しくありません。

0
Dan