Die Fähigkeiten, die ein Java-Programmierer mit 3 Jahren Berufserfahrung besitzen sollte, ist für Java-Programmierer möglicherweise wichtiger. Ich möchte hier erklären, dass nicht jeder unten aufgeführte Beruf etwas ist, das jeder beherrschen kann – aber je mehr man beherrscht, desto höher ist am Ende die Bewertung und das Gehalt.
1. Grundlegende Syntax
Dazu gehören die Funktionen von statischen, finalen, transienten und anderen Schlüsselwörtern, das Prinzip der foreach-Schleife usw. Im heutigen Interview habe ich Sie gefragt, was das Schlüsselwort „static“ bewirkt. Wenn Sie auf statische, modifizierte Variablen und Methoden antworten, denke ich, dass Sie „auf statische innere Klasse“ antworten. Ich denke, Sie sind gut, ich werde mit Ihrer Antwort auf das statische Leitfadenpaket sehr zufrieden sein, da ich sehe, dass Sie sehr daran interessiert sind, Technologie zu erforschen.
Ich erinnere mich an die ausführlichste Zeit, als der Interviewer mich direkt nach dem zugrunde liegenden Implementierungsprinzip des Schlüsselworts „Volatil“ fragte (übrigens sind Interviewen und Befragtwerden relativ. Der Interviewer kann diese Frage dem Interviewer stellen Außerdem habe ich das Gefühl, dass der Interviewer auch gerne Technik studiert, was den guten Eindruck des Interviewers vom Unternehmen steigert. Ich habe mich schließlich für das Unternehmen entschieden, das diese Frage gestellt hat – je einfacher die Frage ist , desto offensichtlicher ist es, dass die meisten anderen Menschen Ihre Technologie auf der Grundlage der Tiefe und dann der Breite betrachten.
2. Die Sammlung
ist sehr wichtig und muss erfragt werden. Im Wesentlichen handelt es sich um List, Map und Set. Sie fragen nach den zugrunde liegenden Implementierungsprinzipien verschiedener Implementierungsklassen und den Vor- und Nachteilen von Implementierungsklassen.
Was Sammlungen beherrschen müssen, sind die Implementierungsprinzipien von ArrayList, LinkedList, Hashtable, HashMap, ConcurrentHashMap und HashSet. Wenn Sie die Fragen fließend beantworten können, wäre es großartig, wenn Sie den CopyOnWrite-Container und die Warteschlange beherrschen . Eine weitere Sache: ConcurrentHashMap-Fragen werden in Interviews häufig gestellt, wahrscheinlich weil dieser Kurs viele Fragen zu ConcurrentHashMap generieren kann. Ich werde den Internetnutzern drei Antworten oder Forschungsanweisungen geben:
(1)Sperrsegmentierung von ConcurrentHashMap Technologie.
(2) Ob das Lesen von ConcurrentHashMap gesperrt werden muss und warum.
(3) Ist der Iterator von ConcurrentHashMap ein stark konsistenter Iterator oder ein schwach konsistenter Iterator?
3. Rahmen
Es ist ein Klischee, etwas, das in Interviews gefragt werden muss. Im Allgemeinen fragen sie Sie nach dem in Ihrem Projekt verwendeten Framework und geben Ihnen dann einige Szenarien, in denen Sie gefragt werden, wie Sie das Framework verwenden. Wenn ich beispielsweise etwas tun möchte, wenn Spring die Bean initialisiert, was soll ich tun? Wenn ich die Bohne zerstören möchte, wie man etwas macht, den Unterschied zwischen $ und # in MyBatis usw., ist das alles kein Problem, wenn man eine gute Ansammlung hat und die Details des Frameworks lernt.
Wenn Sie die oben genannten Fragen gut beantworten, wird der Interviewer häufig ausführliche Fragen zu den Implementierungsprinzipien des Frameworks stellen. Die am häufigsten gestellte Frage ist das Implementierungsprinzip von Spring AOP. Dies ist natürlich sehr einfach, auch wenn Sie nicht wissen, wie man es vorbereitet. Das Perverseste, was mir begegnete, war, mich zu bitten, das UML-Diagramm der Spring's Bean Factory-Implementierung zu zeichnen. Natürlich wäre ich nie in der Lage, eine so tiefgreifende Frage zu beantworten/(ㄒoㄒ)/~~
4 . Datenbank
In neun von zehn Fällen wird auch die Datenbank abgefragt. Ich werde nicht auf einige grundlegende Dinge eingehen, wie den Unterschied zwischen allen, Left-Join, mehreren Indizes und deren Unterschiede. Wichtiger ist die Optimierung der Datenbankleistung. Wenn Sie nichts über die Optimierung der Datenbankleistung wissen Wenn Sie Zeit haben, empfiehlt es sich, sich vor dem Vorstellungsgespräch ein bis zwei Tage gezielt auf die Grundlagen von SQL und der SQL-Optimierung vorzubereiten.
Aber machen Sie sich keine Sorgen um die Datenbank. Wenn Sie sich mit Datenbanken nicht auskennen und über sehr gute Grundkenntnisse verfügen, werden Sie wahrscheinlich zu 90 % eingestellt Zuerst in der Datenbank Es ist keine sehr anspruchsvolle Abteilung.
5. Einige Fragen zum Web
Java ist hauptsächlich auf das Web ausgerichtet, daher müssen auch einige Fragen zum Web gestellt werden.
Die beiden am häufigsten gestellten Fragen, auf die ich gestoßen bin, sind:
Sprechen Sie über verschiedene Implementierungsmethoden für verteilte Sitzungen.
Die Beantwortung der vier häufig gestellten Fragen wird den Interviewer natürlich sehr zufrieden stellen.
Eine weitere häufig gestellte Frage ist: Sprechen Sie über den Unterschied und die Verbindung zwischen Session und Cookie und das Implementierungsprinzip von Session. Zusätzlich zu diesen beiden Fragen sind die Inhalte im Web. Darüber hinaus können auch einige Details wie der Unterschied zwischen Get/Post, Forward/Redirect und das Implementierungsprinzip von HTTPS untersucht werden.
6. Datenstruktur- und Algorithmusanalyse
Für einen Programmierer ist die Datenstruktur- und Algorithmusanalyse besser als nicht und kann bei der Arbeit definitiv nützlich sein. Arrays und verknüpfte Listen sind detaillierter, aber nicht schwierig. Die wichtigeren Bäume sind AVL-Bäume und Rot-Schwarz-Bäume Sie müssen wissen, was ein binärer Suchbaum ist und was der Unterschied zwischen einem AVL-Baum und einem Rot-Schwarz-Baum ist. Ich erinnere mich an ein Interview, ein Interviewer sprach mit mir über den Index der Datenbank und fragte mich: Wissen Sie, welche Art von Datenstruktur zur Implementierung des Index verwendet wird?
Ich habe die Hash-Tabelle erraten, mich aber geirrt. Er fragte erneut: Wissen Sie, warum Bäume verwendet werden? Ich antwortete, dass es möglicherweise mehr Konflikte in der Hash-Tabelle gebe, was die zeitliche Komplexität der Suche angesichts von Dutzenden Millionen oder sogar Hunderten Millionen erheblich erhöhen würde von Daten. Der Baum ist relativ stabil und kann grundsätzlich garantieren, dass Sie die gewünschten Daten höchstens zwanzig oder dreißig Mal finden können. Die andere Partei sagte, dass dies nicht vollständig korrekt sei, und ich habe auch verstanden, warum wir sie verwenden sollten Baum. Ich werde hier nicht näher darauf eingehen. Warum glauben Sie, dass Indizes mithilfe von Bäumen implementiert werden müssen? Ich möchte es studieren. Ich erinnere mich, dass ein Interviewer mich gefragt hat, welche Art von Sortiermethode die Collections.sort-Methode verwendet. Er hat drei Liter Blut erbrochen. Um zu zeigen, dass ich sachkundig bin und einige Nachforschungen zur Algorithmusanalyse (⊙﹏⊙)b angestellt habe, beiße ich natürlich trotzdem in den sauren Apfel und sage, dass es sich möglicherweise um Blasensortierung handelt. Natürlich ist die Antwort definitiv nicht. Interessierte Internetnutzer können einen Blick auf den Quellcode der Collections.sort-Methode werfen, die eine Sortiermethode namens TimSort verwendet, bei der es sich um eine erweiterte Zusammenführungssortiermethode handelt.
7. Java Virtual Machine
Zu meiner Überraschung sollte Java Virtual Machine ein sehr wichtiger Inhalt sein. Daher liegt die Wahrscheinlichkeit, in diesen Unternehmen danach gefragt zu werden, bei nahezu 0 . Wissen Sie, ich habe letztes Jahr viel Zeit damit verbracht, die Java Virtual Machine zu studieren, und habe nicht weniger als fünf Mal „Ausführliches Verständnis der Java Virtual Machine: JVM Advanced Features and Best Practices“ von Lehrer Guang Zhou Zhiming gelesen.
Um auf das Thema zurückzukommen: Obwohl die Java Virtual Machine nicht gefragt wurde, denke ich, dass es dennoch notwendig ist, sie zu studieren. Ich werde einfach einen Überblick geben und über die wichtigeren Inhalte der Java Virtual Machine sprechen:
(1)Speicherlayout der Java Virtual Machine
(2) GC-Algorithmus und mehrere Garbage Collectors
(3) Klassenlademechanismus, d. h. übergeordnetes Delegationsmodell
(4)Java-Speichermodell
(5)Passiert-vorher-Regeln
(6)Volatile-Keyword-Verwendungsregeln
Vielleicht ist das Interview nutzlos, aber Auf dem Weg zum Meister Unterwegs ist es ein Muss.
8. Designmuster
Ursprünglich dachte ich, es sei ein sehr wichtiger Inhalt, aber es stellte sich heraus, dass ich während des Interviews bei Alibaba B2B Division nur einmal gefragt wurde, und die Frage betraf: das Dekorationsmuster.
Natürlich können wir nicht so nützlich sein und für Vorstellungsgespräche lernen. Designmuster sind bei der Arbeit immer noch sehr wichtig und nützlich. Konzentrieren Sie sich einfach auf die zehn häufig verwendeten Designmuster bei Vorstellungsgesprächen und Antworten zu Mustern gehen hauptsächlich in drei Richtungen:
(1) Welche Designmuster werden in Ihrem Projekt verwendet und wie werden sie verwendet?
(2) Kennen Sie die Vor- und Nachteile häufig verwendeter Entwurfsmuster.
(3) Fähigkeit, UML-Diagramme häufig verwendeter Entwurfsmuster zu zeichnen.
9. Multithreading
Dies ist auch eine Frage, die man unbedingt stellen muss. Aufgrund meiner dreijährigen Berufserfahrung werde ich Sie grundsätzlich nicht fragen, wie Sie Multithreading implementieren, sondern tiefergehende Fragen stellen, z. B. den Unterschied und die Verbindung zwischen Thread und Runnable und was passiert, wenn Sie einen Thread starten mehrmals und welchen Status der Thread hat. Dies ist natürlich nur die grundlegendste Frage. Unerwarteterweise wurde mir in mehreren Interviews fast gleichzeitig die gleiche Frage gestellt, mit unterschiedlicher Art und Weise, sie zu stellen.
Zusammenfassend bedeutet dies:
Angenommen, es gibt vier Threads, Thread1, Thread2, ThreaD3 und Thread4, wobei jeweils die Größen der vier Festplatten C, D, E und F gezählt werden . Alle Threads wurden gezählt, indem man sie an Thread5 weitergibt.
Haben kluge Internetnutzer eine Antwort auf diese Frage? Es gibt vorgefertigte Klassen unter java.util .concurrent, das verwendet werden kann.
Darüber hinaus sind Thread-Pools eine häufig gestellte Frage. Was sind die Unterschiede und Verbindungen zwischen diesen Thread-Pools? Praktische Beispiele geben Ihnen einige spezifische Szenarien und lassen Sie beantworten, welche Art von Thread-Pool in diesem Szenario verwendet werden sollte.
Obwohl in diesem Interview nicht viele Fragen gestellt wurden, sind Multithread-Synchronisation und Sperren ebenfalls wichtige Punkte. Der Unterschied zwischen synchronisiertem und ReentrantLock, die gemeinsame Methode der synchronisierten Sperre und die statische Sperrmethode, das Prinzip und die Fehlerbehebungsmethode des Deadlocks usw.
10. JDK-Quellcode
Wenn Sie ein hohes Gehalt erhalten möchten, müssen Sie den JDK-Quellcode lesen. Der obige Inhalt kann sich auch auf bestimmte Szenarien beziehen. Der JDK-Quellcode dient nur dazu, sich damit zu befassen. Während des Interviews wurden mir viele Fragen zum JDK-Quellcode gestellt. Die schwierigste Frage war, wie die hashCode()-Methode von String implementiert wird. Glücklicherweise habe ich normalerweise viel String-Quellcode gelesen und eine grobe Antwort gegeben.
Über den JDK-Quellcode gibt es eigentlich nichts zusammenzufassen. Es kommt nur auf den einzelnen Quellcode an:
(1) Quellcode von List, Map und Set Implementierungsklassen
(2) Quellcode von ReentrantLock und AQS
(3) Das Implementierungsprinzip von AtomicInteger, das hauptsächlich den CAS-Mechanismus erklärt und wie AtomicInteger mithilfe des CAS-Mechanismus implementiert wird
(4) Thread-Pool-Implementierungsprinzipien
(5) Methoden in der Object-Klasse und die Rolle jeder Methode
Diese sind im Grunde genommen ziemlich anspruchsvoll Kurse im JDK im letzten Jahr Es kostet wirklich Zeit und Energie, alles durchzugehen, aber rückblickend lohnt es sich natürlich – nicht nur, um das Interview zu bewältigen.
Wenn Sie interessiert sind und Zeit haben, wird empfohlen, SOA und RPC zu studieren. Sie sind lebensrettende Heilmittel, die alles heilen können Krankheiten und haben sich bewährt.