Jedes Mal, wenn ich mich auf Interviews fĂŒr die Position des âJava-Entwicklersâ vorbereite, verstehe ich, dass mir ein konkreter Vorbereitungsplan wirklich helfen wĂŒrde. Daher wurde beschlossen, alle im Verlauf der Interviews gesammelten Notizen zu strukturieren und zu veröffentlichen. Ich hoffe, jemand wird diesen Plan nĂŒtzlich finden.
Und ich schreibe bewusst nicht, fĂŒr wen dieser Schulungsplan bestimmt ist: fĂŒr einen Senior-, Middle- oder Junior-Entwickler - alles hĂ€ngt von der spezifischen Vakanz und den Anforderungen des Arbeitgebers ab. Verlassen Sie sich daher auf diesen Plan, aber filtern Sie ihn und nehmen Sie ihn gleichzeitig nicht als erschöpfenden Leitfaden.
- Java-Kern . Hier können Sie sich beispielsweise auf das Buch âOCP: Oracle Certified Professional Java SE 8 Programmer II-Studienhandbuch: PrĂŒfung 1Z0-809â konzentrieren , um sich auf die Java-Zertifizierung auf Professional-Ebene vorzubereiten. Es gibt ein Ă€hnliches Buch , OCA: Oracle Certified Associate Java SE 8 Programmer I-Studienhandbuch: PrĂŒfung 1Z0-808, fĂŒr die Associate-Ebene - Sie können es auch ansehen. Gehen Sie das Inhaltsverzeichnis durch und markieren Sie selbst, was Sie wiederholen können. NatĂŒrlich sollten Sie nicht ernsthaft darauf eingehen und ein Buch von Anfang bis Ende lesen - viele Themen aus diesem Buch können umgangen werden, z. B. die Datumsformatierung. Markieren Sie das Grundlegendste. FĂŒr mich waren dies beispielsweise die folgenden Themen: Sammlungen (Standardfragen âWie ist die HashMap angeordnet?â Oder âWas ist der Unterschied zwischen LinkedList und ArrayList?â Werden auch hĂ€ufig in Interviews gestellt), Generika, funktionale Schnittstellen, Multithreading (hier auch Filter - Sie benötigen kein zyklisches Barriere und Gabel verbinden Rahmen).
Vergessen Sie auch nicht, Wissen in Ihre Erfahrung einzubringen. Wann mussten Sie beispielsweise Multithread-Programmierung verwenden? Welche Probleme haben Sie gelöst? Welche Schlösser haben Sie benutzt?
- Multithreading. Ich hebe dieses Thema immer noch in einem separaten Absatz hervor - da das obige Buch nicht erklĂ€rt, was flĂŒchtig ist, Sperren und Warten / Benachrichtigen sind. Wenn Sie noch nie mit Multithread-Programmierung gearbeitet haben, seien Sie ehrlich und sprechen Sie beim Interview. Aber einige Dinge, die zum Beispiel oben aufgefĂŒhrt wurden, wĂ€re zumindest theoretisch schön zu wissen (insbesondere die Frage "Was ist volatil?", Die ich bei fast jedem Interview hatte).
- Algorithmen Dieses Thema ist nicht nur fĂŒr Java-Entwickler relevant. Es ist unwahrscheinlich, dass Sie aufgefordert werden, einen Sortieralgorithmus zu schreiben. Der Interviewer ist nicht daran interessiert zu wissen, wie gut Sie den Sortiercode fĂŒr das ZusammenfĂŒhren gelernt haben (höchstwahrscheinlich wird er Sie nur bitten, das allgemeine Prinzip zu erlĂ€utern). Die Lösung eines algorithmischen Problems, die Bewertung der KomplexitĂ€t Ihrer Lösung oder beispielsweise die ErklĂ€rung des Prinzips der Tiefensuche in Worten ist eine durchaus mögliche Option.
- Datenstrukturen. Wie unterscheidet sich ein Baum von einem Diagramm? Was sind AVL-BĂ€ume? Wie unterscheidet sich der Stapel von der Warteschlange?
In Bezug auf Java: Welche Klassen in Java implementieren einen Stapel oder eine Warteschlange? Wie unterscheidet sich LinkedList von ArrayList? Was ist ein Hashset? Wie unterscheidet es sich von TreeSet? Wie funktioniert HashMap?
Diese und Àhnliche Fragen werden sehr wahrscheinlich interviewt. Es ist jedoch anzumerken, dass Fragen zu BÀumen und Grafiken in Interviews viel seltener auftreten - diese Strukturen werden in der Praxis nicht so oft verwendet. Vielmehr wird von Ihnen erwartet, dass Sie gut wissen, was Sie zuvor verwendet haben. Sie kennen oder haben kein rot-schwarzes Holz verwendet? Also sag mir, du kannst nicht alles wissen.
- Datenbanken Relational und nicht relational. Was ist der Unterschied? Was und wann verwenden?
Wenn wir von relationalen sprechen, wiederholen Sie alle Objekte solcher Datenbanken: Tabellen, Ansichten, Indizes. Wiederholen Sie SQL - wie die Abfrage erstellt wird, welche Arten von VerknĂŒpfungen existieren, anstatt sich von wo zu unterscheiden. Wiederholen Sie Transaktionen auch separat - Isolationsstufen, ACID-Eigenschaften. Denken Sie daran, hatten Sie jemals FĂ€lle von Abfrageoptimierung? Mussten Sie sich den AusfĂŒhrungsplan fĂŒr die Abfrage ansehen?
Vergessen Sie auch nicht, jpa zu wiederholen (wenn diese Spezifikation in der Vakanz erforderlich ist). Was ist ein Entity Manager? Was ist Persistenzkontext? Und so weiter, was ich zu Gesicht bekommen musste.
- Frameworks Welche Frameworks Sie wiederholen mĂŒssen, hĂ€ngt von der jeweiligen Vakanz ab. In den meisten FĂ€llen ist Feder erforderlich. Vergessen Sie dann nicht zu wiederholen, wie Spring im Allgemeinen funktioniert, die Schritte zum Initialisieren der Bean. Erinnern Sie sich daran, welche Spring-Frameworks Sie verwendet haben (z. B. Spring mvc, Spring-Sicherheit, Spring-Daten) und warum. Wiederholen Sie die Hauptanmerkungen (vergessen Sie nicht Qualifier, Primary und Conditional - sie fragen besonders oft danach). Und vergessen Sie nicht die Bohnenfernrohre.
Separat möchte ich auf die Transaktionsanmerkung eingehen. Wie arbeitet sie? Was kann darin zusÀtzlich konfiguriert werden?
- JVM-GerĂ€t. Was ist ein Haufen und ein Stapel? Wie werden Objekte in jvm gespeichert? Was ist ein String-Pool? Was sieht vor, dass das Prinzip vorher passiert? Wie funktioniert der Garbage Collector? Wiederholen Sie so viel wie möglich - es wird nicht ĂŒberflĂŒssig.
- Muster Keine Notwendigkeit zu fahren - niemand muss alle vorhandenen Muster auflisten. Einige, die in Java oder Spring verwendet werden, mĂŒssen dies jedoch wissen (z. B. Immutable, Singleton, Prototype, Builder, Proxy, Abstract Factory, Wrapper).
- Algorithmische Probleme. Oft fragen sie bei Interviews nach einem bestimmten Problem. Manchmal auf einem Blatt Papier, manchmal auf einer Tafel, manchmal auf einer bestimmten Site, wenn es sich um ein Skype-Interview handelt. Seien Sie bereit, Code zu schreiben, ohne Ihre bevorzugte Entwicklungsumgebung zu verwenden. Ăben Sie auch das Lösen von RĂ€tseln, zum Beispiel mit Leetcode .
- Netzwerke. Wiederholen Sie die OSI-Modellebenen. Und vergessen Sie nicht, die Hauptprotokolle etwas ausfĂŒhrlicher zu wiederholen: tcp, udp, http, https.
- Architektur SOLID, Serviceerkennung, Nachrichtenwarteschlangen. Wann werden Microservices verwendet und wann ist ein Monolith? Hast du Eureka oder Konsul benutzt?
- Der Rest. Agile, Git und Gitflow, REST / SOAP, Linux (wenn Sie gearbeitet haben), Docker und Kubernetes (wenn Sie gearbeitet haben). Und auch Tests - Funktion, Integration und Einheit. Was sind die Unterschiede, welche haben geschrieben, haben sie TDD verwendet?
- Englisch Nur bei Bedarf. Wiederholen Sie natĂŒrlich nicht die Regeln der Grammatik der englischen Sprache. Es reicht aus zu trainieren, um ĂŒber sich selbst zu erzĂ€hlen. Man kann sich an einige vorbereitete SĂ€tze erinnern.
- FĂŒr mich. Seien Sie bereit, solche Fragen zu beantworten: âWelches interessante Problem mussten Sie bei der Arbeit lösen?â, âSagen Sie uns, worauf Sie am meisten stolz sind.â, âErzĂ€hlen Sie uns von Ihren Erfolgen.â, âErzĂ€hlen Sie uns von Ihren Fehlern.â, âWie bilden Sie sich weiter?â "Warum haben sie ihren bisherigen Arbeitsplatz verlassen?" Wenn Sie eigene Projekte, Artikel oder Reden haben, erzĂ€hlen Sie diese unbedingt. Sie sind sehr interessiert an diesen Dingen und werden sicher nach weiteren Details fragen.
Stellen Sie auĂerdem sicher, dass Sie Ihre Unternehmensfragen vorbereiten. Markieren Sie die fĂŒr Sie wichtigen Hauptpunkte direkt an den Punkten. Auf einem Habr gibt es einen wunderbaren
Beitrag darĂŒber .
Und ich werde einige RatschlÀge von mir geben.
Persönlich habe ich immer die ersten 2 Interviews als Training eingesetzt. Das sind normalerweise die Unternehmen, die mich am wenigsten interessieren. Diese Interviews werden nur benötigt, um in den Rhythmus zu kommen und keine Angst vor nachfolgenden zu haben.
Seien Sie auch bereit, ĂŒber Ihre Erfahrungen aus einem Lebenslauf zu sprechen. Was sie getan haben, warum, welche Probleme sie gelöst haben.
Denken Sie daran, dass Sie keine EnzyklopÀdie sind und beispielsweise nicht sofort alle funktionalen Schnittstellen in Java auflisten sollten. Es ist ganz normal, wenn Sie nur erzÀhlen, mit was Sie gearbeitet haben.
Und denken Sie daran, dass das Interview in erster Linie ein GesprĂ€ch ist. Sie verhören dich nicht und wollen dich nicht beschĂ€men, wenn du nichts weiĂt. Der Arbeitgeber wird herausfinden, ob Sie ein geeigneter Kandidat sind, und Sie werden herausfinden, ob dieser Job fĂŒr Sie geeignet ist.
Ein weiteres gutes Buch ist
Cracking the Coding Interview . Sie können einen Blick darauf werfen, insbesondere wenn Sie Interviews mit auslĂ€ndischen Unternehmen wie Google oder Facebook fĂŒhren.
NĂŒtzliche Ressourcen, die zur Vorbereitung benötigt werden:
- Das Coding-Interview knacken.
- OCP: Oracle Certified Professional Java SE 8 Programmer II-Studienhandbuch: PrĂŒfung 1Z0-809.
- Die Post "Ich rufe dich zurĂŒck . "
- Leetcode .
- Interviewbit Eine andere Seite mit algorithmischen Problemen. Hier sind Aufgaben in Kategorien gegliedert.
Viel glĂŒck