Meine Interviewhistorie bei IB IT (Java-Entwickler, Investmentbank) in London mit Beispielen für typische Aufgaben

So kam es, dass ich während meines Studiums an einer Universität in Moskau Programmierer werden wollte, aber ich wurde bereits außerhalb Russlands und nicht sofort - der Weg war lang und dornig. Ich habe viele Interviews besucht (zuerst habe ich gesucht, dann haben sie mich schon gesucht), ich habe mich mit den Feinheiten der Arbeit befasst und darüber nachgedacht, wie ich ein guter Programmierer werden kann.


Einer der Aspekte, die während meiner Karriere relevant waren, ist die Arbeitssuche und das Durchlaufen von Interviews. Ich selbst habe nur sehr wenige Interviews geführt (4-5), aber ich habe eine große Anzahl von ihnen besucht (> 100). Ich hatte in den letzten ~ 7 Jahren 3-4 Perioden, um einen Job zu finden, als ich ein oder zwei Monate, manchmal 1-2-3 pro Tag, zu einem Vorstellungsgespräch ging.


In diesem Artikel möchte ich die Erfahrung des Bestehens des Interviews teilen, um eine Art Systematisierung zu geben, wie es aussieht und passiert, worauf man sich vorbereiten muss.


Was mich in den Kommentaren interessieren würde - wie es bei anderen passiert, insbesondere in Moskau / Russland, gibt es wahrscheinlich Unterschiede zu Europa.


Basierend auf meiner persönlichen Erfahrung, Gesprächen mit Kollegen, Lesen von Foren, Büchern und so weiter. Ich würde dies sagen - dies ist meine subjektive Meinung zur Situation insgesamt. Dieser Beitrag behauptet, vollständige Informationen zu sein und dass er, wenn nicht alle, die meisten Aspekte abdeckt. Wo meine Meinung ist, schreibe ich meiner Meinung nach. Ansonsten gebe ich vor, objektiv zu sein.


Fast meine gesamte Erfahrung bestand darin, IT bei europäischen Finanzunternehmen für die Position eines Java (Senior) -Entwicklers zu interviewen, hauptsächlich in London. Es gibt kein Web (in irgendeiner Form, Front / End-Backend), keine Integration, keine Arbeit für den Kunden (nach Typ - es gibt CRM und das Unternehmen implementiert es in Banken), Amazon, Facebook, Google sind ebenfalls nicht vertreten - ich weiß nicht wie Ich bemühe mich dort nicht wirklich, denke ich. Meine Erfahrung beginnt mit einem einfachen Programmierer und endet mit einem leitenden Entwickler. Team / Techniker / Manager - nein.


Über das Interview im Allgemeinen


Der Interviewprozess ist statistisch, d.h. - Wir dienen dort, wo es interessant ist, etwas wird nicht funktionieren, nur weil wir kein Glück haben, wir haben es bereits eingestellt, es gibt nicht genug andere Marktüberlegungen oder Erfahrungen oder es wurde nur ein besserer Kandidat gefunden. Das heißt, Es ist sehr schwierig, ein Interview zu führen, wenn dies nur eine Unternehmensposition ist. In diesem Sinne scheint mir Google problematisch - es ist so allein. Es gibt viele Banken, die an ähnlichen Dingen beteiligt sind, nicht an einer. In einer anderen gibt es ein interessantes Projekt, der Tag wird erfolgreich sein usw.


Ein Interview ist ein Spiel nach seinen eigenen Regeln, die üblicherweise befolgt werden. Die Kenntnis dieser Regeln hilft dabei, Erwartungen und den Prozess der Vorbereitung und des Bestehens festzulegen. Am Ende zeigt es, dass Sie in der Lage sind, die Regeln einzuhalten und sie zu akzeptieren, die Bräuche des Teams zu berücksichtigen. Niemand schreibt Sortierungen manuell, und selbst synchronisierte müssen wahrscheinlich nicht schreiben, ganz zu schweigen von notify / notifyAll. Ebenso wie es unwahrscheinlich ist, dass eine detaillierte Kenntnis des internen Hashmap-Geräts erforderlich ist - dies ist jedoch eine der beliebtesten Fragen -, können 70 Prozent der Interviews nicht darauf verzichten, nur der Vertrag zwischen Equals und Hashcode kann mit dieser Frage argumentieren. Auf der anderen Seite zeigt dies die allgemeine Vorbereitung des Bewerbers an, wie gut er sich der Arbeitsaufgabe nähert (und die Arbeitssuche ist auch eine Art kleines Projekt).


