#1. 現在、スレッド T1、T2、および T3 があります。 T2 スレッドが T1 の後に実行され、T3 スレッドが T2 の後に実行されるようにするにはどうすればよいでしょうか?
このスレッドの面接の質問は、通常、一次面接または電話面接で尋ねられます。このマルチスレッドの質問は、面接官が結合メソッドの概念に精通しているかどうかをテストするように設計されています。答えも非常に簡単です。Thread クラスの join メソッドを使用すると、この効果を実現できます。
2. Java の新しい Lock インターフェイスには、同期ブロックと比べてどのような利点がありますか?同時読み取りと単一書き込みをサポートする高性能キャッシュの実装を求められた場合、データの整合性をどのように確保すればよいでしょうか。
マルチスレッドおよび同時プログラミングでロック インターフェイスを使用する最大の利点は、読み取りと書き込みに 2 つの個別のロックが提供され、ConcurrentHashMap や条件付きなどの高性能データ構造を構築できることです。ブロッキング。
この Java スレッドの面接の質問はますます一般的になってきており、その後の面接の質問は、この質問に対する面接官の回答に基づいています。
Java マルチスレッドに関するインタビューの前に、ロックについて詳しく読むことを強くお勧めします。ロックは、今日の電子取引システムでクライアントのキャッシュやデータのやり取りを構築するために頻繁に使用されているためです。
3. Java の wait メソッドと sleep メソッドの違いは何ですか?
スレッドの面接でよくある質問をもう 1 つ見てみましょう。この質問は電話インタビューでよく聞かれます。 2 つの主な違いは、ロックが解除されるのを待つこととモニターです。 sleep メソッドは、待機中にロックやモニターを解放しません。 wait メソッドは主にスレッド間通信に使用されますが、sleep は実行中に一時停止するだけです。 Java での待機とスリープに関する私の他の記事を読むことができます。
4. Java でブロッキング キューを実装するにはどうすればよいですか?
これは、多くの検査ポイントがある比較的難しい Java マルチスレッド面接の質問です。これは、面接官が実際に Java マルチスレッド コードを作成したかどうかを検査し、面接官が同時実行シナリオについて理解しているかどうかを検査します。面接官のコードに基づいて、多くのフォローアップの質問をすることができます。面接官が wait() および Notice() メソッドを使用してブロッキング キューを正常に実装した場合は、Java 5 同時実行クラスを使用してそれを再実装させることができます。
5. Java のプロデューサーとコンシューマーの問題を解決するコードをどのように記述するか?
答えは、スレッドに関する上記の質問と似ています。この質問は職場では非常に一般的ですが、面接官がこの種の質問をすることがあります。「生産者と消費者の問題をどのように解決するか」 Java?」実際には、解決策はたくさんあります。 Java の BlockingQueue を使用したソリューションを共有しました。場合によっては、食事の哲学者の問題の解決策を教えてほしいと頼まれることもあります。
6. デッドロック コードを作成します。 Java でデッドロックを解決するにはどうすればよいですか?
これは、私のお気に入りの Java マルチスレッド インタビューの質問です。マルチスレッド同時プログラミングではデッドロックが非常によくあるにもかかわらず、多くのインタビュー対象者がまだ頭を悩ませており、デッドロックのないコードを書くことができないからです。
操作を実行するための N 個のリソースと N 個のスレッドがあるかどうかを尋ね、すべてのリソースを要求します。ここでの
N は、最も単純なケースとして 2 である場合もありますが、大きな数になると問題が複雑になる場合もあります。
7. アトミック操作とは何ですか? Java のアトミック操作とは何ですか?
これは、Java スレッドのインタビューの簡単な質問です。もう 1 つの当面の疑問は、アトミック操作を同期する必要があるかどうかということです。 Java 同期について詳しくは、この記事をご覧ください。
8. Java の volatile キーワードとは何ですか?それをどうやって使いますか? Java の同期メソッドとの違いは何ですか?
Java 5 での volatile キーワードと Java メモリ モデルの調整以来、volatile キーワードに関連するスレッドの問題がますます一般的になりました。揮発性変数が同時環境での可視性、順序付け、一貫性をどのように確保するかを理解することが重要です。
9. 競合状態とは何ですか?競合状態をどのように検出して解決しますか?
この Java マルチスレッドに関する質問は、通常、上級インタビューで取り上げられます。ほとんどの面接官は、最後に発生した競合状態とそれをどのように解決したかについて質問し、場合によっては、競合状態を発見できるようにするための簡単なコードを作成することもあります。私の記事「Java の競合状態」を参照してください。私の意見では、これは Java スレッドの面接で最高の質問の 1 つであり、競合状態を解決したり、データ競合や競合状態のないコードを書いたりする際の候補者の経験をテストします。
10. Java でスレッドをダンプするにはどうすればよいですか?どのように分析すればよいでしょうか?
UNIX では、kill -3 を使用すると、スレッド ダンプ ログが画面に出力され、CTRL Break を使用して表示できます。これはスレッドのインタビューの簡単な質問です。少し賢い人であれば、ダンプ ログを分析する方法を尋ねられるでしょう。スレッド ダンプ ログは、デッドロック状況を分析するのに非常に役立ちます。
11. start() メソッドは run() メソッドを呼び出すのに、なぜ run() メソッドを直接呼び出すのではなく start() メソッドを呼び出すのでしょうか?
これは、Java マルチスレッドに関する基本的な面接の質問です。マルチスレッドプログラミングを始めたばかりの頃は、最初は少し戸惑いました。現在では、Java 中級レベルの面接では電話面接か 1 ラウンド面接で会うことが多いです。
この質問に対する答えはこれです。 start() メソッドを呼び出すと、新しいスレッドが作成され、run() メソッドのコードが実行されます。 run() メソッドを直接呼び出すと、新しいスレッドは作成されず、メソッド内のコードは現在の呼び出し元のスレッドで実行されます。
12. Java でブロックされたスレッドを起動するにはどうすればよいですか?
これはスレッドに関する難しい質問です。ブロックにはさまざまな理由がありますが、IO ブロックの場合、スレッドを中断する方法はないと思います (ある場合は教えてください)。一方、wait()、sleep()、または join() メソッドの呼び出しによってスレッドがブロックされた場合は、InterruptedException 例外をスローすることでスレッドを中断し、ウェイクアップすることができます。
13. Java の CyclicBarriar と CountdownLatch の違いは何ですか?
最近の Java スレッドのインタビューの質問のほとんどは、JDK 5 同時実行パッケージの習熟度をテストするものです。 2 つの違いの 1 つは、バリアがオープンされた後 (すべてのスレッドがバリア ポイントに到達した後)、CyclicBarrier を再利用できることです。ただし、CountDownLatch は機能しません。さらに詳しく学びたい場合は、「Java でのマルチスレッドと並列コンピューティング」コースを受講してください。
14. 不変クラスとは何ですか?同時アプリケーションの作成にどのように役立ちますか?
このインタビューの質問はスレッドとは直接関係ありませんが、間接的な影響も大きいです。その後、面接官が不変クラスを書くように求めたり、Java の String が不変である理由を尋ねたりすると、面接の質問はさらに複雑になります。
15. マルチスレッド環境で発生する最も一般的な問題は何ですか?どうやって解決しましたか?
メモリ干渉、競合状態、デッドロック、ライブロック、およびスレッドの枯渇は、マルチスレッドおよび同時プログラミングにおける比較的代表的な問題です。これらの問題は無限にあり、特定してデバッグするのは困難です。
以上が15 Java スレッド同時実行に関するインタビューの質問と回答の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

mPDF
mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

DVWA
Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、

SecLists
SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

メモ帳++7.3.1
使いやすく無料のコードエディター

MinGW - Minimalist GNU for Windows
このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。
