ほとんどの最初の層のメーカーのようにインタビュアーは15マルチスレッドのJavaのインタビューの質問しました

序文

マルチスレッドと並行性の問題は、それらをインタビュー任意のJavaの重要な部分です。あなたはより多くのジョブを取得したい場合は、マルチスレッド処理についての質問の多くを準備する必要があります。

彼らはインタビュアーに混乱のJavaスレッドの問題の多くを聞いてきます。インタビュアーは、ただ単に表面に浮い候補者が多いため、インタビュアーは、Javaスレッドと並列性の十分な知識を持っていることを確認したかったです。今Java5を参照し、同時実行ツールと同時コレクションに関する契約上の問題が増加しています。これらの問題はThreadLocalを、セマフォConcurrentHashMapの多くの人気を数える、キューをブロックします。

v2-1d4cfa73fe08a5bf316cbaea7a42d472_hd.webp



マルチスレッドのJava面接の質問と回答


1. T1、T2、T3 3件のスレッドがありますが、どのようにT2での実行の実装後にT1、T3での実行を実装した後にT2を確保するのですか?

この質問は、通常の目的は、あなたが「参加」する方法に精通しているかどうかを検出することで、最初のラウンドまたは電話面接の段階でスレッドを尋ねています。このマルチスレッドの問題は、それが参加する方法を使用して達成することができ、比較的簡単です。


2.利点があるものよりもJavaのsynchronizedブロックのインターフェイスをロック?あなたは、その完全性を維持するためには、あなたがそれを達成するために何をするだろう、複数のユーザーが読み取ることができ、効率的なキャッシュを実装する必要がありますが、書き込みのみをユーザーに許可しますか?

ロックインターフェースマルチスレッドと並行プログラミングの最大の利点は、彼らが読んで、それぞれ、それはあなたがConcurrentHashMapのような条件付きの高性能なデータ構造や閉塞を書く満たすことができ、書き込みにロックを提供するということです。Javaはインタビューの質問は、インタビュアーの質問への回答に基づいて、より多くのスレッドになります。それはあなたがマルチスレッドの面接に行く前にスペースを接続されたエンド側のキャッシュと取引の電子取引システムを構築するため、現在の顧客の大多数であるので、私は強く、慎重にロックを読むことをお勧めします。


3.待機とスリープJavaメソッドでは違うのですか?

通常、多くの場合、電話インタビューのJavaスレッドの面接の質問に尋ねました。ロックを解除するために待っている間の最大の違いは待っている、と睡眠は、ロックを保持してきました。通常、スレッド間の相互作用のために使用さ待って、睡眠は、多くの場合、実行を一時停止するために使用されます。


4.キューをブロックし、Javaで実装されています。

これは、多くの目的を達成することができ、マルチスレッド比較的厳しい面接の質問です。まず、それは実際にはJavaスレッドでプログラムを書くことができる候補者かどうかを検出することができ、第二、同時実行シナリオの候補者の理解を検出することができ、あなたはこれに基づいて多くの質問を尋ねることができます。彼は(待ちでキューをブロック達成することである)と、()メソッドに通知した場合は、もう一度書くためにJava 5の並行クラスで最新のを使用するために彼を求めることができます。


消費者問題 - プロデューサーを解決するためのJava 5.書き込みコード。

非常に上記の問題に似ていますが、問題は、より古典的で、インタビューは以下の質問をしますがございます。Javaプロデューサに解決するためにどのように - 消費者問題、当然のことながら、多くのソリューションは、私はキューを遮断することによって実施される方法を共有する必要があります。時には彼らも、食事する哲学者の問題をどのように達成するか頼みますよ。


6. Javaプログラミングは、プログラム内のデッドロックにつながる、あなたはどのように解決するのだろうか?

これは私のお気に入りのインタビューの質問のJavaスレッド、デッドロックマルチスレッドプログラムを書くことは非常に一般的ですが、場合でも、無料のコード(無デッドロックコードを?)デッドロックの書き込みができない多くの候補者は、彼らが苦労しているためです。ちょうどあなたが資源やN、N個のスレッドを持っていることを伝え、あなたが操作を完了するためにすべてのリソースを必要とします。ここでは簡単にするために、N 2を交換することが可能で、大規模なデータは、より複雑な問題を見ていきます。Javaでデッドロックを回避することにより、デッドロックに関する詳細な情報を取得します。


7. Javaのあるもので、原子、アトミック操作とは何ですか?

非常に単純なJavaの面接の質問スレッドは、次の質問は、あなたがアトミック操作を同期する必要があるということです。


