Reicht es nicht aus, nur grundlegende Datenstrukturen und Algorithmen zu kennen, um die meisten technischen Interviews in großen Unternehmen zu knacken?

Nein, es ist nicht genug! Ich habe bei Microsoft, Facebook, Google und Amazon interviewt. Beachten Sie, dass technische Interviews nicht nur Codierungsfragen, sondern auch Designfragen umfassen. Lassen Sie uns zunächst die Codierungsfragen diskutieren, die in diesen großen Unternehmen gestellt werden. Hier sind meine Beobachtungen zu diesen Fragen:

  1. Alle Fragen beinhalten einen Trick, den Sie zuerst lösen müssen. Nehmen Sie zum Beispiel die Frage ‘Schreibe einen in-order-Iterator eines binären Suchbaums (BST)’ – Die Kenntnis der Datenstruktur (oder des Algorithmus) allein reicht hier nicht aus. Wie wir wissen, können wir einen Stapel verwenden, um die iterative Lösung für das rekursive Durchlaufen von BST zu entwickeln, aber der Trick ist, welcher Knoten auf den Stapel verschoben werden soll und wie / wann wir einen Knoten einfügen sollen.
  2. Eine End-to-End-Lösung finden – Wenn Sie die Datenstrukturen kennen, können Sie das herausfinden. Sie müssen jedoch ein Problem vollständig lösen und alle Szenarien, Endbedingungen, Verarbeitungseingaben usw. lösen.
  3. Entscheiden, welche Datenstruktur (en) am besten zu Ihrer Lösung passt. Mehrere Datenstrukturen und Algorithmen können ein Problem lösen. Die Entscheidung, welche die beste ist, ist entscheidend. Beispielsweise optimieren Sie manchmal den Arbeitsspeicher und manchmal die Gesamtausführungszeit oder beides.

Zweitens bewerten Designfragen Ihre Designfähigkeiten. Alle obigen Punkte gelten auch für Entwurfsprobleme. Darüber hinaus arbeiten Sie daran, das System in kleinere Komponenten aufzuteilen, zu entwerfen, was die einzelnen Komponenten tun und wie die verschiedenen Komponenten miteinander funktionieren usw.

Ich fand folgende Seiten super hilfreich für die Vorbereitung von technischen Interviews:

  1. Coderust
  2. LeetCode
  3. Grokking the System Design Interview

Ist ein Gewehr genug, um Pro-Schütze zu werden?

Ich stelle mir Datenstrukturen gerne als Werkzeuge vor, die uns helfen, Lösungen für Probleme zu finden, anstatt selbst die Lösung zu sein.

Unternehmen suchen keine Kandidaten, die Hunderte von Datenstrukturen aufführen können. Stattdessen wird nach Fachwissen über die Verwendung dieser Tools (Datenstrukturen) gesucht.

Die Antwort auf Ihre Frage lautet eindeutig “Nein, Kenntnisse nur über grundlegende Datenstrukturen reichen nicht aus” . Sie müssen herausfordernde Probleme lösen, bei denen Folgendes zum Einsatz kommt:

  1. Beliebte Datenstrukturen: Listen, Diagramme, Suchbäume, Hash Maps usw
  2. Klassische Algorithmen: Dijkstra’s kürzester Weg, Max-Flow, Fast Fourier Transform, Minimum Spanning Tree usw
  3. Varianten: Eigene Varianten basierend auf bekannten Datenstrukturen und klassischen Algorithmen. Idealerweise möchten Sie sie bequem verwenden.

Das Lösen solcher Probleme hilft Ihnen dabei, das Wichtigste für einen Softwareentwickler zu entwickeln, nämlich wie Sie Ihr Wissen nutzen können, um zu einer Lösung zu gelangen.

Algorithmusdesign ist eine Kunst. Das Beherrschen des Pinsels macht Sie zum Künstler.

Nur die Grundlagen von Datenstrukturen und Algorithmen zu kennen, reicht nicht aus, um Interviews zu knacken. Sie müssen verschiedene Probleme üben, die in Interviews gestellt werden.

Voraussetzungen für das Knacken des Coding-Interviews sind:

  1. Beliebige objektorientierte Sprache.
  2. Datenstrukturen & Algorithmen.
  3. System-Design.

„Datenstrukturen und Algorithmen“ ist das Lieblingsthema von Unternehmen im Interview. Mit zunehmender Erfahrung werden mehr als 4 Jahre System-Design wichtig.

Wenn Sie auf der Suche nach einer Interviewvorbereitung sind. Sie können mit „ Problemlösung in Datenstrukturen und -algorithmen “ beginnen, die in verschiedenen Sprachen wie C, C ++, Java, C #, Python usw. geschrieben wurden. Diese Bücher sind leicht zu befolgen und für Interviewzwecke verfasst. Darüber hinaus haben diese Bücher das letzte Kapitel über System-Design , das auch in Interviews benötigt wird.

Links zu den Büchern über Amazon finden Sie unten:

1. Problemlösung in Datenstrukturen und Algorithmen mit C

2. Problemlösung in Datenstrukturen und Algorithmen mit C ++

