In unserem Blog schreiben wir viel über den Aufbau einer Karriere in der IT in verschiedenen Ländern, die Arbeitssuche und Unterschiede bei der Befragung großer Unternehmen. Im heutigen Artikel werden wir weiter gehen und das Thema der sogenannten Systemdesign-Interviews behandeln - dies ist eine der Phasen von Interviews mit bekannten Technologieunternehmen, in denen viele Kandidaten eliminiert werden.
Was ist Systemdesign und wie kommen Sie durch diese Art von Interview?
Was ist das
In der heutigen Welt sind IT-Systeme äußerst komplex geworden. Jedes neue "Merkmal" im Produkt muss viele Anforderungen erfüllen. Es gibt immer Einschränkungen, zwischen denen Ingenieure abwägen müssen. Was für den Durchschnittsnutzer sehr einfach aussieht - wie das Senden einer Suchanfrage über Google oder Yandex - ist tatsächlich sehr komplex.
Der Unterschied zwischen Systemdesign-Interviews und regelmäßigen technischen Interviews besteht darin, dass der Kandidat mehrdeutige Fragen zu Datenstrukturen und Algorithmen beantworten muss. In der Regel sind die Aufgaben in dieser Phase so, dass es für sie keine eindeutig richtige oder falsche Lösung gibt, sie provozieren den Denkprozess - darin wird der Kandidat offenbart.
Grob gesagt ist ein Systemdesign-Interview so etwas wie eine Brainstorming-Sitzung, in der eine Person laut nachdenkt, mögliche Lösungen durchläuft und die Fehler jedes einzelnen in Echtzeit analysiert. Dies ist die Schwierigkeit, aber auch das Hauptplus - der Denkprozess ist hier wichtiger als das Ergebnis. Solche Interviews werden in der Regel von großen Unternehmen durchgeführt, die Großsysteme entwickeln ( FAANG und dergleichen).
Wie kommt man durch ein Systemdesign-Interview? Im Folgenden finden Sie einige praktische Tipps.
, , @g-jobbot. , Telegram , – , .
–
Da in einem Interview zum Systemdesign das Wichtigste darin besteht, wie Sie ein Problem lösen, ist es in der ersten Phase äußerst wichtig, es selbst klar zu verstehen. Der ehemalige Microsoft- und Facebook-Ingenieur in seinem Artikel zeigt die Bedeutung dieser Tatsache anhand eines praktischen Beispiels.
In der Regel lautet die Aufgabe etwa "Wie würden Sie Netflix in 45 Minuten entwerfen?". Auf den ersten Blick sind solche Fragen völliger Unsinn. Solche Großsysteme wurden im Laufe der Jahre von Hunderten und Tausenden von Ingenieuren entworfen und implementiert. 45 Minuten reichen nicht einmal aus, um mindestens eine der Komponenten eines solchen Produkts zu besprechen!
Hier ist es sehr wichtig, die Aufgabe zu verstehen. Sie müssen verstehen, was der Interviewer will. Und er möchte offensichtlich, dass er:
- gab eine Antwort im Format "Hubschrauberansicht" des gesamten Systems,
- dann zerlegte es in Komponenten
- beschrieben, warum jeder von ihnen benötigt wird (Rechenzentrum, Datenspeicherung, Frontend, Backend, Caching, Arbeiten mit Warteschlangen, Netzwerk und Lastausgleich usw.)
Bild: system-design-primer
Sie können auf einige dieser Komponenten näher eingehen - sie werden Sie darauf hinweisen, oder Sie müssen fragen. Normalerweise müssen Sie in einem Interview zum Systemdesign nicht einmal Code schreiben. Wenn Sie sofort in den technischen Dschungel eintauchen, ohne zuerst das gesamte System als Ganzes zu diskutieren, ist dies ein Nachteil.
Stellen Sie klärende Fragen
Der Hauptzweck des Systemdesign-Interviews besteht darin, dem Kandidaten die Möglichkeit zu geben, sein Wissen und seine Erfahrung zu demonstrieren. Wie oben erwähnt, gibt es keine richtigen oder falschen Antworten. Es ist viel wichtiger, das Problem als solches nicht zu lösen - zumal es in der vorgegebenen Zeit einfach unmöglich sein kann -, sondern Ihren Denkprozess in seiner ganzen Pracht zu zeigen.
Daher ist es äußerst wichtig, Fragen zu stellen, auch wenn sich plötzlich herausstellt, dass Sie die Antwort auf die gestellte Frage genau kennen. In einer solchen Situation müssen Sie nicht nur eine Lösung für das Problem schreiben, dies widerspricht dem Zweck des Interviews. Sie müssen die bekannte Lösung vergessen und nach einer neuen suchen und dabei Fragen stellen.
Auf diese Weise kann der Interviewer mehrere Dinge gleichzeitig verstehen:
- Wie geht der Kandidat mit der Bewertung des Problems um?
- Beurteilt er sofort mögliche Einschränkungen und Engpässe des Systems?
- Denkt es sofort über die Optimierung von Lösungen und die Umgehung von Einschränkungen nach?
In diesem Artikel teilte ein Twitter-Ingenieur seine Erfahrungen mit Interviews mit. Insbesondere gab er eine gute Beschreibung, wie man Fragen stellt. Stellen Sie sich vor, Sie hätten in einem Interview den Auftrag erhalten, eine Box zu entwerfen. Es werden keine weiteren Informationen direkt gegeben.
Fragen könnten sein:
- Was genau sollte das System tun können (wie viele Artikel passen in die Box, wie groß sind sie)?
- Wer ist die Zielgruppe des Produkts?
- Was sind die Erwartungen der Produktanwender?
Wenn Sie darauf antworten, können Sie verstehen, dass Sie eine gelbe Box mit einem darauf gezeichneten Emoticon erstellen müssen, die für mindestens einen Tennisball geeignet ist. Der Ball ist jedoch nicht ganz normal - sein Radius beträgt einen halben Meter und sein Gewicht beträgt etwa 1 kg. Die Box ist leicht zu tragen, wenn Sie den Boden festhalten, sodass keine Griffe erforderlich sind.
Es gibt viel mehr Informationen, jetzt können Sie darüber nachdenken, ein so verfeinertes Problem zu lösen.
Bild: freecodecamp.com
Versuche nicht zu beeindrucken
Ein häufiger Fehler bei Interviews zum Systemdesign - viele Kandidaten sind der Meinung, dass es in dieser Phase ausreicht, auf Abstraktionsebene zu arbeiten. Es reicht aus, während des Gesprächs coole Begriffe und Namen modischer Technologien einzugeben, um als Experte zu gelten. So funktioniert das nicht.
Erstens wird das Interview zum Systemdesign wahrscheinlich nicht nur ein Personalvermittler sein, sondern ein Ingenieur, der nach einer Person sucht, die seinem Team beitritt. Es reicht für eine solche Person nicht aus, nur Wörter wie No-SQL, Mongo DB und Hadoop zu hören. Er wird offensichtlich anfangen, klärende Fragen zu stellen, und wenn Sie nicht wirklich viel Erfahrung mit den genannten Technologien haben, wird dies sehr schnell klar.
Sei ehrlich
Ein Systemdesign-Interview ist eine der Situationen, in denen es in Ordnung ist, es nicht genau zu wissen. Antworten wie „Ich habe noch nie mit dieser speziellen Technologie gearbeitet, aber ich weiß, dass sie häufig zur Lösung ähnlicher Probleme verwendet wird“ sind daher eine gute Option. Zusätzlich zur Ehrlichkeit zeigte der Kandidat hier bestimmte Kenntnisse und machte dem Interviewer klar, wo er mit der Lösung des Problems beginnen wird (er wird eine bekannte Lösung versuchen, wenn es nicht funktioniert, wird er weiter „graben“).
Darüber hinaus sollten Sie Ihre Lösung nicht als ideal ausgeben und keine Nachteile aufweisen. Es gibt immer Einschränkungen, und ein erfahrener Ingenieur-Interviewer versteht dies besser als jeder andere. Daher lohnt es sich, während des Interviews ehrlich zu sagen, dass es solche und solche Engpässe in der Lösung gibt, aber Sie können versuchen, diese auf diese und jene Weise zu umgehen, zusätzliche Tools zu verwenden oder noch mehr Forschung zu betreiben.
Dies wird deutlich machen, dass der Kandidat nicht nur eine Lösung findet und dann hart versucht, sie durchzusetzen, sondern auch flexibel sein, Anpassungen vornehmen und im Allgemeinen angemessen sein und verstehen kann, dass es immer möglich ist, bessere Ergebnisse zu erzielen.
Hier ist ein schöner fiktiver Dialog in einem Systemdesign-Interview, der Ihnen zeigt, wie Sie NICHT vorgehen müssen:
: Twitter. ?
: NoSQL- MongoDB.
: MySQL?
: . MongoDB BigTable.
: Twitter MySQL, .
: , , , . - Facebook NO-SQL.
: Facebook MySQL.
: , , , . , MySQL , BigTable.
Interviewer : Es spielt keine Rolle. Wo werden wir die analytischen Daten speichern?
Kandidat : Offensichtlich in MySQL.
Interviewer : Aber gibt es nicht zu viele für MySQL? Jetzt haben wir HDFS dafür.
Kandidat : Sie haben anscheinend schon mit der Entwicklung von Twitter begonnen, bevor MongoDB genug entwickelt hat. MongoDB kann problemlos sowohl Tweets als auch Analysedaten aufnehmen.
Interviewer : Großartig, danke für deine Zeit. Es war schön zu plaudern.
So bereiten Sie sich auf ein Interview vor: Nützliche Links
Während das Systemdesign einer der unschärferen Teile eines Interviews ist, können Sie sich darauf vorbereiten. Um den Kandidaten zu helfen, haben wir eine Liste nützlicher Materialien zusammengestellt: