Direkt zum Hauptinhalt

Technische Interviews – Ein Leitfaden für Personalverantwortliche, um sich abzuheben

Engineering job interview best practices

Veröffentlicht: 22. Januar 2020

Kultur9 min Lesezeit

Fragen Sie jeden Engineering-Leiter in einem wachsenden Unternehmen, was seine oberste Priorität ist, und er wird wahrscheinlich sagen: Einstellung. Wenn wir darüber nachdenken, wie wichtig die Annahme eines Jobs sowohl für das Unternehmen als auch für den Kandidaten ist, scheinen die wenigen Stunden des Vorstellungsgesprächs ziemlich kurz zu sein. Wir möchten sicherstellen, dass unser Bewerbungsgesprächsprozess diese Zeit optimal nutzt, um sowohl Kandidaten als auch Databricks zu helfen zu verstehen, ob die Stelle gut passt. Wir möchten etwas über Sie erfahren und sicherstellen, dass Sie die Informationen erhalten, die Sie benötigen, um die beste Entscheidung zu treffen. Eine der besten Möglichkeiten, dies zu erreichen, ist die Gestaltung von Vorstellungsgesprächen, die Konversation und Zusammenarbeit betonen. Reale Probleme sind unübersichtlich und komplex. Wir möchten verstehen, wie Kandidaten abstrakte Herausforderungen lösen, mehr als wir eine spezifische Lösung sehen wollen.

Was möchten Sie, dass Kandidaten über das Datenteam bei Databricks verstehen, bevor sie den Bewerbungsprozess beginnen?

Trotz des Umfangs der Infrastruktur, die Databricks betreibt, haben wir eine relativ kleine Engineering-Organisation. Wir betreiben Millionen von virtuellen Maschinen, generieren Terabytes an Protokollen und verarbeiten Exabytes an Daten pro Tag. In unserem Umfang beobachten wir regelmäßig Fehler in der Cloud-Hardware, im Netzwerk und im Betriebssystem, und unsere Software muss unsere Kunden von all dem anmutig abschirmen. Wir tun all dies mit weniger als 200 Ingenieuren.

Unsere Größe bedeutet, dass wir die Flexibilität haben, die Technologie zu übernehmen oder zu entwickeln, von der wir glauben, dass sie die beste Lösung für jede technische Herausforderung darstellt. Die Kehrseite ist, dass viele Teile unserer Infrastruktur noch ausreifen, sodass sich die Bedenken für viele Initiativen über den Umfang eines einzelnen Dienstes hinaus erstrecken. Es ist auch immer noch ein Startup, sodass die Grenzen von Eigentum und Verantwortung nicht immer klar sind. Das bedeutet, dass es einfach ist, Änderungen vorzunehmen und Auswirkungen außerhalb Ihrer Kernbereiche zu erzielen, und dass Sie viel mehr von einem Projekt besitzen werden, als Sie es woanders tun würden.

Worin werden Sie nach der Arbeit bei Databricks ein Meister sein? Sie werden in der Lage sein, skalierbare Systeme im Bereich Big Data und Machine Learning zu erstellen. Die meisten Ingenieure beschäftigen sich nicht täglich mit angewandtem ML, aber wir verstehen tiefgreifend, wie es in einer Reihe von Branchen für unsere Kunden eingesetzt wird.

Wie können Sie sich auf technische Interviewfragen vorbereiten?

Unsere technischen Interviews bestehen aus einer Mischung aus technischen und Soft-Skills-Bewertungen, die zwischen 45 und 90 Minuten dauern. Während einige unserer technischen Interviews eher traditionelle Algorithmusfragen sind, die sich auf Datenstrukturen und Grundlagen der Informatik konzentrieren, haben wir uns zunehmend auf praxisorientierte Problemlösungs- und Coding-Bewertungen verlagert. Selbst bei den Algorithmusfragen dürfen Kandidaten das Problem lieber auf einem Laptop als auf einer Tafel lösen. Dies hilft uns, einen Eindruck davon zu bekommen, wie sie Code in einer realistischeren Umgebung schreiben. Bei unseren Coding-Fragen konzentrieren wir uns weniger auf Algorithmenkenntnisse und mehr auf Design, Code-Struktur, Debugging und das Erlernen neuer Domänen. Zum Beispiel werden einige unserer technischen Fragen wahrscheinlich eine Sprache/ein Framework verwenden, mit dem Sie nicht vertraut sind, sodass Sie die Fähigkeit demonstrieren müssen, Dokumentationen zu lesen und ein Problem in einem neuen Bereich zu lösen. Andere Fragen beinhalten den schrittweisen Aufbau eines komplexen Programms durch Befolgen einer Feature-Spezifikation.

