Articles

15Technical Core Java Interview Questions経験豊富な開発者のための回答

Javaプログラマの経験が初心者の年(2-4)からより多くの経験や上級レベル(5-7年)になると、コアJava Interview Questions もちろん、データ構造、アルゴリズム、オブジェクト指向プログラミングなどの基本は同じですが、質問の種類はより高度になり、その答えはより詳細で正確 私はしばしば、5年から6年の経験を持つ上級開発者に尋ねられたコアJavaの質問についての質問を受けたり、時には上級Java開発者のインタビューに行 これは時々私を困惑させます,あなたがシニアになると,あなたは自動的にインタビューに参加し始めます,そして、あなたはインタビューに何を期待すべきかのアイデアを持っている必要があります,しかし、同時に,私はインタビューに行く前に質問のアイデアを持っていることを理解することができます,準備に役立ちます. もちろん、あなたは2-3年レベルのJava面接で直面したような質問を得るつもりはありませんが、それはまた、面接の異なるラウンドに依存します。
私は電話ラウンドで尋ねられた質問に多くの変化を見ていないが、これはほとんど同じままである。 あなたは、いくつかの事実に基づいて、いくつかのコーディングの質問といくつかのトリッキーな質問を見つけるでしょう。 一方、対面では、インタビューは、特に厄介なフォローアップで、より詳細で、よりトリッキーになっています。
この記事では、私はいくつかの15の技術的なコアJavaのインタビューの質問を共有するつもりです,私は別のインタビューでの経験の4-6年の上級およ 私は今のところ答えを投稿していませんが、ほとんどの質問に対する答えを見つけることができますhereまたはJavarevisitedブログ。
急いで積極的にJava開発者の仕事を探している場合は、Java J2EEインタビューの準備のために書かれた良い本から助けを借りることもできます。 Java Programming Interview Exposedのような書籍では、javaの基本的な質問、データ構造とアルゴリズム、JVM内部とGCチューニング、HibernateとSpringのインタビューの質問、JUnit ant単体テストの質問、Java8
Scala、Groovy、Androidなどの他のプラットフォームのような他のJVM言語の知識もカバーしています。 Javaのインタビューでうまくやるのに最適な仲間。
あなたはコーディング側に多くを準備したい場合は、また、アマゾン、Facebook、Google、Twitter、およびMicrosoftのような大手ハイテク企業の技術的なインタビューからほぼ150

経験5-6年のための15コアJavaの質問

これらの質問はすべて、少なくとも5年の経験を持つ非常に上級開発者から収集されています。 彼らは、主にBarclays、Morgan、RBSなどの投資銀行で、さまざまな企業での電話や対面のラウンドを含む、コアJavaインタビューのさまざまなラウンドでこれらの質問を見

忙しい回転とは何ですか? なぜあなたはJavaでそれを使うべきですか?

シニアJavaプログラマへの興味深いマルチスレッドの質問の一つは、ビジースピニングは、スレッドがスリープ状態になるためにCPUを解放することなく、 これは、二つのメッセージ間の待ち時間が非常に最小限であるときに、高頻度の取引アプリケーションで使用される非常に高度で特殊な待機戦略です。
CPUを解放したり、スレッドを中断したりしないことで、スレッドはキャッシュされたすべてのデータと命令を保持します。
この質問は、プログラマがミリ秒にマイクロの範囲で非常に低いレイテンシのためにしようとしている高周波低レイテンシプログラミングドメイン、で非常に人気があります。 経験豊富なプログラマのためのより多くの50+高度なスレッドインタビューの質問はここを参照してください。

シニア開発者のためのコアjavaインタビューの質問

読み書きロックとは何ですか? JavaのConcurrentHashMapはReadWriteロックを使用しますか?

ReadWrite Lockは、読み取り操作と書き込み操作に二つの別々のロックが使用されるロックストリッピング技術の実装です。 読み取り操作はオブジェクトの状態を変更しないので、ロックせずに読み取りのために共有オブジェクトへの複数のスレッドアクセスを許可し、1つのロックを読み取りと書き込みロックに分割することで、簡単にそれを行うことができます。
Javaは、javaのReentrantReadWritLockクラスの形式で読み書きロックの実装を提供します。ユーティル同時進行。ロックパッケージ。 これは、独自の読み書きロック実装を作成する前に検討する価値があります。
また、javaの現在の実装。ユーティルConcurrentHashMapはReadWriteLockを使用せず、代わりにマップを複数のセグメントに分割し、異なるロックを使用して別々にロックします。 これは、任意の時点で、マップ全体ではなく、ConcurrentHashMapの一部のみがロックされることを意味します。 詳細については、ConcurrentHashMapがJavaで内部的にどのように動作するかを参照してください。
このコアJavaの質問は、4-6年のように、インタビュアーが異なるポリシーで読み書きロックの実装を提供するように頼むなど、より詳細に入ることを期待している、上級でより経験豊富なレベルのJavaインタビューでも非常に人気があります。 経験豊富なJavaプログラマであれば、javaでのマルチスレッドと並行性についてより自信を得るために、実際にJava並行性を読むことを検討してくださ