Aus administrativen Fragen


Vergiss auf eine Antwort zu warten. Keine Antwort - die Antwort ist nein.
Manchmal schien es mir, dass dies ihre Regel des guten Geschmacks ist - sie antworten nicht, wenn sie nicht interessiert sind. Dies ist ein Beispiel für Personalvermittler. Wenn Sie ihm geantwortet haben, dass jetzt keine Arbeit benötigt wird, ist dies wie ein Weichei. Denn sie selbst verstümmeln natürlich nicht, wenn wir es nicht brauchen, ist die Logik, dass Zeit verschwendet werden sollte. Im Allgemeinen sind Personalvermittler erstaunliche Menschen, als ich anfing zu denken, dass sie wie Sirenen sind - es lohnt sich zu antworten und das ist alles, Sie sind bereits bei einem Interview, zu dem Sie nicht gehen würden. Die Fähigkeit, klar nein zu sagen oder zu formulieren, was ich brauche, ist eine gute Fähigkeit. Ich glaube Agenten, aber vertraue niemals. Ich nehme nur die Fakten und diejenigen, die bewiesen werden können, aus der Kategorie "Dies ist ein neues Projekt, dort ist alles sehr gut" - das ist ein Luftschock. Und wenn "sie bereit sind, ihre Gehälter um 10 Tausend zu erhöhen" - dann ist das schon etwas :-)


Einige interessante Informationen - Ein Agent (Agentur) erhält einen Großteil des Jahresgehalts eines erfolgreichen Kandidaten (und nach Ablauf der Probezeit). Es scheint, dass das Unternehmen ein separates Budget für Agenten hat, d. H. Wenn Sie den gleichen Job ohne einen Agenten finden, können Sie höchstwahrscheinlich kaum mit einem höheren Gehalt rechnen. Ich verstehe nicht ganz, warum das so ist, vielleicht ist es in kleinen Unternehmen anders.


Natürlich haben Agenten einen Sinn, manchmal sind sie nützlich und gut. Tatsache ist, dass einige sehr interessante Stellen nur durch Agenten zu mir kamen. Aber das Gegenteil ist der Fall, trotz der weit verbreiteten Überzeugung, dass Arbeit ohne Agenten gefunden werden kann und sollte. Vor allem, wenn Sie daran interessiert sind, in einem weniger klaren Bereich zu arbeiten - wir nehmen die 20 größten Unternehmen der Welt / des Landes in dieser Branche und gehen zu ihren Standorten. So fand ich meinen ersten Job in London, mit dem ich sehr zufrieden war.


Erwähnenswert ist auch, dass Sie sich auf das Interview vorbereiten müssen. Die Form zu Beginn des Rennens unterscheidet sich nach einem Monat des Interviews erheblich. Fragen werden wiederholt, einfache Aufgaben einfach, sofort und schnell geschrieben. Die Geschichte seiner Erfahrungen, Stärken, Projekte und Pläne für die Zukunft springt von seinen Zähnen. Irgendwann wollte ich ein Poster mit der Architektur unseres Systems tragen, damit ich bequemer sagen kann, was ich tue.


Im Allgemeinen immer und überall - die mittlere Ebene ist nicht interessiert, Sie müssen über dem Durchschnitt liegen, einschließlich und über Ihren Fähigkeiten, in dem Sinne, dass Sie Ihr Bestes geben müssen.
Finanz-IT ist eine riesige Bürokratie, und wir müssen in der Lage sein, darin zu existieren. Ja, Ressourcen werden dafür ausgegeben und alles ist ineffizient, aber dies sind die Regeln, und manchmal gibt es einfach keine bessere Option. Von den Pluspunkten - es gibt interessante, sehr interessante Projekte, die Bürokratie und Geschäftsanalysten bekommen nicht viel und sehr gutes Geld.


