Ich habe gerade einen Entwicklerjob bei Facebook bekommen. So habe ich mich auf meine Interviews vorbereitet.

Ich habe gerade sieben Vor-Ort-Interviews bei Silicon Valley-Technologieunternehmen abgeschlossen. Ich habe letztendlich ein Angebot für einen Software-Engineering-Job von Facebook angenommen.

Hier ist, wie ich mich auf diese Interviews vorbereitet habe und was ich dabei gelernt habe.

Meine mehrjährige Reise in Richtung Silicon Valley

Als ich an meiner Universität in Australien Informatik studierte, stellte ich mir immer meine Zukunft als Software-Ingenieur im Silicon Valley vor.

Ich mochte die Idee, im Herzen aller Innovationen der Technologiebranche zu stehen - ebenso wie ihre Fehler. Dieses Ziel hat mich motiviert. Es hat mich fokussiert.

Ich verließ meinen Posten als Lead iOS Engineer bei einer erstaunlichen Firma in Melbourne und kehrte in meine Heimatstadt Perth zurück, um zu studieren. Dort würde ich mich auf den vor mir liegenden Interviewprozess im Silicon Valley vorbereiten. Ich wusste, dass es unglaublich schwierig und anstrengend sein würde.

Wenn Sie den Tech-Interview-Prozess einem Raum von Software-Ingenieuren gegenüber erwähnen, werden sich viele gegen gängige Interview-Praktiken aussprechen. Ein Großteil des Arguments stammt aus der Argumentation, dass das Lösen von Algorithmen auf einem Whiteboard nicht die täglichen Aufgaben eines Softwareentwicklers darstellt oder in diese übersetzt.

Für diesen Artikel werde ich nicht auf dieses Gespräch eingehen. Stattdessen werde ich diese verschiedenen Arten von Interviewpraktiken aus der Sicht eines Kandidaten untersuchen und mich auch auf das konzentrieren, was ich aus dem Prozess gelernt habe.

Interviewen ist eine Fähigkeit

Während meiner Vorbereitung wusste ich immer, dass Interviews eine Herausforderung sein würden. Aber ich hatte ehrlich gesagt keine Ahnung, wie schwer es sein würde, bis ich in meinem ersten Interview knietief war.

Im Vorfeld der Interviews hatte ich sowohl kostenpflichtige als auch kostenlose Dienste genutzt, die Codierungs- und Whiteboarding-Interviews über das Telefon mit Personen simulierten, die über Branchenerfahrung bei der Befragung von Kandidaten verfügten. Diese Praxisinterviews waren wichtig, um mich auf den damit verbundenen Druck vorzubereiten. Aber wie ich später feststellte, machten sie nur einen Bruchteil dessen aus, woraus ein echtes Interview besteht.

Ich würde davon abraten, bei Ihrem Traumjob zu interviewen, ohne ein paar Schein- oder echte Interviews zu haben. Die Nervosität kann unglaublich überwältigend sein und nur durch Übung gedämpft werden.

Wie bei vielen anderen Dingen im Leben wird das Üben Ihr Selbstvertrauen verbessern.

Die verschiedenen Arten von Interviews, denen ich begegnet bin

Wenn Sie sich auf den vorläufigen Telefonbildschirmen gut vorbereiten und gute Leistungen erbringen, haben Sie die Möglichkeit, vor Ort zu kommen und Interviews im Wert von ganzen Tagen durchzuführen. Diese Interviews dauern in der Regel vier bis sechs Stunden, je nachdem, für welches Unternehmen Sie ein Interview führen.

Während meiner Reise ins Silicon Valley konnte ich insgesamt sieben Interviews vor Ort durchführen. Dies gab mir eine einzigartige Perspektive der aktuellen Landschaft für Interviews.

In der Regel werden vor Ort drei Hauptthemen behandelt: Algorithmus, Architekturdesign und Verhalten, auf die ich mich vorbereitet habe. Es gibt jedoch einige Unternehmen, die sich diesem Trend zu widersetzen scheinen und ihre Interviews erweitern, um mehr praktische Fähigkeiten abzudecken.

Ich werde kurz auf jedes der Themen eingehen, auf die ich gestoßen bin.

Algorithmus-Interviews

