1. Jetzt gibt es die Threads T1, T2 und T3. Wie stellen Sie sicher, dass der T2-Thread nach T1 und der T3-Thread nach T2 ausgeführt wird?
Diese Frage im Thread-Interview wird normalerweise während der ersten Interviewrunde oder im Telefoninterview gestellt. Diese Multi-Thread-Frage soll testen, ob der Interviewer mit dem Konzept der Join-Methode vertraut ist. Die Antwort ist ebenfalls sehr einfach: Sie können die Join-Methode der Thread-Klasse verwenden, um diesen Effekt zu erzielen.
2. Welche Vorteile hat die neue Lock-Schnittstelle in Java gegenüber synchronisierten Blöcken? Wenn Sie aufgefordert werden, einen Hochleistungscache zu implementieren, der gleichzeitige Lesevorgänge und einzelne Schreibvorgänge unterstützt, wie stellen Sie die Datenintegrität sicher?
Der größte Vorteil der Verwendung der Sperrschnittstelle bei der Multithread- und gleichzeitigen Programmierung besteht darin, dass sie zwei separate Sperren zum Lesen und Schreiben bereitstellt, sodass Sie leistungsstarke Datenstrukturen wie ConcurrentHashMap und Conditional erstellen können Blockierung.
Diese Java-Thread-Interviewfrage wird immer häufiger gestellt, und nachfolgende Interviewfragen basieren auf der Antwort des Interviewers auf diese Frage.
Ich empfehle dringend, vor jedem Java-Multithreading-Interview mehr über Sperren zu lesen, da Sperren heutzutage häufig zum Aufbau von Caches in der Client- und Dateninteraktion in elektronischen Handelssystemen verwendet werden.
3. Was ist der Unterschied zwischen Warte- und Schlafmethoden in Java?
Werfen wir einen Blick auf eine weitere häufig gestellte Thread-Interviewfrage. Diese Frage wird oft in Telefoninterviews gestellt. Der Hauptunterschied zwischen den beiden besteht darin, auf die Freigabe der Sperre und den Monitor zu warten. Die Schlafmethode gibt während des Wartens keine Sperren oder Überwachungen frei. Die Wartemethode wird hauptsächlich für die Kommunikation zwischen Threads verwendet, während der Ruhezustand nur während der Ausführung pausiert. Sie können meinen anderen Artikel über Warten und Schlafen in Java lesen.
4. Wie implementiert man eine Blockierungswarteschlange in Java?
Dies ist eine relativ schwierige Java-Multithreading-Interviewfrage mit vielen Testpunkten. Es wird untersucht, ob der Interviewer tatsächlich Java-Multithread-Code geschrieben hat, und das Verständnis des Interviewers für Parallelitätsszenarien wird untersucht. Und Sie können viele Folgefragen basierend auf dem Code des Interviewers stellen. Wenn er die Blockierungswarteschlange mit den Methoden wait() und notify() erfolgreich implementiert, können Sie ihn mit der Java 5-Parallelitätsklasse erneut implementieren lassen.
5. Wie schreibe ich Code, um das Producer-Consumer-Problem in Java zu lösen?
Die Antwort ähnelt der obigen Frage zu Threads. Diese Frage ist bei der Arbeit sehr typisch, aber manchmal stellen Interviewer diese Art von Frage, wie zum Beispiel „Wie löst man das Producer-Consumer-Problem?“ Java?" Eigentlich gibt es viele Lösungen. Ich habe die Lösung mit BlockingQueue in Java geteilt. Manchmal werden Sie sogar gebeten, Ihnen eine Lösung für das Problem der Essphilosophen zu geben.
6. Schreiben Sie einen Deadlock-Code. Wie löst man Deadlocks in Java?
Das ist meine Lieblingsfrage im Java-Multithreading-Interview, denn obwohl Deadlocks bei der Multithread-Parallelprogrammierung sehr häufig vorkommen, sind viele Befragte immer noch ratlos und nicht in der Lage, Deadlock-freien Code zu schreiben.
Fragen Sie sie einfach, ob es N Ressourcen und N Threads zum Ausführen einer Operation gibt, und fordern Sie dann alle Ressourcen an.
N kann hier im einfachsten Fall 2 sein, oder es kann eine sehr große Zahl sein, um das Problem zu komplizieren.
7. Was sind atomare Operationen? Was sind die atomaren Operationen in Java?
Dies ist eine einfache Java-Thread-Interviewfrage. Eine weitere unmittelbare Frage wäre: Müssen Sie atomare Operationen synchronisieren? Sie können diesen Artikel lesen, um mehr über die Java-Synchronisierung zu erfahren.
8. Was ist das Schlüsselwort volatile in Java? Wie verwenden Sie es? Wie unterscheidet es sich von synchronisierten Methoden in Java?
Seit der Anpassung des Schlüsselworts „flüchtig“ und des Java-Speichermodells in Java 5 treten Threading-Probleme im Zusammenhang mit dem Schlüsselwort „flüchtig“ immer häufiger auf. Es ist wichtig zu verstehen, wie flüchtige Variablen Sichtbarkeit, Reihenfolge und Konsistenz in einer gleichzeitigen Umgebung gewährleisten.
9. Was ist eine Rennbedingung? Wie erkennt und löst man Race Conditions?
Diese Java-Multithreading-Frage taucht normalerweise in Vorstellungsgesprächen für Führungskräfte auf. Die meisten Interviewer werden Sie nach der letzten Rennbedingung fragen, auf die Sie gestoßen sind, und wie Sie sie gelöst haben. Manchmal schreiben sie auch einen einfachen Code, damit Sie die Rennbedingung herausfinden können. Sie können meinen Artikel Race Conditions in Java lesen. Meiner Meinung nach ist dies eine der besten Java-Threading-Interviewfragen und testet die Erfahrung des Kandidaten bei der Lösung von Race-Bedingungen oder beim Schreiben von Code, der frei von Daten-Race-Bedingungen und Race-Bedingungen ist.
10. Wie speichert man Threads in Java? Wie kann man es analysieren?
Unter UNIX können Sie kill -3 verwenden und das Thread-Dump-Protokoll wird auf dem Bildschirm gedruckt und kann mit STRG+Pause angezeigt werden. Dies ist nur eine einfachere Thread-Interview-Frage. Wenn Sie etwas geschickt sind, werden Sie gefragt, wie Sie Dump-Protokolle analysieren. Thread-Dump-Protokolle sind sehr nützlich für die Analyse von Deadlock-Situationen.
11. Da die start()-Methode die run()-Methode aufruft, warum rufen wir dann die start()-Methode auf, anstatt die run()-Methode direkt aufzurufen?
Dies ist eine grundlegende Java-Multithreading-Interviewfrage. Als ich anfing, war ich zunächst etwas verwirrt über die Multithread-Programmierung. Heutzutage treffe ich mich normalerweise in einem Telefoninterview oder einem Einzelgespräch für Java-Intermediate-Level-Interviews.
Die Antwort auf diese Frage lautet: Wenn Sie die start()-Methode aufrufen, erstellt sie einen neuen Thread und führt den Code in der run()-Methode aus. Wenn Sie die Methode run() direkt aufrufen, wird kein neuer Thread erstellt und der Code in der Methode wird im Thread des aktuellen Aufrufers ausgeführt.
12. Wie weckt man einen blockierten Thread in Java?
Das ist eine knifflige Frage zu Threads. Es gibt viele Gründe für die Blockierung. Wenn es sich um eine E/A-Blockierung handelt, gibt es meines Erachtens keine Möglichkeit, den Thread zu unterbrechen (bitte sagen Sie mir, ob dies der Fall ist). Wenn der Thread hingegen aufgrund eines Aufrufs der Methoden wait(), Sleep() oder Join() blockiert ist, können Sie den Thread unterbrechen und durch Auslösen einer InterruptedException-Ausnahme aufwecken.
13. Was ist der Unterschied zwischen CyclicBarriar und CountdownLatch in Java?
Die meisten der aktuellen Java-Thread-Interviewfragen testen Ihre Beherrschung des JDK 5-Concurrent-Pakets. Einer der Unterschiede zwischen den beiden besteht darin, dass CyclicBarrier nach dem Öffnen der Barriere wiederverwendet werden kann (alle Threads erreichen den Barrierepunkt). Aber CountDownLatch funktioniert nicht. Wenn Sie mehr erfahren möchten, können Sie den Kurs Multithreading und Parallel Computing in Java belegen.
14. Was ist eine unveränderliche Klasse? Wie hilft es beim Schreiben gleichzeitiger Anwendungen?
Obwohl diese Interviewfrage nicht direkt mit Threads zusammenhängt, ist die indirekte Auswirkung auch großartig. Wenn der Interviewer Sie dann auffordert, eine unveränderliche Klasse zu schreiben, oder Sie fragt, warum String in Java unveränderlich ist, werden die Interviewfragen komplizierter.
15. Was sind die häufigsten Probleme, auf die Sie in einer Multithread-Umgebung stoßen? Wie haben Sie es gelöst?
Speicherinterferenz, Race Conditions, Deadlock, Livelock und Thread-Starvation sind relativ repräsentative Probleme bei Multithreading und gleichzeitiger Programmierung. Diese Probleme sind endlos und schwer zu lokalisieren und zu beheben.
Das obige ist der detaillierte Inhalt von15 Fragen und Antworten zum Java Thread Concurrency-Interview. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!