Multithreading- und Parallelitätsprobleme sind ein wesentlicher Bestandteil eines Java -Interviews. Wenn Sie eine Front-End-Informationsposition bei einer Aktieninvestitionsbank erhalten möchten, sollten Sie viele Fragen zum Multithreading vorbereiten. Multithreading und Parallelität sind ein sehr beliebtes Thema im Investmentbanking, insbesondere im Zusammenhang mit der Entwicklung elektronischer Transaktionen. Sie werden Interviewer viele verwirrende Java -Threading -Fragen stellen. Der Interviewer möchte nur sicher sein, dass der Interviewer über genügend Wissen über Java -Threading und Parallelität verfügt, da viele der Kandidaten nur oberflächlich sind. Elektronische Handelssysteme mit hoher Kapazität und niedriger Latenz für direkt marktorientierte Transaktionen sind von Natur aus gleichzeitig gleichzeitig. Im Folgenden sind Java -Threading -Fragen, die ich zu verschiedenen Zeiten und Orten gerne stellen möchte. Ich habe keine Antwort gegeben, aber ich werde Ihnen nach Möglichkeit Hinweise geben, und manchmal reichen diese Hinweise aus, um Fragen zu beantworten. Jetzt gibt es immer mehr Probleme, die sich auf JAVA5 -Pakete in Bezug auf gleichzeitige Tools und gleichzeitige Sammlungen beziehen. ThreadLocal, Blocking Queue, Semaphor und Concurrenthashmap sind bei diesen Fragen beliebter.
15 Java Multi-Thread-Interview Fragen und Antworten
1) Es gibt jetzt drei Threads T1, T2 und T3. Wie stellen Sie sicher, dass T2 nach der Ausführung von T1 ausgeführt wird und T3 nach der Ausführung von T2 ausgeführt wird?
Diese Thread -Frage wird normalerweise in der ersten Runde oder im Telefoninterview gestellt, um zu überprüfen, ob Sie mit der "Join" -Methode vertraut sind. Dieses Multi-Threading-Problem ist relativ einfach und kann mit der Join-Methode implementiert werden.
2) Was sind die Vorteile der Sperrgrenzfläche über den synchronisierten Block in Java? Sie müssen einen effizienten Cache implementieren, mit dem mehrere Benutzer gelesen werden können, aber nur ein Benutzer zum Schreiben, um seine Integrität aufrechtzuerhalten. Wie würden Sie es implementieren?
Der größte Vorteil von Sperrschnittstellen in Multi-Thread-und gleichzeitiger Programmierung besteht darin, dass sie Sperren für Lesen und Schreiben separat bereitstellen, die Sie zum Schreiben von Hochleistungsdatenstrukturen wie Concurrenthashmap und bedingter Blockierung zufriedenstellen können. Java -Thread -Interviewfragen werden zunehmend auf der Grundlage der Antworten des Interviewers gestellt. Ich empfehle dringend, Schlösser sorgfältig zu lesen, bevor Sie zu einem Multi-Thread-Interview gehen, da es derzeit zum Erstellen elektronischer Transaktionssystem-Client-Cache und Transaktionsverbindungsraum verwendet wird.
3) Was sind die Unterschiede zwischen Wartezeit- und Schlafmethoden in Java?
Java -Thread -Interviewfragen, die häufig während Telefoninterviews gestellt werden. Der größte Unterschied besteht darin, dass Wait das Schloss während des Wartens veröffentlicht, während der Schlaf immer wieder das Schloss hält. Warten wird normalerweise für Interaktionen zwischen den Threads verwendet, und der Schlaf wird normalerweise zur Pause der Ausführung verwendet.
4) Verwenden Sie Java, um blockierende Warteschlangen zu implementieren.
Dies ist eine relativ schwierige Frage mit Multi-Thread-Interview, die viele Ziele erreichen kann. Zunächst kann festgestellt werden, ob der Kandidat tatsächlich Programme in Java -Threads schreiben kann. Zweitens kann es das Verständnis des Kandidaten für gleichzeitige Szenarien erkennen, und Sie können viele Fragen basierend darauf stellen. Wenn er Wait () und benachrichtigen () () Methoden zur Implementierung von Blockierungswarteschlangen verwendet, können Sie ihn bitten, sie erneut mit den neuesten gleichzeitigen Klassen in Java 5 zu schreiben.
5) Verwenden Sie Java, um Code zu schreiben, um das Problem der Produzentenverbraucher zu lösen.
Es ist der obigen Frage sehr ähnlich, aber diese Frage ist klassischer. Manchmal werden in Interviews die folgenden Fragen gestellt. Wie löste ich das Problem des Produzenten-Verbrauchers in Java? Natürlich gibt es viele Lösungen. Ich habe eine Methode geteilt, die die Implementierung von Warteschlangen verwendet. Manchmal fragen sie sogar, wie sie das Problem von Philosophen essen können.
6) Wie werden Sie das Problem der Programmierung eines Programms lösen, das in Java Deadlock verursacht?
Dies ist meine Frage, dass die Frage zu Java-Thread-Interviews, obwohl Deadlock-Probleme beim Schreiben von Multi-Thread-Programmen sehr häufig sind, viele Kandidaten nicht mit Deadlock-kostenlosen Code (kein Deadlock-Code?) Schreiben können und sie kämpfen. Sagen Sie ihnen einfach, dass Sie über N -Ressourcen und N -Threads verfügen und alle Ressourcen benötigen, um einen Betrieb abzuschließen. Der Einfachheit halber kann N durch 2 ersetzt werden, je größer die Daten das Problem komplizierter erscheinen lassen. Weitere Informationen zu Deadlocks erhalten Sie, indem Sie Deadlocks in Java vermeiden.
7) Was ist Atombetrieb und was ist Atombetrieb in Java?
Sehr einfaches Java -Thread -Interview -Frage, die nächste Frage ist, dass Sie eine Atomoperation synchronisieren müssen.
8) Was ist die Schlüsselrolle von Volatile in Java? Wie benutze ich es? Wie unterscheidet es sich von der synchronisierten Methode in Java?
Da sich die Modelle von Java 5 und Java Memory geändert haben, sind sich Fadenprobleme basierend auf dem volatilen Schlüsselwort immer beliebter geworden. Sie sollten bereit sein, darüber zu antworten, wie volatile Variablen die Sichtbarkeit in einer gleichzeitigen Umgebung sicherstellen.
9) Was sind Wettbewerbsbedingungen? Wie entdecken und lösen Sie den Wettbewerb?
Dies ist eine Frage, die in der fortgeschrittenen Phase von Multi-Thread-Interviews auftritt. Die meisten Interviewer werden nach den Wettbewerbsbedingungen fragen, die Sie in letzter Zeit begegnen, und wie Sie es gelöst haben. Es gibt Zeiten, in denen sie einfachen Code schreiben und dann die Rennbedingungen für den Code erkennen können. Sie können sich auf meinen vorherigen Artikel über Java -Rennbedingungen beziehen. Meiner Meinung nach ist dies eine der besten Fragen des Java -Thread -Interviews, die die Erfahrung der Kandidaten bei der Lösung von Rassenbedingungen oder zum Schreiben von Code, der frei von Datenrennen oder einer anderen Rennbedingung ist, genau erkennen kann. Das beste Buch darüber ist "Parallelitätspraktiken in Java".
10) Wie werden Sie Thread Dump verwenden? Wie werden Sie den Thread -Dump analysieren?
In Unix können Sie Kill -3 verwenden, und dann druckt das Thread -Dump das Protokoll. In Windows können Sie "Strg+Break" verwenden. Sehr einfaches und professionelles Thread -Interview -Frage, aber es wird schwierig, wenn er Sie fragt, wie Sie es analysieren können.
11) Warum führen wir die Run () -Methode aus, wenn wir die Start () -Methode aufrufen, und warum können wir die Run () -Methode nicht direkt aufrufen?
Dies ist eine weitere sehr klassische Frage der Java Multithread -Interview. Dies ist auch meine Verwirrung, als ich anfing, Threading -Programme zu schreiben. Jetzt wird diese Frage normalerweise während des Telefoninterviews oder der ersten Runde des Junior- und Middle Java -Interviews gestellt. Die Antwort auf diese Frage sollte wie folgt sein: Wenn Sie die Start () -Methode aufrufen, erstellen Sie einen neuen Thread und führen den Code in der Run () -Methode aus. Wenn Sie jedoch die Run () -Methode direkt aufrufen, wird kein neuer Thread erstellt oder den Code ausgeführt, der den Thread aufruft. Lesen Sie den Artikel "Der Unterschied zwischen Start- und Laufmethode", den ich zuvor geschrieben habe, um weitere Informationen zu erhalten.
12) Wie weckst du einen blockierenden Thread in Java auf?
Dies ist eine schwierige Frage zum Faden und Blockieren, und es hat viele Lösungen. Wenn der Thread auf IO -Blockade trifft, denke ich nicht, dass es eine Möglichkeit gibt, den Thread abzubrechen. Wenn die Fadenblöcke aufgrund von Wait (), Sleep () oder Join () -Methoden blockieren, können Sie den Faden unterbrechen und ihn wecken, indem Sie eine InterruptedException werfen. Die "Wie man mit Blockierungsmethoden in Java umgeht", die ich zuvor geschrieben habe, hat viele Informationen über den Umgang mit Thread -Blockierungen.
13) Was ist der Unterschied zwischen Cycliibarriar und Countdownlatch in Java?
Dieses Threading -Problem wird hauptsächlich verwendet, um festzustellen, ob Sie mit gleichzeitigen Paketen in JDK5 vertraut sind. Der Unterschied zwischen diesen beiden besteht darin, dass Cyclicbarrier die bestandene Barriere wiederverwenden kann, während Countdownlatch nicht wiederverwendet werden kann.
14) Was ist ein unveränderliches Objekt und wie hilft es, gleichzeitige Anwendungen zu schreiben?
Eine weitere klassische Interview-Frage für Multi-Threading hängt nicht direkt mit Threads zusammen, hilft aber indirekt sehr. Diese Java -Interviewfrage kann sehr schwierig werden, wenn er Sie auffordert, ein unveränderliches Objekt zu schreiben, oder Sie fragt, warum String unveränderlich ist.
15) Was sind die häufigen Probleme, die Sie in einer Umgebung mit mehreren Threaden stoßen? Wie hast du es gelöst?
Allgemein in Multithread- und gleichzeitigen Programmen angetroffen, sind Speicherabschnitt, Rassenbedingungen, Deadlocks, Live-Schlösser und Hunger. Das Problem hat kein Ende, und wenn Sie es falsch verstehen, wird es schwierig zu entdecken und zu debuggen. Dies ist hauptsächlich interviewbasierte, nicht praktische anwendungsbasierte Java-Threading-Fragen.
Einige andere Fragen wurden hinzugefügt:
1) Was ist der Unterschied zwischen grüner und lokalem Faden in Java?
2) Der Unterschied zwischen Fäden und Prozessen?
3) Was ist der Kontextschalter beim Multithreading?
4) Der Unterschied zwischen Deadlock und Live Lock, der Unterschied zwischen Deadlock und Hunger?
5) Was ist der Thread -Planungsalgorithmus, der in Java verwendet wird?
6) Was ist Thread -Planung in Java?
7) Wie gehen Sie mit nicht befassbaren Ausnahmen im Thread um?
8) Was ist eine Thread -Gruppe und warum wird sie in Java nicht empfohlen?
9) Warum ist es besser, das Executor -Framework zu verwenden, als Threads mit Anwendungen zu erstellen und zu verwalten?
10) Was ist der Unterschied zwischen Testamentsvollstrecker und Testamentsvollstreckern in Java?
11) Wie kann ich herausfinden, welcher Thread die längste CPU -Zeit unter Windows und Linux verwendet?
Das obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, es wird für das Lernen aller hilfreich sein und ich hoffe, jeder wird Wulin.com mehr unterstützen.