Javaでオブジェクトを不変にする方法は? オブジェクトを不変にする必要があるのはなぜですか?

まあ、不変性は、スレッドセーフ、キャッシュする能力を含むいくつかの利点を提供し、より読みやすいマルチスレッドコードになります。 オブジェクトを不変にする方法については、こちらを参照してください。 もう一度、この質問はまた、より詳細に行くことができ、あなたの答えに応じて、例えば、いくつかの他の質問をもたらすことができます Springが不変であることに言及するときは、JavaでStringが不変である理由についていくつかの理由を準備してください。

あなたのJavaプロジェクトでどのデザインパターンを使用しましたか?

常にシニア開発者の位置のコアJavaのインタビューのためのいくつかの設計パターン関連の質問を期待しています。 他のほとんどすべてのJava開発者がそれを使用するSingletonやMVCではなく、GOFデザインパターンに言及する方が良い戦略です。
あなたの最善の策は、デコレータパターンまたは多分依存性注入パターンであり、これはSpringフレームワークで非常に人気があります。 また、プロジェクトで実際に使用したデザインパターンだけに言及し、それがトレードオフであることを知っていることも良いことです。
FactoryまたはAbstract Factoryという特定のデザインパターンに言及すると、インタビュアーの次の質問は、このパターンをプロジェクトで使用したことがありますか? だから、適切な例となぜあなたが特定のパターンを選択する準備ができています。 また、Javaのインタビューからのより高度な設計パターンの質問については、この記事を参照してくださ

オープンクローズド設計原理またはLiskov置換原理について知っていますか?

デザインパターンは、私は強く、すべてのオブジェクト指向の開発者とプログラマが知っている、または、少なくとも、これらの原則が何であるか、そ I
この質問に対する答えがわからない場合は、すべての質問に対する答えを知ることは期待されていないので、丁寧にノーと言うことができますが、この質問に答えることによって、多くの経験豊富な開発者がこのような基本的な質問に答えることができないので、あなたの主張を強くすることができます。 オブジェクト指向と固体設計の原則の詳細については、”クリーンコード”を参照してくださ

数ヶ月後に別のライブラリに置き換えられる可能性のあるサードパーティのライブラリからコードを保護するためにどのデザインパターンを使用

これは、シナリオベースのデザインパターンのインタビューの質問の一例に過ぎません。 5年以上の経験を持つJava開発者の実践的な経験をテストするために、企業はこの種の質問をします。 さまざまな形式の実際の設計上の問題、文脈による詳細な説明のあるもの、または意図のみのあるものが予想されます。
サードパーティのライブラリからコードを保護する1つの方法は、実装ではなくインターフェイスに対してコードを作成し、依存性注入を使用して特定の実 この種の質問は、5年から7年の経験を持つ経験豊富で上級のJava開発者にも非常に頻繁に尋ねられます。質問7)JavaコードでSQLインジェクションを防ぐにはどうすればよいですか?この質問は、コアJava開発者よりもJ2EEおよびJava EE開発者に尋ねられますが、経験豊富なJavaプログラマのJDBCおよびセキュリティスキルを確認す
PreparedStatementを使用すると、JAVAコードでSQLインジェクションを回避できます。 PreparedStatementを使用してSQLクエリを実行すると、パフォーマンスが向上するだけでなく、JAVAおよびJ2EEアプリケーションをSQLインジェクション攻撃から保護
同様に、Java EEまたはJ2EE側でより多くの作業をしている場合は、セッション固定攻撃やクロスサイトスクリプティング攻撃などの他のセキュリテ これらはよい答えがあなたの選択の多くの違いを生じることができる質問およびある分野である。

質問8)WeakReference、SoftReference、PhantomReferenceなど、Javaで利用可能なさまざまな参照型について教えてください。 そして、なぜあなたはそれらを使用する必要がありますか?まあ、それらはjavaから来る異なる参照型です。ラングrefパッケージと低メモリの問題の場合にJavaガベージコレクタを支援するために提供されます。 オブジェクトをWeakReferenceでラップすると、強い参照がある場合にガベージコレクションの対象となります。 JVMのメモリが不足している場合は、後でガベージコレクタによって再利用できます。
ジャワ。ユーティルWeakHashMapは特別なMap実装であり、そのキーはWeakReferenceのオブジェクトなので、Mapだけが任意のオブジェクトの参照を含み、他のオブジェクトが含まれていない場合、GCがメモリを必要とする場合、それらのオブジェクトはガベージコレクトすることができます。 Javaパフォーマンス決定版ガイドを参照してくださいJavaでのパフォーマンスの問題に対処する方法の詳細を学びます。

経験豊富なコアjavaテクニカルインタビューの質問と回答

質問9)HashMapのgetメソッドはJavaでどのように動作しますか?