Wir passen unsere Interviews auch an den Hintergrund, die Berufserfahrung und die Rolle des Kandidaten an. Für Fullstack-Rollen verbringen wir mehr Zeit mit den Grundlagen der Webkommunikation (HTTP, WebSockets, Authentifizierung), Browser-Grundlagen (Caching, JS-Ereignisbehandlung) und API-Datenmodellierung. Für Low-Level-System-Engineering werden wir Multithreading und OS-Primitive hervorheben.

Ich empfehle drei Dinge zur Vorbereitung:

  1. Finden Sie Coding-Fragen online und üben Sie deren vollständige Lösung. Das bedeutet, vollständigen funktionierenden Code und Tests zu erstellen, ohne auf die Lösung zu schauen. Das Erstellen von Tests ist wichtig; einige unserer technischen Fragen haben mehrere Stufen, sodass Sie schnell ein Test-Harness für eine schnelle Editier-/Kompilierungs-/Debug-Schleife während des Interviews einrichten möchten, genau wie Sie es für Ihre tägliche Arbeit tun würden.
  2. Überprüfen Sie die Grundlagen der Informatik. Kennen Sie gängige Datenstrukturen, die Laufzeit- und Speichernutzung jeder Methode und deren Schnittstelle in der Sprache, die Sie verwenden möchten. Dieses technische Interviewhandbuch auf GitHub ist ein guter Überblick über die verschiedenen Datenstrukturen, aber Sie sollten auch Systemkonzepte wie Multithreading, Nebenläufigkeit, Sperren und Transaktionen studieren.
  3. Machen Sie Probeinterviews. Der Zeitdruck und der Dialog eines Probeinterviews sind eine großartige Möglichkeit, sich vor dem eigentlichen Gespräch wohlzufühlen. Lassen Sie sich von einem Freund Fragen stellen, die Sie nicht kennen, und geben Sie bei Bedarf Hinweise.

Haoyi aus unserem Dev Tools-Team hat einen großartigen Blogbeitrag darüber geschrieben, wie man effektiv interviewt, der gute Einblicke gibt, wie wir unsere Interviews strukturieren und was wir suchen.

Webinar

Databricks 101: Eine praktische Einführung

Was sind die häufigsten Fehler, die Sie in Vorstellungsgesprächen sehen?

Nachdem wir nun behandelt haben, was wir suchen und wie man sich auf Vorstellungsgespräche vorbereitet, gibt es ein paar Dinge, die Sie während eines technischen Vorstellungsgesprächs bewusst nicht tun sollten.

Das Wichtigste ist mangelnde Leidenschaft oder Interesse an der Stelle. Denken Sie daran, Sie interviewen auch das Unternehmen, und es ist wichtig, dass Sie zeigen, dass Sie sich für eine gute Übereinstimmung einsetzen. Geringe Begeisterung, mangelnde Vertrautheit mit dem Databricks-Produkt, keine Fragen stellen und sich im Allgemeinen darauf verlassen, dass der Interviewer das gesamte Gespräch leitet, sind alles Anzeichen dafür, dass Sie nicht interessiert sind. So wie Sie einen Bewerbungsprozess wünschen, der Sie herausfordert und auf Ihre Fähigkeiten und Interessen eingeht, mögen wir Kandidaten, die uns schwierige Fragen stellen und sich die Zeit nehmen, uns kennenzulernen.

