[PYTHON] Codierungsinterviews in ausländischem Besitz in der Leetcode-Ära

Hinterlassen Sie eine Notiz über die Interviewmaßnahmen für Softwareentwickler für Unternehmen wie GAFAM und FAANG oder ähnliche Trends (wahrscheinlich Idead und PFN in Tokio).

Coding Interview und Letcode

Ausländische IT-Unternehmen legen großen Wert auf die Codierung von Interviews, wenn sie Software-Ingenieure einstellen. Es ist näher an einem einfacheren Programmierwettbewerb als an Business Coding, und es scheint für amerikanische Studenten und Ingenieure üblich zu sein, einige Monate proaktiver Maßnahmen zu ergreifen, wenn sie zu einem IT-Unternehmen gehen. Informationen zum allgemeinen Interviewprozess finden Sie im Buch Buch zum Trainieren Ihrer Programmierfähigkeit für den Kampf in der Welt. In der Regel erhalten Sie jedoch ein Angebot als Softwareentwickler. Es dauert ungefähr 3 bis 5 Sitzungen für ein Codierungsinterview von ungefähr 45 bis 60 Minuten.

In den letzten Jahren wurde die frühere Coding-Interview-Site leetcode.com von Kandidaten häufig verwendet. Laut einer Geschichte, die ich um 2018 von Studenten der Columbia University gehört habe, haben fast alle Informatikstudenten Konten und die Hälfte wird belastet. Zum Zeitpunkt des Interviews ist es normal, dass der Kandidat verspricht, das aufgetretene Problem nicht zu verlieren, aber der Leetcode ist moralisch grau, da er das Problem erfasst, das tatsächlich bei einem großen Unternehmen aufgetreten zu sein scheint und ein Abrechnungsgeschäft hat. .. Da es schwierig wird, das durchgesickerte Problem zu verwenden, scheint es einen Vorwand zu geben, "das Problem zu verdrehen -> undicht", und das Codierungsinterview selbst scheint in den letzten Jahren ein wenig schwierig geworden zu sein.

Trotz dieser Bedenken ist die Vorbereitung von Interviews mit Letcode sehr nützlich für Ingenieure, die keine professionellen Computerdämonen oder genialen Programmierer sind. Unter den Fähigkeiten, die für Interviews erforderlich sind, gibt es Aspekte, die schwer zu trainieren sind, selbst wenn Sie wahllos Letcode verwenden. Ich denke, dass Sie das Interview auf vorteilhafte Weise fortsetzen können, indem Sie sich darauf vorbereiten.

Im Folgenden werden wir diskutieren, welche Art von Vorbereitung getroffen werden sollte, indem die Absicht der Einstellungsseite zurückgerechnet wird.

Absicht des Personalvermittlers

Codierungsinterviews sehen formal wie ein Procon aus, sind jedoch kein "Test", der nur um die richtige Antwort auf die Frage konkurriert. Interviewer versuchen festzustellen, ob der Kandidat als Ingenieur mit ihnen zusammenarbeiten kann, hauptsächlich um festzustellen, ob der Kandidat über die folgenden Fähigkeiten verfügt:

  1. Fähigkeit, selbst Ergebnisse zu erzielen ―― 1a. Verstehen Sie komplexe Logik und Code genau und schnell genug ―― 1b. Kennen Sie die Art der wichtigsten Algorithmen und Datenstrukturen im Detail und treffen Sie bei der Implementierung die beste Wahl ―― 1c. Angemessenes Software-Design

  2. Fähigkeit, sich innerhalb der Organisation gut zu entwickeln ―― 2a. Sie können Code schreiben, der einfach zu lesen und zu warten ist. ―― 2b. Der bidirektionale Informationsaustausch kann genau und mit ausreichender Geschwindigkeit durchgeführt werden. ―― 2c. Nehmen Sie eine positive und unterstützende Haltung ein und konsultieren Sie andere, um bessere Lösungen zu finden

Auf dieser Grundlage werden wir spezifische Maßnahmen beschreiben.

Pre-Training mit Leetcode