はい、これはまだシニア開発者のインタビューのための最も人気のあるコアJavaの質問の一つです。 また、電話ラウンドでこの質問を期待することができ、私の投稿で説明されているように、多くのフォローアップの質問が続きますHashmapはJavaでどのように
この質問への短い答えは、HashMapは、ハッシュテーブルのデータ構造に基づいており、衝突の場合には、同じバケット内のオブジェクトを検索するために、基になる配列とequals()メソッド上のバケットの場所を見つけるためにハッシュコードを計算するためにhashCode()メソッドを使用しているということです。 Hashmapのget()メソッドがJavaでどのように機能するかについての詳細は、こちらを参照してください。

質問10)どの二つのメソッドHashMapキーオブジェクトを実装する必要がありますか?これは私が以前の質問で言っていたフォローアップの質問の1つです。

これは私が以前の質問で言っていたフォローアップの質問の1つです。 Hashmapの作業はハッシュテーブルのデータ構造に基づいているため、HashMapまたはHashtable、ConcurrentHashMapなどの他のハッシュベースのコレクションのキーとして使用するオブジェクトは、equals()およびhashCode()メソッドを実装する必要があります。
hashCode()は、バケットの場所、すなわち基になる配列のインデックスを見つけるために使用され、equals()メソッドは、衝突の場合にバケットに格納されているリン ちなみに、Java8から、hashmapはツリーデータ構造を使用して、衝突の場合にオブジェクトを格納して、HashMapの最悪のパフォーマンスをO(n)からO(logN)に減らし始めました。 JavaでのHashMapのハンドレスコリジョンの詳細については、記事を参照してください。

質問11)キーとして使用されるオブジェクトはなぜ不変でなければならないのですか?

これは、以前のコアJavaのインタビューの質問の別のフォローアップです。 同じトピックに関するより多くの質問をすることによって、候補者の技術的な知識の深さをテストすることは良いことです。 不変性について知っていれば、この質問に自分で答えることができます。 この質問に対する簡単な答えは、hashcode()メソッドが常に同じ値を返すように、キーは不変でなければならないということです。

hashcode()メソッドによって返されるハッシュコードは、オブジェクトの内容、つまりメンバー変数の値に依存するためです。 オブジェクトが変更可能な場合は、それらの値が変更される可能性があり、ハッシュコードも変更されます。 HashMapに値を挿入すると、同じオブジェクトが異なるハッシュコードを返すと、異なるバケットの場所で検索され、オブジェクトを取得できなくなります。 そのため、キーオブジェクトは不変でなければなりません。 これはコンパイラによって強制されるルールではありませんが、経験豊富なプログラマとして世話をする必要があります。 より高度なJava Collection interviewの質問については、この記事を参照してください。

質問12)ConcurrentHashMapはどのようにスケーラビリティを達成しますか?

時には、このマルチスレッド+コレクションのインタビューの質問も、JavaのConcurrentHashMapとHashtableの違いとして尋ねられます。 Synchronized HashMapまたはHashtableの問題は、スレッドがMapで操作を実行するときにマップ全体がロックされることでした。
ジャワ。ユーティルConcurrentHashMapクラスは、マップ全体が異なるセグメントでロックされ、マップ全体ではなく、書き込み操作中に特定のセグメントのみがロックされるロック また、ConcurrentHashMapは、readがスレッドセーフな操作であるため、ロックフリーの読み取りを許可することによってスケーラビリティを実現します。 Javaでのより高度なマルチスレッドと並行性の質問については、こちらを参照してください。

質問13)スレッド間でオブジェクトを共有するにはどうすればよいですか? または、あるスレッドから別のスレッドにオブジェクトを渡す方法は?

それを行うには複数の方法があります。 Queues、Exchangerなどですが、Producer-Consumerパターンを使用したBlockingQueueは、オブジェクトをthreadから別のオブジェクトに渡す最も簡単な方法です。

質問14)あなたのプログラムにデッドロックがあるかどうかを調べるにはどうすればよいですか?

kill-3を使用してスレッドダンプを取ることによって、JConsoleまたはVisualVMを使用して)、インタビュアーは間違いなくより詳細に行くのが好きなので、このコ

質問15)コーディング中にデッドロックを回避するにはどうすればよいですか?

ロックが順序付けられた方法で取得および解放されるようにすることにより、この質問に対する詳細な回答については、ここを参照してくださ
これは、上級開発者や経験豊富なプログラマのためのコアJavaインタビューの質問のこのリストにすべてです。 私は例外処理、ガベージコレクションのチューニング、JVM内部のような他の重要なトピックからの多くの質問を含めていませんでしたが、これは5-6年の経
ところで、これらのコアJavaの質問のいずれかに対する答えが見つからない場合は、私に知らせてください。 私は私の読者の要求に基づいて、より詳細なオプションで投稿を更新することができます。
さらなる学習
完全なJavaマスタークラス
Javaの基礎: Java言語
他のトピックに関する関連するJavaインタビューの質問

  • 電話画面インタビューのためのJavaの質問(リスト)
  • Javaインタビューからのスレッ回答付きの質問(リスト)
  • jdbcインタビューの質問と回答(リスト)
  • javaでの配列コンセプトインタビューの質問(リスト)
  • RESTful Webサービスのインタビューの質問(リスト)
  • サーブレットとJSPのインタビューの質問と回答(リスト)
  • Java Webサービスのインタビューの質問と回答(リスト)