Bei technischen Interviews versuchen wir, wenn ein Kandidat eine nicht funktionierende Lösung verfolgt, ihm zu helfen, dies zu erkennen, bevor er viel Zeit mit der Implementierung verbringt. Wenn der Interviewer Fragen stellt, versucht er wahrscheinlich, Sie auf einen anderen Weg zu lenken. Anstatt an einer Einzellösung festzuhalten, nehmen Sie sich einen Moment Zeit, um zurückzutreten und Ihren Ansatz mit neuen Hinweisen oder Fragen zu überdenken. Denken Sie daran, dass Ihr Interviewer wahrscheinlich dieselbe Frage Dutzende Male gestellt und eine Reihe von Ansätzen gesehen hat. Sie wollen auch sehen, wie Sie in einer realen Umgebung reagieren würden, in der Sie mit einem Team zusammenarbeiten würden, das auf ähnliche Weise Hilfe anbietet.

Für Interviews, die sich auf die Berufserfahrung und Soft Skills konzentrieren, haben Sie spezifische Beispiele. Es ist in Ordnung, mit einer allgemeinen Verallgemeinerung zu beginnen, aber erzählen Sie eine Geschichte darüber, wie spezifische Beispiele aus Ihrer bisherigen Berufserfahrung die Frage beantworten. Wenn Sie über Ihre Berufserfahrung sprechen, versuchen Sie, (1) das Problem klar zu definieren, (2) Ihre Lösung, (3) das Ergebnis und (4) mögliche Überlegungen zu Verbesserungen. Eine gute Möglichkeit, eine gut durchdachte Antwort zu geben, ist die Verwendung der STAR Interview Response Technique.

Welche Eigenschaften haben Sie bei erfolgreichen und wirkungsvollen Ingenieuren in Ihren Teams (sowohl aktuell als auch in der Vergangenheit) beobachtet?

In einem Startup wie Databricks ist die wichtigste Eigenschaft, die ich bei erfolgreichen Ingenieuren gesehen habe, Eigenverantwortung. Wir wachsen schnell, was jede Woche viele neue Herausforderungen mit sich bringt, aber es ist nicht immer klar, wie sich die Verantwortlichkeiten auf die Teams verteilen und Prioritäten festgelegt werden. Großartige Ingenieure gehen mit dieser Mehrdeutigkeit um, indem sie die wirkungsvollsten Probleme identifizieren, an denen sie arbeiten können, nicht nur die, die auf die Verantwortlichkeiten ihres aktuellen Teams beschränkt sind. Manchmal bedeutet dies, direkt an der Erstellung der Lösung mitzuwirken, aber oft geht es darum, andere zu motivieren, die Arbeit zu priorisieren.

Die zweite Eigenschaft, auf die wir uns konzentrieren, insbesondere bei jüngeren Karrieren, ist die Fähigkeit zu lernen und zu wachsen. Die Ableitung von Wissen ist oft wichtiger als die aktuellen technischen Fähigkeiten eines Kandidaten. Viele der technischen Probleme, die wir lösen, haben keine bestehenden Vorlagen, denen man folgen kann. Das bedeutet, dass man ständig Schichten der Abstraktion durchbrechen muss, um das größere System zu betrachten – von den untersten CPU-Befehlen bis hin zur Darstellung von Visualisierungen im Browser.

Wie habe ich diese Eigenschaften in Vorstellungsgesprächen gesehen? Ingenieure, die viel Eigenverantwortung zeigen, können oft detailliert über die angrenzenden Systeme sprechen, auf die sie sich für ihre bisherige Arbeit verlassen haben. Zum Beispiel kennen sie die Stärken und Schwächen einer bestimmten Speicherschicht oder eines Build-Systems, das sie verwendet haben, und warum. Sie erstellen auch oft Änderungen, um ihr Team effektiver zu machen – sei es durch Tooling-Verbesserungen oder Prozessänderungen. Wachstum zeigt sich in der Reflexion über frühere Arbeiten. Keine Lösung ist perfekt, und großartige Ingenieure wissen, was sie als nächstes oder anders tun würden. Viele Kandidaten sagen, dass die Möglichkeit zu wachsen ihr Hauptkriterium für die Wahl ihres nächsten Jobs ist, aber sie sollten darüber sprechen können, was sie bereits tun, um zu wachsen. Vielleicht ist das ein Nebenprojekt, eine neue Technologie, die sie kürzlich gelernt haben, eine Verbesserung ihrer Entwicklungsumgebung oder eine Mentorenbeziehung, die sie in ihrer aktuellen Rolle pflegen.