どのような役割で揮発性キー8.Java?どのようにそれを使用するには?Javaでは、同期方法とその違いは何ですか?

Javaの5とJavaメモリモデルの変更以来、スレッドの問題volatileキーワードますます人気に基づきます。私たちは、同時実行環境でその揮発性変数の可視性、秩序と一貫性を確保する方法についての質問に答える準備ができているはずです。


9.競合状態とは何ですか?あなたは競争をどのように特定して解決しますか?

これは、マルチスレッドインタビューの質問の進行した段階で表示されています。ほとんどの面接では、発生する最寄りの競争条件を聞いてきますし、どのように解決しました。いくつかの時間は、彼らが簡単なコードを記述し、その後、あなたはレースの条件コードを検出できるようになります。私は投稿する前にJavaは、競争の条件に記事を参照することができます。私の意見では、これは最高のJavaのインタビューの質問スレッドの一つであり、それは競技経験、またはデータ競合や他の競合状態のないコードを書くの条件に対処するための正確な候補を検出することができます。この点で最高の本は、「Javaで並行処理の実践」です。


10.どのようにスレッドダンプを使用するのでしょうか?どのようにスレッドダンプを分析するのでしょうか?

UNIXでは、あなたは殺す-3、その後、スレッドダンプは、あなたが「CTRL +ブレイク」を使用することができますウィンドウにログインし、印刷します使用することができます。彼はあなたがどのようにそれを分析するために要求した場合、非常にシンプルで、プロのスレッド面接の質問は、しかし、それは非常に困難になります。


これは、実行を実行します()メソッド11.なぜ我々はstart()メソッドは、なぜ我々は直接run()メソッドを呼び出すことはできませんを呼ぶのですか?

これは別の非常に古典的なマルチスレッドのJavaの面接の質問です。これは私がちょうど時間を混乱マルチスレッド・プログラムを書き始めたものです。さて、問題は尋ねたインタビューの最初のラウンドでの電話インタビューやミドルクラスJavaで通常です。この質問に対する答えは、あなたが新しいスレッドを作成し、内部のrun()メソッド内のコードを実行しますstart()メソッドを呼び出すときに、このようにする必要があります。あなただけのrun()メソッドを呼び出した場合でも、それは、呼び出し元のスレッドのコードを実行していない新しいスレッドを作成しません。私はより多くの情報については、この記事を読む前に、「開始と実行のアプローチの違い」が書き込まれます。


どのように12.Javaでブロックされたスレッドを覚ますのですか?

これは、スレッドとトリッキーなブロック上の問題であり、それは多くのソリューションを提供しています。あなたがIOをブロックするスレッドが発生した場合、およびIは、スレッドを中止する方法はないと思います。呼び出しが待機するためのスレッドがブロックされている場合は()、スリープ()、または方法は、あなたがスレッドを中断することができ、かつ例外:InterruptedExceptionを投げることによって、それをウェイクアップさせ()に参加。私は、ブロックされた処理スレッドに関する多くの情報がありますが、「Javaでのブロッキング方法に対処する方法」の前に書きました。


13. JavaのCycliBarriarとされたCountDownLatchの違いは何ですか?

このスレッドの問題は主にあなたがJDK5と契約に精通しているかどうかを検出するために使用されます。これら2つの違いは、CyclicBarrierを再利用可能な障害物が渡されていているが、たCountDownLatchを再利用することはできません。


14.不変である何、それが助けに行くの同時アプリケーションを作成する必要がありますか?

別のマルチスレッド古典的な面接の質問、直接スレッドに関連しますが、間接的に多くのことを助けていません。このJava面接の質問は、彼が不変オブジェクトを書くためにあなたを依頼された場合、非常にトリッキーになる、またはStringは不変である理由を尋ねことができます。


15.マルチスレッド環境がある中で、あなたが遭遇する一般的な問題は何ですか?それをどのように解決したのですか?

マルチスレッドと並列プログラムは、多くの場合、メモリ・インタフェース、競合状態、デッドロック、ライブロックと飢餓の出会いを持っています。問題は、あなたはそれが間違って取得する場合、見つけてデバッグすることは困難だろう、十分ではありません。これは、ほとんどの実際のアプリケーションに基づいて面接ではなく、Javaのスレッドの問題に基づいています。


最後に、
私たちは、ヨーヨーは、物品、支援への感謝を覚えている賞賛のポイントのように、交換を歓迎します!


おすすめ

転載: blog.51cto.com/14442094/2432439