Die häufigste Art von Interview, der Sie begegnen werden. Der Interviewer fordert Sie auf, ein Problem auf einem Whiteboard zu lösen, das Ihr Wissen über Datenstrukturen, Sortieralgorithmen, Rekursion, Zeit- / Raumkomplexitätsanalyse sowie Muster- und Kantenfallerkennung bewertet. In diesem Interview werden Sie in der Regel eine Brute-Force-Lösung finden und dann versuchen, diese Lösung zu verbessern und gegebenenfalls die Kompromisse mit den verschiedenen von Ihnen vorgeschlagenen Lösungen zu erörtern.

Dies war das A und O meiner Vorbereitung. Sechs Wochen lang löste ich jeden Tag Algorithmen auf einem billigen Whiteboard zum Aufhängen, analysierte deren zeitliche / räumliche Komplexität und versuchte wirklich zu verstehen, was in jeder Codezeile passiert.

Persönlich mag ich Whiteboard-Algorithmen sehr, da ich mich nicht unbedingt (meistens) um das Schreiben einer kompilierbaren Syntax kümmern muss, sodass ich mich ausschließlich auf das jeweilige Problem konzentrieren kann. Andere Leute mögen Whiteboarding vielleicht nicht, aber ich würde ihnen sagen, dass sie es konsequent üben sollen, und es kann ihre Meinung ändern.

Architektur Design Interviews

Dies ist ein interessantes Interview, das ich sehr unterschätzt habe. Der Interviewer fordert Sie auf, ein System (natürlich auf einem Whiteboard) zu entwerfen, z. B. ein Parkhaus-Ticketing-System, einen Chat-Messenger, einen Twitter-Feed und andere gängige Systeme.

Sie werden beurteilt, wie Sie ein umfassendes Konzept entwickeln und ein System entwerfen, das alle Anforderungen und Einschränkungen erfüllt. Es ist jedoch Sache des Kandidaten, die richtigen Fragen zu stellen, die die Anforderungen und Einschränkungen definieren. Dieses Interview ist eher ein Gespräch, das mit einigen Zeichnungsdiagrammen und vielleicht sogar Klassenstrukturierung gemischt ist. Alles ist ziemlich hoch, so dass Sie keinen tatsächlichen Implementierungscode schreiben werden.

Natürlich sollten Sie das Gespräch so steuern, dass Sie wissen, wie Systeme funktionieren. Wenn Sie ein Backend-Ingenieur sind, würden Sie nicht wirklich auf die Mechanik der Client-Anwendungsdetails eingehen, wenn Sie nicht über vorheriges Fachwissen in diesem Bereich verfügen. Ich bin ein iOS-Ingenieur, daher habe ich über Architekturmuster, Modularisierung von Funktionen und Entwurfsmuster gesprochen, anstatt die API-Endpunkte zu skalieren, Worker, AWS usw. hinzuzufügen.

Verhaltensinterviews

Der Interviewer wird Ihnen Fragen zu Ihrer Person und Ihrem Umgang mit bestimmten Situationen stellen. Die Vorbereitung auf diese ist nicht so schwierig wie die anderen, erfordert jedoch viel Selbstbeobachtung in Ihrem eigenen Namen.

Die Fragen lauten in der Regel wie folgt:

Wie gehen Sie mit Fehlern um?

Was ist deine größte Schwäche?

Wie lösen Sie Konflikte?

Was würden Sie anders machen?

Ich denke, es wäre ziemlich schwer, dies zu vermasseln, aber ich habe viele Leute gehört. Sie versuchen, ihre Stärken als Schwächen zu tarnen, ihre Reaktion auf etwas zu entwickeln, von dem sie glauben, dass der Interviewer es hören möchte, oder die Schuld an fehlgeschlagenen Projekten einfach an andere Personen weiterzugeben.

"Meine Schwäche ist, dass ich zu fokussiert bin"

"Es war alles Jerrys Schuld, er war die meiste Zeit des Projekts krank"

Diese Interviewer sind geschult und kalibriert, um beschissene Menschen zu identifizieren und akute Aufmerksamkeit auf Bullshit zu lenken. Es ist ein schneller Weg, um Ihre Kandidatur aus dem Fenster zu werfen. Sei einfach echt, zeige Leidenschaft für deine Arbeit, besitze deine Fehler, zeige Initiative zur Verbesserung und du wirst es gut machen.

Kultur fit

Dies wird normalerweise mit dem Verhaltensinterview gepaart und konzentriert sich darauf, herauszufinden, ob Sie mit den Unternehmenswerten übereinstimmen. Zum Beispiel folgt Facebook der Hacker-ähnlichen Kultur, mutig zu sein und neue Ideen zu liefern, experimentell zu testen und keine Angst zu haben, Dinge zu zerbrechen. Während Airbnb eine Welt schaffen möchte, in der sich die Menschen überall hingehören, suchen sie nach Menschen mit hervorragenden Fähigkeiten im Bereich Gastfreundschaft.