Durch die Abrechnung des Leetcodes werden einige zusätzliche Funktionen freigeschaltet. Insbesondere ist die Häufigkeit von Fragen nach Branche und Unternehmen hoch, und es ist vorteilhaft, eine Gebühr zu erheben, wenn Sie einige Zeit mit der Vorbereitung des Interviews verbringen (jede Person trifft eine moralische Entscheidung, für den Leetcode zu bezahlen).

Klassifizierte Hochfrequenzprobleme werden von den Fragestellern in der Regel vermieden. Es ist jedoch am besten, sie in der Reihenfolge ihrer Häufigkeit zu lösen, da die Wahrscheinlichkeit groß ist, dass ähnliche Probleme auftreten, und viele von ihnen es wert sind, mit guten Fragen gelernt zu werden. Wenn das empfangende Unternehmen entschieden wird, ist es besser, sowohl mit der Frequenzreihenfolge des Unternehmens als auch mit der Gesamthäufigkeitsreihenfolge fortzufahren (beide überschneiden sich teilweise). Wenn es die Zeit erlaubt, ist es besser, etwa 200 Fragen zu stellen, wenn Sie ein Top-Unternehmen erhalten.

Ein Interview dauert ungefähr 45 bis 60 Minuten und 2 Fragen (leicht oder mittel) + (mittel oder schwer) sind Standard. Da wir nach der Lösung des Problems eine Diskussion führen werden, scheint die Zeit, die zur tatsächlichen Lösung des Problems verwendet werden kann, 15 bis 20 Minuten für mittel und etwa 30 Minuten für schwer zu betragen. Die Geschwindigkeit der Problemlösung ist wichtig. Versuchen Sie also, sich daran zu gewöhnen, den Algorithmuscode schnell zu schreiben.

Einige schwierige Probleme sind für normale Menschen auf den ersten Blick nur schwer zu lösen (https://leetcode.com/problems/cat-and-mouse/). Die Idee hängt vom Interviewer ab, aber wenn ein äußerst schwieriges Problem auftritt, scheint er zu versuchen, die Fähigkeit zu erkennen, unter der Prämisse von Hinweisen (2b, 2c) zu diskutieren, anstatt die Schärfe des Kopfes (1a), der ohne Hinweise löst. Wenn Sie also üben, müssen Sie nicht lange über unlösbare Probleme nachdenken. Wenn Sie sie nicht innerhalb einer Stunde lösen können, sollten Sie sich die Erklärungen und die Codes anderer Personen ansehen.

Auch wenn Sie es lösen können, sollten Sie immer die Erklärung und den Code anderer beachten. Im Interview werden nach der Lösung des Problems der Umfang der räumlichen Berechnung und der Umfang der Zeitberechnung abgefragt und der Kompromiss mit möglichen alternativen Lösungen erörtert (1b). Daher ist es sinnvoll, mehrere Lösungen anzusprechen. Der Code anderer Leute ist oft hilfreich für kompaktes und gutes Schreiben.

Im Gegensatz zur Online-Beurteilungsfunktion von letcode können Sie keinen Code in einem Interview ausführen. Wenn Sie den Code geschrieben haben, machen Sie es sich zur Gewohnheit, den Testfall von Hand auszuführen, während Sie sich den Wert der Variablen notieren und ohne Computer debuggen. Wenn ich den Randfall selbst bemerke, ist der Eindruck beim Interview sehr gut.

Viele Interviewer sagen, dass "feine Grammatik keine Rolle spielt", aber es ist besser, genauen Code ohne Stagnation schreiben zu können. Da der Interviewer auch ein Mensch ist, kann er unwissentlich durch andere Eindrücke als die Punkte beeinflusst werden, die er bewerten möchte. Zunächst einmal üben Sie einfach, nach dem Schreiben des Codes auf einen Schlag akzeptiert zu werden. Daher ist es am besten, sich die Grammatik der von Ihnen verwendeten Sprache und die Standardbibliothek in Bezug auf Algorithmen so genau wie möglich zu merken (später beschrieben).

Da Sie im Interview (2a) einfach zu lesenden Code schreiben müssen, lösen Sie das Problem, während Sie sich bewusst sind, dass die allgemeine Logik normalerweise schwer zu funktionieren ist und die Verschachtelung wie für und wenn nicht zu tief ist.

Um die Lösung im Auge zu behalten, ist es besser, das ungelöste Problem wiederholt in Abständen von 1-3 Monaten zu lösen. Ich denke, es hängt von der Person ab, aber selbst wenn Sie sich 2-3 Monate lang darauf konzentrieren (I), werden sich Ihre Fähigkeiten nicht plötzlich verbessern. Es wird daher empfohlen, über einen langen Zeitraum nach und nach zu üben.

Anderes Pre-Training als Leet-Code

Programmiersprache

Python wird als Sprache für die Codierung von Interviews empfohlen. Dies ist vorteilhaft, da der Umfang der Eingabe gering ist, häufig verwendete Algorithmen in der Standardbibliothek fast vollständig sind und der Interviewer sie häufig lesen kann. Tatsächlich verwendet die überwiegende Mehrheit der Kandidaten Python. Wenn Sie mit anderen Sprachen vertraut sind, ist das in Ordnung, aber Sprachen mit schwachen algorithmischen Standardbibliotheken und Sprachen mit einer großen Anzahl von Typen (C ++ / Java) sind etwas nachteilig.

Machen Sie sich mit der Grammatik und den algorithmischen Standardbibliotheken Ihrer Sprache vertraut, damit Sie genauen und idiomatischen Code schreiben können. Denken Sie bei Python daran, dass defaultdict, OrderedDict, Counter, deque, bisect, heap, map / redu, Verständnisnotation, Lambda-Ausdruck (nützlich zum Schreiben von Sortierschlüsseln) mit Notation usw. so fest wie möglich sind. .. Beachten Sie, dass das Lesen und Schreiben von Dateien, die Parallelität (Threading und Sperren) und die Generierung von Zufallszahlen, die selten mit Leetcode auf die Schnittstelle geschrieben werden, während des Interviews plötzlich abgefragt werden können. Wenn Sie es sich leisten können, können Sie den Code präzise schreiben, indem Sie sich daran erinnern, dass sich itertools ansammeln, verketten, Produkt, Permutationen, Kombinationen usw.

Algorithmus

Lernen Sie den grundlegenden Algorithmus und seinen Rechenaufwand kennen. Der erste Band des Lehrbuchs Algorithm Design Manual wird empfohlen (der zweite Band ist nicht erforderlich, da es sich um eine Enzyklopädie fortgeschrittener Algorithmen handelt).

Grundlegende Algorithmen, die Sie von Grund auf implementieren und den Rechenaufwand erläutern sollten:

--Finden, Hinzufügen, Löschen von Vorgängen für unsortierte Arrays, sortierte Arrays, unidirektionale / bidirektionale Linklisten und Hash-Tabellen --Finden Sie, fügen Sie eine Operation für einen unausgeglichenen Dichotomiebaum hinzu (Pfad, da das Löschen kompliziert ist) --Heap Push, Peek, Pop (Blase hoch, Blase runter)

Rekursive Algorithmen wie binäre Suche, schnelle Sortierung, DFS / BFS usw. machen Fehler, sobald Sie sie schreiben, was zu einer Endlosschleife führt. Üben Sie also wiederholt und gewöhnen Sie sich daran. Ob eine Wiederholung korrekt geschrieben werden kann oder nicht, ist als Kontrollpunkt für Codierungsfähigkeiten wichtig.

Ein Algorithmus, der nicht sofort implementiert werden muss, sondern in der Lage sein sollte, den Rechenaufwand zu skizzieren und zu beantworten:

Interview zum Systemdesign

In großen Unternehmen hat ein Frame normalerweise ein Systemdesign-Interview. Je höher die Jobebene, desto größer das System und die abstrakte Aufgabeneinstellung sowie die Fähigkeit, Probleme zu erkennen und zu entwerfen.

Systemdesign-Interviews sind nicht so systematisch wie das Codieren von Interviews, und es ist schwieriger, proaktive Maßnahmen zu ergreifen, da es subjektiv ist, dass der Interviewer entscheidet, was gut oder schlecht ist. Es ist ratsam, die Probleme, die aus Ihrer Arbeitshistorie und der Stelle, auf die Sie sich bewerben, zu erwarten, im Voraus zu simulieren. Dieses Material wird von der Mitte bezahlt, ist aber sehr nützlich: https://www.educative.io/courses/grokking-the-system-design-interview

Andere CS-Grundlagen

Wenn Sie nicht aus der sogenannten Informatik stammen, ist es am besten, so viel Bildung wie möglich zu haben. Es ist schlecht, wenn Sie die Grundlagen überhaupt nicht kennen, aber es gibt viele Ingenieure, die nicht von CS stammen, sodass Sie nicht aufgeben müssen.

Wenn Sie den Entwicklungsinhalt ansprechen möchten, ist es besser, ehrlich zu sagen, dass Sie nicht wissen, ob Sie es nicht wissen, da es kontraproduktiv sein kann, wenn Sie mit einem Backmesser (2b / 2c) sprechen.

Verpflichtend

nice to have

--Rechnerarchitektur

Englisch

Im Allgemeinen ist das erforderliche Niveau nicht hoch. Grundlegende Kommunikation ist genug, aber wenn Sie überhaupt nicht verstehen, was Sie sagen, ist es wahrscheinlicher, dass Sie fallen.

Wenn Sie Ihre Lieblingsinhalte mit englischen Untertiteln etwa 200 Stunden lang auf Netflix ansehen, können Sie über die Atmosphäre sprechen.

Last-Minute-Vorbereitung

Überprüfen Sie die Beschreibungsumgebung zum Zeitpunkt des Interviews so weit wie möglich im Voraus. Wenn ein Whiteboard oder Editor oder eine Maschine zum Schreiben für ein Interview vor Ort gemietet wird, ist das Tastaturlayout bekannt?

Wenn es sich bei der Produktion um Whiteboard-Codierung handelt, üben Sie unbedingt das Schreiben von Code auf das Whiteboard. Auch wenn Sie den Editor verwenden können, üben Sie ohne die automatische Einrückungsfunktion in letcode.

Interviewproduktion

Codierungsinterview

Beachten Sie, dass Sie viele Punkte verlieren, wenn Sie stillschweigend Code für ein Problem schreiben, auch wenn die Lösung korrekt ist. Denken Sie daran, dass der Grund, warum Menschen eher Interviews als Online-Richter führen, eine breite Kommunikation ist (2a, 2b, 2c).

Fragen Sie zuerst nach dem Zeitrahmen und der Anzahl der Fragen, die Sie stellen möchten, und verwalten Sie die Zeit so weit wie möglich selbst.

Probleme sind oft absichtlich mehrdeutig. Wenn Sie also ein Problem hören, stellen Sie einige Fragen, um die Spezifikationen zu überprüfen. Häufig gestellte Fragen wie Eingabe- / Ausgabeformate, Annahmen zur Datengröße, Wertebereichsannahmen, Randfälle (leere Container, Nullteilung, Selbstschleife von Diagrammen usw.), mehrere Lösungsmöglichkeiten usw. Beachten Sie, dass im Leetcode alle Nebenbedingungen im Fragentext geschrieben sind, aber Sie müssen sich im eigentlichen Interview fragen. Auch wenn Sie die Möglichkeit eines numerischen Überlaufs am Ende ignorieren und codieren, ist es gut, ihn einmal zu erwähnen.

Wenn Sie über einen Ansatz nachdenken, sagen Sie Ihre Gedanken so laut wie möglich. Wenn das Interview auf Englisch ist und der Kandidat nicht mit Englisch vertraut ist, wird es ziemlich schwierig sein, aber wenn es streng ist, üben Sie ein wenig im Voraus. Verwenden Sie so viel wie möglich in einer Umgebung, in der ein Whiteboard verwendet werden kann. Das Interview ist kein Englischtest, daher können alle Mittel eingesetzt werden, solange Sie kommunizieren können. Für ein Telefoninterview in einer Videokonferenz ist es eine gute Idee, ein leeres Blatt Papier und einen dicken Stift zu haben und es zur Erklärung auf ein großes Stück Papier zu schreiben.

Wenn Sie in Ihren Gedanken stecken bleiben, sagen Sie ihnen, wie Sie stecken geblieben sind, und sprechen Sie mit dem Interviewer. Insbesondere wenn das Problem schwierig ist, ist es sehr wahrscheinlich, dass es erforderlich ist, während der Beratung eine Lösung zu finden, anstatt sie ohne Hinweis zu lösen. Es ist ein schlechter Eindruck, dem Interviewer das Ganze wie "gib mir einen Hinweis" zu geben, aber der Beratungsstil wie "Was denkst du über xx?" Und bestimmte Fragen können ziemlich positiv sein. Wenn Sie Wissen haben, an das Sie sich nicht erinnern können, ist es besser, eine kurze Frage zu stellen, als die Klappe zu halten.

Erklären Sie kurz (vorzugsweise mehrere) Ansätze, die Sie verfolgen können, bevor Sie mit dem Schreiben von Code beginnen, und erläutern Sie den Kompromiss zwischen Rechenaufwand und Komplexität der Implementierung. Wenden Sie sich an den Interviewer, bevor Sie über den von Ihnen gewählten Ansatz schreiben.

Beachten Sie, dass der Code leicht zu lesen ist. Es ist in Ordnung, Funktionen anzunehmen, die nicht in der Standardbibliothek enthalten sind, aber stellen Sie sicher, dass Sie deren Spezifikationen mitteilen.

Testen Sie nach dem Schreiben manuell anhand eines Beispiels. Zu diesem Zeitpunkt kann ein Hinweis aus der Reaktion des Interviewers erhalten werden. Selbst wenn der Interviewer den Fehler kennt, möchte er ihn nicht direkt darauf hinweisen, da dadurch die Möglichkeit ausgeschlossen wird, dass der Kandidat ihn selbst bemerkt und behebt. Möglicherweise liegt ein Fehler im Code vor, wenn eine subtile Stille herrscht oder wenn Sie aufgefordert werden, das Verhalten zu "testen" oder "zu erklären".

Verhaltensinterview

Große Unternehmen stellen möglicherweise Fragen zu Führung und zwischenmenschlichen Beziehungen unter Berufung auf frühere Erfahrungen und virtuelle Situationen. Selbst wenn es eine sehr gute technische Bewertung erhält, sollte beachtet werden, dass es grundsätzlich fällt, wenn es als rote Fahne in Bezug auf das Verhalten angesehen wird.

Die Einstellungsseite denkt im Grunde: "Ich möchte jemanden, der korrekte Werturteile fällen, sich freiwillig bewegen und eine aktive Führung übernehmen kann, aber ich möchte keine Leute, die die Teamarbeit stören oder andere entmutigen." Es gibt. Abhängig von der Unternehmenskultur sind Menschen, die aggressiv gegenüber ihrer Umgebung sind, gegenüber ausländischem Kapital sehr vorsichtig (brillante Idioten). Ausbalancieren Sie daher im Interview den Appell an die Führung und den Appell an die Genossenschaft.

Wenn Sie nach Ihren Motiven für einen Jobwechsel gefragt werden, sollten Sie vermeiden, schlechte Dinge über Ihren vorherigen Job zu sagen, und positive Gründe angeben. Es ist gefährlich, als eine Person angesehen zu werden, die die Umgebung für die Ursache des Versagens verantwortlich macht. Bitte beachten Sie, dass dieser Bereich auch mit ausländischem Kapital mit japanischen Unternehmen identisch ist.

Nachtrag

Im Interview sind Glückselemente wie die Kompatibilität mit dem Interviewer (Interview Anti-Loop) unvermeidlich. .. Es ist schwer, viele Vorbereitungen zu treffen und zu fallen, aber das Scheitern ist nicht unbedingt auf mangelnde Fähigkeiten zurückzuführen.

Wenn Sie keine Interviewerfahrung mit ähnlichen Unternehmen haben, ist es besser, die erste Wahl nicht zu erhalten und Erfahrungen zu sammeln, indem Sie so viele Unternehmen wie möglich erhalten.

Recommended Posts

Codierungsinterviews in ausländischem Besitz in der Leetcode-Ära
Technologie zur Verwaltung von Passwörtern in der GitHub-Ära