An welchen Problemen arbeitet Ihr Team? Welche Fähigkeiten sind erforderlich, damit Kandidaten bei diesen Problemen erfolgreich sind?

Das Workspace-Team unterstützt eine ziemlich breite Palette von Produktanwendungsfällen, und die meisten Teammitglieder arbeiten Full-Stack. Wir suchen Generalisten, die gezeigt haben, dass sie neue Technologien schnell erlernen können. Wir sind auch sehr kundenorientiert und benötigen Ingenieure, die tief graben können, um unsere Benutzer zu verstehen und Anforderungen zu formulieren. Mehrere Teammitglieder hatten entweder eigene Startups oder waren frühe Mitarbeiter bei Startups.

Einer der besten Wege, eine Rolle zu verstehen, ist die Frage: „Wovon werde ich ein Meister werden?“ Für das Workspace-Team sind es drei Hauptfähigkeiten.

  1. Schnelles Erlernen neuer Technologien. Das Workspace-Team leistet viel explorative und prototypische Arbeit. Das Team hat viele Generalisten, die Produktgespür und die Fähigkeit benötigen, bestehende Technologien für neuartige Probleme anzupassen. Ein gutes Beispiel ist die Anpassung des Open-Source-Jupyter-Notebooks für die Ausführung in der von Databricks gehosteten Cloud mit Databricks-Clustern. Ein weiteres Beispiel ist die Erstellung einer Pub/Sub-Infrastruktur zur Übertragung von Updates über eine GraphQL-API an Echtzeit-Webclients.
  2. Die Workflows rund um Data Science, maschinelles Lernen und Datenanalyse. Wir entwickeln Produkte für diese Personas, daher werden Sie die täglichen Arbeitsabläufe von Data Scientists und Data Engineers bei einer Vielzahl von Kunden aus vielen Branchen und Unternehmensgrößen genau verstehen. Ingenieure in diesem Team haben regelmäßigen Kontakt mit unseren Kunden und internen Kunden-Champions im Field Engineering.
  3. Skalierbares Web-Service-Design auf der JVM. Unser Team arbeitet am Kern-Backend für die zustandsbehafteten Notebooks und den Workspace, was oft Designherausforderungen mit sich bringt, die für einen Service in unserer Größenordnung einzigartig sind. Jeder im Team entwickelt ein tiefes Verständnis für Ressourcen-Primitive (CPU/Speicher/I/O/Netzwerk) und wie deren Nutzung in einer verteilten fehlertoleranten Architektur optimiert werden kann.

Bei Databricks suchen wir ständig nach Software-Ingenieuren, die die von uns besprochenen Eigenschaften verkörpern. Wenn Sie daran interessiert sind, einige der Herausforderungen zu lösen, mit denen wir uns derzeit hier befassen, besuchen Sie unsere Karriereseite und bewerben Sie sich für ein Vorstellungsgespräch mit uns!

Ted Tomlinson ist Director of Engineering bei Databricks. Er leitet das Workspace-Team, das für das Flaggschiff-Produkt für kollaborative Notebooks von Databricks und die Dienste zur Ermöglichung interaktiver Datenwissenschaft und maschinellen Lernens in verschiedenen Umgebungen verantwortlich ist.

(Dieser Blogbeitrag wurde mit KI-gestützten Tools übersetzt.) Originalbeitrag

Verpassen Sie keinen Beitrag von Databricks

Abonnieren Sie unseren Blog und erhalten Sie die neuesten Beiträge direkt in Ihren Posteingang.