Viele der großen Technologieunternehmen legen großen Wert auf die Kultur und stellen Mitarbeiter ein, die auf der Ausrichtung dieser Person auf ihre Werte basieren. Wenn Sie in einem dieser Unternehmen interviewen, ist es wichtig, dass Sie deren Werte nachschlagen und frühere Erfahrungen finden, die Sie mit Ihrem Interviewer in Verbindung bringen und kommunizieren können.

Paar-Programmierung

Eine interessante Kategorie, für die Sie mit einem anderen Ingenieur vor einem Computer gepaart werden, der mit einer Entwicklungsumgebung eingerichtet wurde, ähnlich wie Sie es in der realen Welt verwenden würden. Sie erhalten eine grundlegende Aufgabe mit einer Liste von Anforderungen, die Sie erfüllen müssen. Nach Abschluss jeder Aufgabe fordert der Interviewer Sie auf, weitere Funktionen zu implementieren, bis das Zeitlimit erreicht ist. Sie können beliebige Ressourcen wie Stapelüberlauf oder Online-Dokumentation verwenden.

Ich bin der Meinung, dass ein großer Teil des Erfolgs eines Kandidaten in diesem Interview davon abhängt, ob er realen Erfahrungen ausgesetzt ist. Im Gegensatz zu Whiteboarding ist das Schreiben von syntaktisch korrektem Code erforderlich. Sie sollten daher Ihre Sprache und Umgebung in- und auswendig kennen, da Sie nicht zu viel Zeit im Internet oder in der Dokumentation verbringen möchten, um nach Antworten zu suchen.

Während meiner vorherigen Rolle schrieb ich sauberen Code, während ich an einer Aufgabe arbeitete, gefolgt von einer Optimierung, sobald ich das Gefühl hatte, dass die Aufgabe abgeschlossen war. Diese Art von Workflow war für diese Art von Interview nicht vorteilhaft. Ich habe es geschafft, mich durch zu frühes Optimieren in eine Ecke zu bereinigen, was es schwieriger machte, mich davon zu erholen. Ich fand, dass das Schreiben von Scrappy-Code und die Erwähnung gegenüber dem Interviewer, dass ich es in der Produktion anders machen würde, als ausreichend angesehen wurde, als sauber und optimiert zu schreiben.

Fehler finden und beheben

Vieles, was wir als Ingenieure tun, dreht sich darum, Fehler zu finden und zu beheben, die uns aus verschiedenen Quellen gemeldet werden. In diesem Interview erhalten Sie eine Liste der zu findenden und zu reparierenden Fehler sowie die Identifizierung anderer potenziell problematischer Codes.

Ich habe nur eine Instanz dieser Art von Interview gesehen und ich denke, es wäre ziemlich schwierig für jemanden, sich wirklich darauf vorzubereiten, besonders wenn er ein Junior ist. Jede Codierungsumgebung hat ihre eigenen kleinen Macken und Nuancen. Ein Großteil des Patchworks stammt aus früheren Erfahrungen mit der IDE (Integrated Development Environment) und den damit verbundenen Frameworks, die ich im Laufe der Jahre gesammelt hatte.

Testen des Domänenwissens

Die Programmierung ist in den meisten gängigen Sprachen, die wir heute sehen, grundsätzlich gleich. Wenn Sie sich mit objektorientierter Programmierung in einer Sprache auskennen, werden diese Fähigkeiten wahrscheinlich meist auf eine andere übertragen.

Dieses Interview konzentriert sich jedoch auf die Aspekte, die nicht zwischen Sprachen oder Frameworks übertragen werden können. Sie werden zu Umgebungsspezifitäten in Bezug auf API, Speicherverwaltung, Funktionen, Einschränkungen, Verlauf usw. befragt.

Das Üben kann für dieses spezielle Thema eine Herausforderung sein. Ähnlich wie beim Interview zum Auffinden und Patchen von Fehlern habe ich das Gefühl, dass viele der Antworten aus früheren Erfahrungen stammen würden. Abhängig von der Ebene der Rolle, für die Sie sich bewerben, werden die von Ihnen angegebenen Antworten möglicherweise unterschiedlich gewichtet. Wenn beispielsweise jemand, der sich für eine Junior-Rolle bewirbt, nicht weiß, warum eine API auf eine bestimmte Weise strukturiert ist, erhält er möglicherweise eine Konzession. Wenn ein Kandidat, der sich für eine leitende Position bewirbt, dies nicht weiß, kann er härter dagegen sein.