Ich werde die Vorbereitungen für das Interview überhaupt nicht in Betracht ziehen. Wir glauben, dass dies eine abgeschlossene Phase ist, es gibt das notwendige Wissen und es gibt Einladungen zu Interviews.


Interviewphasen


Die Vorstufe ist ein Telefoninterview.


Oft mit einem Agenten - er fragt grundlegende Informationen aus dem Lebenslauf, dass Sie jetzt wirklich arbeiten, wo Sie arbeiten, die Gehaltserwartungen und das aktuelle Gehalt (dies ist ein separates Thema - ich werde es weiter unten erläutern), den Visastatus und wie schnell Sie zur Arbeit kommen können. Der Agent wird in der Regel über das Unternehmen und die freie Stelle berichten (aber leider nur allgemeine Informationen) und fragen, ob es für mich interessant ist und allgemein, wonach ich suche. Sie fragen ernsthaft nach der Motivation, warum suchen Sie nach einem Jobwechsel?


Wenn das Gespräch direkt mit einem Unternehmensvertreter geführt wird, kann das erste Telefongespräch mit der Personalabteilung oder unmittelbar mit einem Vertreter des Teams geführt werden, für das sie in der Regel von einem Personalchef eingestellt werden, d. H. Jemand ist ziemlich stumpf, der die richtigen Kandidaten identifiziert und herausfiltert, und es lohnt sich, sich für ein technisches Interview zu engagieren.


Der Vorteil ist, dass Sie sofort mehr Informationen über das Projekt erhalten und ablehnen können, weil es ist nicht interessant oder umgekehrt, noch interessierter, wenn man merkt, dass es sehr interessant ist.


Es gab nur wenige Fälle (aber sie waren stabil), in denen bereits beim ersten Interview alles starr beginnt - Hallo, Hallo, nun, lassen Sie uns Java, Algorithmen usw. durchgehen. Nur 40-50 Minuten dieser Fragen im Geiste einer Informatikprüfung.


Über Geld