3. Problemlösung in Datenstrukturen und Algorithmen mit Java

4. Problemlösung in Datenstrukturen und Algorithmen mit C #

5. Problemlösung in Datenstrukturen und Algorithmen mit Python

6. Datenstrukturen und Algorithmen in Go

Haftungsausschluss: Ich bin Autor aller oben genannten Bücher.

Es hängt wirklich von Ihrem „großen“ Job ab.

Aber für mein “großes” wird es ausreichen.

Auch bei „Cracking Interviews“ geht es nicht nur um algo & ds. Dazu gehören auch technisches Denken, Kreativität und einige Soft Skills. Wen kümmert es, wenn Sie “ein echter Hai im See” sind, wenn Sie kaum mit Freunden kommunizieren.

Ich möchte den anderen (ganz richtigen) Antworten einen kleinen Winkel hinzufügen. Ich wurde einmal von einem Jungen interviewt, der sagte, er habe drei Fragen im Kopf:

  1. Können Sie den Job machen, für den Sie eingestellt werden? (Ich würde diese Frage in “Können Sie sich bei der Arbeit auszeichnen?” Ändern.)
  2. Kann ich mit dir arbeiten
  3. Kann ich mit dir auskommen?

Er hat es voll und ganz verstanden – das sind wirklich die wichtigsten Fragen, die Interviewer bei einem Vorstellungsgespräch mit einem Kandidaten zu beantworten versuchen.

Mit anderen Worten, selbst in einem technischen Interview muss man nicht nur gut im Job aussehen, sondern auch zur Persönlichkeit der Organisation und der Person passen, die Sie interviewt (und je enger Sie mit dieser Person zusammenarbeiten) umso mehr wird die Nähe dieser Passung von Bedeutung sein).

PS Der Vollständigkeit halber sollte ich wahrscheinlich meine eigene Meinung hinzufügen, dass die Fragen 2 und 3 kombiniert werden könnten und die dritte lautet: “Können Sie gut im Team arbeiten?”.

Nein, es ist bei weitem nicht genug – große Unternehmen oder kleine Startups. Die Grunderwartung ist, dass Sie die Grundlagen kennen. Sie werden jedoch nach der Wahrscheinlichkeit bewertet, dass Sie tatsächlich etwas tun können .

Der Codierungsbildschirm ist meistens nur ein mechanischer Filter zum Entfernen von behaupteten “erfahrenen” Entwicklern, die noch nie eine Tastatur berührt haben. Was Sie bemerken werden, sind Dinge wie wichtige Projekte in Github, gepostete Antworten in Stack Overflow, Projekte, die Sie einbringen und im Interview demonstrieren können.

Kurze Antwort: Vielleicht.

Wirklich ist es wichtig, was Sie mit “großer Firma” meinen. Ich arbeite in einem sehr großen Unternehmen, aber unsere Befragungsstandards sind bei weitem nicht so streng wie die von Google, und Google beschäftigt etwa ein Fünftel aller Mitarbeiter.

More Interesting

Müssen Sie genau so programmieren, wie Sie es bei den technischen Vorstellungsgesprächen mit Compilern tun (auch bei den komplexesten Problemen)?

Wie bereiten Sie sich am besten auf Datenstrukturalgorithmen für ein Amazon-Interview vor?

Wie löse ich diese Interviewfrage (c ++ / Java)?

Was beinhalten Programmierinterviews neben Datenstrukturen und Algorithmen?

Wie viel Zeit werden die Bewerber für Programmieraufträge in der Regel für Programmieraufgaben mit nach Hause nehmen?

Ist es möglich, die Fragen im Buch Cracking the Coding Interview (2011 book) über Python umzusetzen?

Wenn alle Programmierer und Entwickler beim Codieren nachschlagen, warum sind Codierungstests dann oft Teil des Interviewprozesses? Wie wichtig ist es, alle Besonderheiten jeder Sprache zu kennen, um den Job zu bekommen?

Wie vermeide ich es, mein Protokoll während des Interviewprozesses zu zeigen?

Ich habe morgen ein technisches Interview in Acuvate Software für die Rolle des Software Engineers. Kann mir jemand helfen?

Ich habe mehr als 15 Bewerbungsgespräche geführt und jedes Mal wurde ich abgelehnt. Wo fehle ich?

Sie erhalten einen Binärbaum, in dem jeder Knoten einen Wert enthält. Entwerfen Sie einen Algorithmus zum Drucken aller Pfade, die sich zu einem bestimmten Wert summieren. Der Pfad muss nicht an der Wurzel oder einem Blatt beginnen oder enden?

Fragen zu Vorstellungsgesprächen: Wie sehen die CS-Vorstellungsgespräche in anderen Ländern als Indien aus?

Was ist der algorithmische Ansatz, um den Pfad in einem zweidimensionalen booleschen Array zu finden, das die meisten Einsen hat?

Wie bereite ich mich auf Parallelitätsfragen vor, die bei Dropbox-Interviews gestellt werden?

Warum berücksichtigen Programmierinterviews nicht die Lernfähigkeit und das Potenzial, großartige Dinge zu tun, sondern einen vordefinierten Satz von Fragen?