Betriebssysteme verstehen

Abhängig von der Rolle oder dem Team, für das Sie ein Interview führen, haben Sie möglicherweise ein Interview, das sich ausschließlich auf Betriebssysteme konzentriert. In diesem Interview werden Ihnen Fragen gestellt, die Ihr Verständnis der untergeordneten Mechanik des Betriebssystems eines Computers beurteilen.

Zugegeben, dieses Interview hat mich überrascht. Betriebssysteme hatte ich in den ersten Jahren an der Universität gelernt, aber mein Wissen über das Thema, das sich in meiner Leistung widerspiegelte, ist seitdem verschwommen.

Wie solltest du dich vorbereiten?

Wie ich bereits schrieb, ist das Interviewen eine eigene Fähigkeit. Selbst wenn Sie bereits ein großartiger Programmierer in Ihrem Tagesjob sind oder gute Noten in Ihrem Studium erhalten, werden diese Fähigkeiten nicht genau 1: 1 übertragen, wenn Sie sich in einem winzigen Interviewraum befinden. Beharrlichkeit, Wiederholung und Übereinstimmung mit der Vorbereitung und Praxis des Interviews sind die entscheidenden Faktoren für Ihr Ergebnis.

Mindestkenntnisse

Wenn mich jemand fragen würde, worauf ich mich konzentrieren sollte, würde ich Folgendes vorschlagen:

  • Lernen Sie, Code zuerst von Hand auf Papier und ein Whiteboard zu schreiben und ihn dann zur Hervorhebung der Syntax in eine IDE zu werfen. Dies sollte für Sie zur zweiten Natur werden.
  • Entwickeln Sie ein tiefes Wissen über Datenstrukturen , ihre Stärken und Schwächen im Vergleich zueinander. Ich entdeckte, dass die Implementierung von Datenstrukturen und deren Verhalten von Grund auf so viel mehr lehrte, als ich aus ihren abstrakten Konzepten wusste.
  • Wenn Sie die Big O-Notation sowohl für die zeitliche als auch für die räumliche Komplexität vollständig verstehen , passt dies perfekt zu Ihrem Algorithmus und Ihren Sortierfragen.
  • Erfassen Sie alle wichtigen Sortieralgorithmen, da der Unterschied in der Komplexität von Zeit und Raum möglicherweise Ihre optimale Lösung für einen Algorithmus, den Sie lösen möchten, zum Scheitern bringt.

Wann soll ich anfangen?

Abhängig von Ihrer Zeitachse möchten Sie möglicherweise früher als später beginnen. Viele der Unternehmen, mit denen ich gesprochen habe, hatten eine Abkühlungsphase von 12 Monaten, bevor sich ein gescheiterter Kandidat erneut bewerben konnte. Auf der anderen Seite, wenn Sie wissen, dass Sie innerhalb eines Jahres nicht fertig sind, können Sie den Prozess auch jetzt starten und einen kleinen Eindruck davon bekommen, wie es ist, den Interviewprozess zu durchlaufen. Wenn Sie also bereit sind, hat er gewonnen. ' t fast so beängstigend sein.

Mach dir keine Sorgen

Du hast das.

Ressourcen

Scheininterviews

  • interviewing.io (Beta), Kostenlos
  • Pramp, kostenlos
  • CareerCup, bezahlt

Algorithmen

  • Den Code knacken Interview, Buch
  • Byte für Byte, Website und YouTube
  • CS50, YouTube
  • Interview Kuchen, Website
  • HackerRank, Website
  • LeetCode, Website

Betriebssysteme

  • Betriebssystemkonzepte, Buch

Architektur-Design

  • Einführung in Architektur und Systeme, YouTube

Verhalten

  • Einführung in Verhaltensinterviews, YouTube

Wenn Ihnen das, was Sie heute gelesen haben, gefällt, können Sie unsere anderen Artikel zur iOS- und Swift-Entwicklung lesen. Wenn Sie Kontakt aufnehmen möchten, senden Sie mir bitte einen Tweet oder folgen Sie mir auf Twitter @andyyhope . Das ist wirklich mein Tag.

Andyy Hope (@AndyyHope) | Twitter

iOS-Ingenieur. Blogger / Sprecher von Swift & iOS twitter.com