Ich hatte lange Zeit ein Tabu zu diesem Thema - ich wollte nicht wissen, wie viel meine Kollegen bekommen - es würde mich demotivieren und mein Selbstwertgefühl verringern. Dann änderte er seine Sichtweise auf das Gegenteil - er versteckte das Gehalt in den Händen des Arbeitgebers, daher macht es den Kollegen nichts aus, Zahlen auszutauschen, sondern nur den Bekannten - nein. Für London können Sie sich die Glastür ansehen und mit 1,5 multiplizieren. Aus irgendeinem Grund ist der obere Teil der Gehälter dort nicht vertreten, obwohl dies der süßeste Teil ist und, was wichtig ist, durchaus erreichbar ist. Auf jeden Fall ist der Programmierer in London bei der Bank sehr, sehr gutes Geld und der Lebensstandard ist höher als in Moskau (dies ist meine subjektive Meinung, basierend auf meinen Vorstellungen über den Lebensstandard und die Bedürfnisse, die Städte selbst legen auch Beschränkungen in Moskau auf, ich Ich denke, ich würde nicht einmal an eine Hypothek denken. In London, Europa, sind 2% pro Jahr normal, 20-25% Anzahlung sind bereits ausreichend.


Zurück zum Interview, so wie ich es verstehe, möchte der Arbeitgeber einen Kandidaten mit einem bestimmten Betrag sehen. Ich würde sagen, dass es besser ist, in bestimmten Abständen zu antworten, aber Sie müssen es vernünftig einstellen, damit es später nicht ausfällt. Alles ist in Ordnung, aber ich möchte mehr Geld. Im Allgemeinen würde ich sagen, dass + 10-15% des aktuellen Gehalts eine durchschnittliche Option sind. Eine fast doppelte Erhöhung der Gehälter ist ebenfalls möglich, und eine jährliche Erhöhung des derzeitigen Standorts um 10% ist ebenfalls möglich, unabhängig davon, was die Agenten sagen. Ich werde einerseits erklären, je teurer ein Agent verkaufen wird, desto mehr wird er erhalten, aber die Priorität besteht darin, Sie im Allgemeinen zu verkaufen, und für wie viel, wie sich herausstellt, sind 5-10% des Gehaltsunterschieds für einen Agenten kein so großer Unterschied Der Agent wird es zur Hand haben (dies ist eine Annahme).


Interviewformate


Org Fragen


Ich hatte eine interessante Beobachtung darüber, wie das Interview selbst organisiert war, wo es durchgeführt wird, das Büro selbst und der Besprechungsraum. Bestätigung von Datum, Uhrzeit, Ort - selten, wenn nur telefonisch, aber es war. In der Regel ein Brief. Oft von einem Agenten mit einem Minimum an Informationen. Das Angenehmste ist ein gut formatierter Brief mit Namen und Positionen, mit wem das Meeting ist und was interessant ist - mit Angabe des Besprechungsraums (dh sie können vorausplanen und 5 Minuten vor dem Interview keinen freien Besprechungsraum suchen). Agenten senden den Interviewer häufig verlinkt - retten Sie mich Zeit, weil ich immer auf das Profil desjenigen schaue, mit dem ich möglicherweise arbeiten muss. Wenn es seine Artikel gibt, werde ich sie lesen.
Übrigens, wenn mehrere Personen angekündigt wurden, ist es normal zu erwarten, dass sie nicht alle kommen, wenn der wichtigste von ihnen dies an jemanden delegiert. Aber meiner Meinung nach ist es schön, wenn alle deklarierten Gäste kommen.


Dann war alles normal, er kam, meldete sich an der Rezeption, ging für Sie runter oder schickte einen in den Besprechungsraum. In der Regel kommt ein Mitarbeiter hinter Sie und führt Sie alleine. Die Zeit im Aufzug und auf der Straße kann auch für Verhandlungen genutzt werden.


Übrigens - wie ein Unternehmen einer Gruppe von Kandidaten ähnelt, ist auch ein Indikator. Interviews sind ein wechselseitiger Prozess. Als Unternehmen nähern sich Einzelpersonen diesem Prozess. Wie gut sie interviewen, ist auch ein Merkmal des Unternehmens / Teams. Dies ist natürlich subjektiv. Es scheint mir, dass es nicht die beste Wahl ist, alle Sammlungsschnittstellen auf der Ebene zu fragen. Sie wissen / wissen nicht, es ist viel interessanter, ein Thema auszuwählen und weiterzuentwickeln. Dieselbe Lieblings-HashMap - Was sind die Unterschiede zu CHM? Wie kann ich sie überhaupt speichern? Mapu im Speicher, fragen Sie nach der Zugriffszeit, was beim erneuten Zwischenspeichern passiert, und entwickeln Sie das Thema weiter, wie Elemente in Kollisionslisten gespeichert werden (Liste, Baum, welcher Baum usw.).


Wenn das Interview nicht erfolgreich war, lehnten sie es ab und es scheint Ihnen, dass Sie gute Leistungen erbracht haben. Dies ist auch kein Grund zur Aufregung. Wenn Sie nicht auftauchen und es keinen Funken gibt, ist es besser, nicht zu beginnen. In diesem Sinne gefällt mir die Idee, dass ich vielleicht nicht dorthin gehen muss, wenn es nicht funktioniert. Ich mag auch den Ansatz (übrigens Google) - es ist besser, keinen guten Mitarbeiter einzustellen, als einen schlechten. Das Gleiche gilt für einen Kandidaten - es ist besser, nicht in ein gutes Unternehmen zu gelangen, als in ein schlechtes.


Ich war neugierig auf zwei Dinge - die tatsächliche Zeit, zu der das Interview begann (ich kam immer 10 Minuten vor dem Start an) und welche Gemälde an den Wänden hängen, die Gestaltung der Besprechungsräume - in der Regel sind dies Besprechungsräume für Bankkunden und investieren viel Geld in deren Gestaltung.


Es gibt so einen Moment - ein Interview wird für 2 Stunden mit 4 Personen angekündigt und nach einer Stunde sagen sie Danke. Es ist klar, dass Sie nicht bestanden haben. Ich weiß nicht, wie ich damit umgehen soll, es geht nicht darum - es beleidigt mich, ich habe mich vorbereitet, sie zuhören lassen (na ja, oder zumindest ein Interview üben lassen) - alles ist klar und ja, hart; Es ist wahrscheinlicher, dass es sich um eine erfolglose Aufführung handelte. Wenn Sie fortfahren, wird alles besser. Aber hier ist die Logik wieder - es ist besser, nicht die Guten einzustellen, als die Schlechten.


Telefon


Das grundlegendste ist, wie ich beschrieben habe, ein Telefongespräch. Es mag technische Fragen geben, aber etwas sehr Schwieriges oder Komplexes ist offensichtlich schwer zu stellen. Es ist unwahrscheinlich, dass Implementierungsdetails an Stellen mit schneller Sortierung abgefragt werden, und wenn dies der Fall ist, müssen sie ausgeführt werden, da dies meiner Meinung nach unzureichend ist.


Online


Ein neuer Favorit (dies war nicht vor 5-7 Jahren oder weniger) - Online-Programmierung wie Hackerrank oder Online-Tests.


Tests mit der Wahl der Antwort aus der Liste sind selten und meiner Meinung nach spiegelt der Test selten die Vorbereitung des Kandidaten angemessen wider, obwohl ich auf eine, einfach wunderbare, 12 Minuten, 12 ziemlich verständliche Frage gestoßen bin. Daher denke ich, dass dies ein so grober Filter ist.


Die Online-Programmierung mit einem Interviewer sieht folgendermaßen aus: Gehen Sie zur Website, melden Sie sich an, und vor Ihnen befindet sich eine Online-IDE, die für Sie und den Interviewer sichtbar ist. Er gibt Ihnen Aufgaben und Sie schreiben sofort Code, führen ihn aus usw. Erst als ich mich traf, als es nur ein Google Dock war, ist alles andere eine recht einfache Online-IDE.


Hausaufgaben


Gute und alte Testaufgaben, wenn die Aufgabe einfach beschrieben wird und Sie eine Lösung senden müssen - manchmal für eine Weile, manchmal nur für 1-2-3-4 Tage.


Je nach Aufgabenformat sind Hausaufgaben in der Regel sehr verständlich und sinnvoll. Dies ist entweder algorithmisch etwas (so etwas wie das Finden eines Pfades im Labyrinth oder ein kleines System zum Berechnen des Durchschnittswerts aus dem Preisstrom und zum Speichern des allerletzten, Sie müssen Klassen ein wenig entwerfen und alles mit Schwerpunkt auf geringer Latenz schreiben) oder, wie ich es ausdrückte Ich rufe bei OOP an - es gibt einen einfachen Themenbereich, Sie müssen nur ein Programm schreiben, das die Aufgabe anzeigt. Zum Beispiel haben wir ein Krankenhaus, in dem sich Patienten befinden, jeder Patient erhält eine bestimmte Liste von Medikamenten, Medikamente nach bestimmten Regeln interagieren miteinander und verursachen unterschiedliche Wirkungen (wenn Sie A und B einnehmen, wird der Patient an Krankheit X erkrankt, wenn Patienten mit Krankheit D nicht gegeben wurden Droge Und er wird sterben). Wir müssen ein Programm schreiben, das gemäß einer gegebenen Liste von Medikamenten das Ergebnis der Anwendung auf die Liste der Patienten liefert (von denen jeder seine eigene Grunderkrankung hat). Ein weiteres Beispiel ist das Schreiben eines Geldautomaten (Beachtung der Atomizität von Transaktionen). Eine andere Möglichkeit besteht darin, ein Papiersteinscheren-Spiel zu schreiben.


Online-Programmierung für eine Weile (ohne menschliches Eingreifen auf der anderen Seite) - in der Regel ist dies ein Algorithmus aus der Kategorie der Baumdurchquerung, Arbeit mit Arrays - alles, was sich auf Geelforgeeks bezieht, und wütendere Aufgaben sind keine Seltenheit. Leider hängt die Lösung vieler Probleme davon ab, ob sie sich zuvor getroffen hat oder nicht. Oft sind die Aufgaben komplex und werden in offenen Quellen übernommen (und formuliert). Es scheint mir, dass dies keine sehr gute Auswahl an Aufgaben ist. Es ist unwahrscheinlich, dass die Interviewer ihre Google-Kenntnisse testen möchten.


Die Online-Programmierung mit einem Interviewer ist ebenfalls eine interessante Ansicht, die Aufgaben sind viel einfacher, aber der Stress und die Unbekanntheit der IDE kommen hinzu. Die Hauptsache hier ist, nicht zu schweigen, vernünftig zu sein und nicht sofort eine Lösung zu schreiben. Denken und denken. Ein Beispiel für eine Aufgabe, die sein kann - eine Reihe von Werten wird angegeben, jeder Wert erhält eine Wahrscheinlichkeit. Es ist notwendig, ein Programm zu schreiben, das diese Werte mit einer bestimmten Wahrscheinlichkeit erzeugt. Meiner Meinung nach ist es kompliziert, aber machbar.
Ein weiteres Beispiel: Es gibt eine lange Operation, die ein Argument als Eingabe verwendet. Es gibt viele Threads, die diese Operation aufrufen und ausführen. Schreiben Sie einen Wrapper, der Aufrufe optimiert (Sie müssen das Caching mit Schwerpunkt auf Multithreading durchführen, damit Sie die Berechnung nicht erneut ausführen müssen, wenn der zweite Thread eine Operation mit demselben Wert aufruft und die Operation gerade berechnet wird). Es ist bekannt, dass der Teufel im Detail und in extremen Fällen steckt.


Mehr über Agenten - manchmal scheinen Agenten zu wissen, dass sie fragen und es irgendwie beschreiben können. Dies ist eine Grauzone. Einerseits ist es gut zu wissen, ob das Interview rein technisch ist oder nur Gespräche, die von Ihnen erwartet werden usw. Es ist in Ordnung. Aber was bestimmte Aufgaben betrifft, denke ich, dass dies nicht sehr gut ist, insbesondere im Hinblick auf das Unternehmen. Der Kandidat wird auch sehr schlecht aussehen, wenn er die Lösung des Problems sofort magisch geschrieben hat, sie aber nicht erklären konnte. Daher würde ich solche Tipps lieber nicht verwenden.


Vor-Ort-Interview


  • Paarprogrammierung, im Wesentlichen dasselbe wie Online-Programmierung, nur der Interviewer ist nicht am Telefon, sondern auf einem Stuhl in der Nähe.
  • Hausaufgaben - eine Aufgabe geben, comp, eine Stunde Zeit, schreiben - anrufen.
  • Codierung, Design auf Papier / Karton.

Nur ein Gespräch.


Laut dem Gespräch selbst - 50/50 wird es 1 / viele Interviewer geben, im Allgemeinen ist es nicht schlecht, wenn mehrere gleichzeitig sind, und es ist interessant, wenn es wie ein Kreuzverhör aussieht, sie fragen alle und viel.


Beispiel für typische Aufgaben / Fragen


Das Wissen um die Lösung garantiert nichts, sowie Ungenauigkeiten, Unvollständigkeit der Lösung, Antwort.
Die Aufgabe selbst, die Frage, ist der Beginn eines Gesprächs zum Thema. Zum Beispiel, wie man zwei sortierte Arrays enthält. Wenn wir dann mehr als 2 Arrays haben: Welche Komplexität, wie zu optimieren und was, wenn wir dies und das ändern. Meiner Meinung nach ist dies ein sehr guter Ansatz - Sie sind nicht mit einem komplexen Algorithmus bedroht, aber es wird etwas Einfaches gegeben, und dann beginnt ein Gespräch über das Thema Komplikation.


Java-Spezifikation


  • gleich und Hashcode-Vertrag, was passiert, wenn Sie brechen
  • Wie funktioniert Hahsmap? Mit unterschiedlichem Detaillierungsgrad? Ausgehend von der Verwendung von Hashcode (was passiert, wenn Sie den Kontakt mit Gleichgestellten unterbrechen) bis - CHM, Kopieren auf Schreibarray, wie intern angeordnet, Blockieren von Lesen / Schreiben, Segmentieren von Sperren, gleichzeitiger Ebene.
  • flüchtig (Memory Barier), geschieht vor der Semantik
  • Java 7 - chm, Atomics, nio (?)
  • Java 8 - Bäche, Lambda
  • GC (Ich scheine bereits in der Lage zu sein, Präsentationen zu diesem Thema zu halten)
  • Frage zu flüchtigem Array, flüchtiges int [] arr; arr [2] = 2; int j = arr [2];
  • doppelte Überprüfung der Verriegelung (und warum Sie sie nicht verwenden sollten)
  • Ich habe nicht verstanden, was von Interesse ist, aber irgendwo habe ich es als Beispiel für eine interessante Frage gesehen:
    Objekt [] o = neues Objekt [10] (); VS Objekt b = neues Objekt [10] (); (hier kenne ich die Antwort selbst nicht, wenn jemand liest - Hilfe bei dieser Frage)
  • notify notify All, Produzent Consumer und wenn Sie können \ notify nicht anstelle von notifyAll verwenden

Algorithmen


normal schwer


  • Überprüfen des elterlichen Gleichgewichts ({[- Überprüfung auf ausgeglichene Klammern in einem Ausdruck
  • Ausdrucksberechnung (gegeben eine Zeichenfolge mit Zahlen, + - * / Berechnen Sie den Wert in Klammern) - Ausdrucksbewertung
  • BFS / DFS - bfs-vs-dfs-Binärbaum
  • Finden des Pfades im Diagramm von oben nach allen, dem kleinsten zwischen zwei Scheitelpunkten - Finden Sie, ob es einen Pfad zwischen zwei Scheitelpunkten in einem bestimmten Diagramm gibt
  • Sortierstapel - Sortierstapel mit temporärem Stapel
  • mische eine Reihe von Zahlen nach dem Zufallsprinzip

schwierig


  • Suche nach dem größten identischen Teilstring in zwei Zeilen - dem längsten gemeinsamen Teilstring-Java
  • Wenn Sie das kleinste Suffix eines Wortes finden und es einem Wort hinzufügen, erhalten Sie ein Palindrom - das längste Palindrom-Präfix
  • (union find)



  • , (, , tail recursion c )
  • , N
  • fuzz buzz ( 2 )

die Normen


  • ring buffer, thread (non)safe, (non)blocking.
  • producer consumer, notify/notifyAll, .
  • queue -> blocking queue wait notify
  • thread safe
  • calculate VWAP (with sliding window, global)
  • sliding mean/avg
  • ,
  • ( - )
  • — , .
  • ( , ).
  • - ( 1 , N ) —
  • — check-for-string-rotation-in-java/

( , )


  • — maze
  • — Knight's tour, i,j
  • — leetcode-word-search-java
  • ( , , ).

— . , , , - , .


  • — leetcode-paint-house-java
  • . , .
  • throthler , — , , 1 . throttling vs conflation.
  • .
  • 2 ( 1GB), . <1000 , 99% ( — 99% , 99% ). , .. — , 1-epsilon — ( , ).


  • ,
  • ATM ()
  • — , , , X Y .
    ( ). , .


  • , \.
  • ,
  • ( 3 \)
  • . . , — , — ?..
  • /
  • , . () .


  • ,
  • TDD
  • SOLID
  • — .


  • leetcode
  • hackerrank
  • interviewbit
  • geeksforgeeks
  • ( )
  • glassdoor
  • google
  • practice-practice-practice and have fun!

, , , .

Source: https://habr.com/ru/post/de430788/


All Articles