Nun, ich habe die Bücher angeschlagen, wo immer ich kann. Ich habe ein Interview, das zuerst per Telefon für eine Position als Software-Ingenieur ansteht. Ich habe alle Blog-Beiträge gelesen, ich habe alle Berichte über Interviews gelesen (einige davon sind ziemlich alt), und Google selbst hat sogar eine Leseliste mit Büchern vorgeschlagen, von denen hier keiner überrascht. Nach einiger Zeit der Vorbereitung kann ich das Gefühl nicht loswerden, dass es einen so großen Untergrund gibt, und ich bin mir nie sicher, ob ich mit Tiefe oder Breite vorgehen soll. Ich habe einen ganzen Bereich von compsci neu gelernt, nur um die meisten Details zu vergessen, wenn ich zu einem anderen übergehe.
Ich weiß also nicht, ob es eine gute Antwort auf diese Frage gibt, aber ich suche praktische Ratschläge, wie ich die verbleibenden Wochen vor dem Interview angehen kann. Ein Teil meines Gehirns ist müde vom Pauken und natürlich muss der Rest für einige schwierige Probleme an meinem derzeitigen Arbeitsplatz verwendet werden.
quelle
Antworten:
Dinge, die Sie wissen sollten
Google möchte Sie einstellen!
Das Herzblut eines Softwareunternehmens sind seine Mitarbeiter, und Google ist nicht anders. Es geht darum, die Besten und Klügsten einzustellen, und die Leute, die die Interviews führen, möchten, dass Sie genauso erfolgreich sind wie Sie.
Google bemüht sich, Sie so genau wie möglich zu bewerten. Es ist ihre Aufgabe.
Google ist ein datengetriebenes Unternehmen. Einstellungsentscheidungen werden nicht von Manager Fiat getroffen. Stattdessen macht sich jeder Interviewer während des Interviews umfangreiche Notizen, die zu einem Paket zusammengefasst werden. Dieses Paket wird dann von einem separaten Ausschuss geprüft , der letztendlich die Entscheidung trifft. Also, wenn Sie nicht mit einem Ihrer Interviewer „geliert“ haben, machen Sie sich keine Sorgen! Was zählt, ist, wie gut Sie im Interview abschneiden.
Fähigkeiten, die Sie haben sollten
Stellen Sie sicher, dass Sie vor dem Vorstellungsgespräch die folgenden Fähigkeiten / Techniken auffrischen. Auch wenn Sie nicht direkt eine Frage zu diesen Themen erhalten, können Sie sich durch eine Überprüfung sicher ein Bild von der richtigen Denkweise machen.
Datenstrukturen
Was ist der Unterschied zwischen einem Array und einer verknüpften Liste? Ein Baum und eine Grafik? Wann würden Sie eins übereinander verwenden? Wie würde sich das auf Geschwindigkeits- / Speicher-Kompromisse auswirken?
Eine Interviewfrage endet nicht mit einer funktionierenden Lösung. Erklären Sie die Laufzeit Ihres Ansatzes und welche Kompromisse Sie eingehen können. Zum Beispiel: "Wenn ich alles zwischengespeichert hätte, würde es X GB RAM benötigen, würde aber eine schnellere Leistung erbringen, weil ...". Oder: "Wenn ich den Binärbaum sortiert halten würde, während ich die Operationen durchführe, wäre X langsamer, Y wäre schneller usw."
Algorithmen
Grundlegende Algorithmen zum Durchlaufen von Graphen, Algorithmen zum Durchlaufen von Bäumen und zwei gute Ansätze zum Sortieren von Zahlen.
Üben Sie unbedingt, ein nicht triviales Problem mithilfe der dynamischen Programmierung zu lösen. Das ist Ihr Ass, wenn es um schwierige Interviewfragen geht!
Hash-Tabellen
Das ist riesig. Wissen Sie alles, was Sie über Hash-Tabellen wissen müssen, von der Möglichkeit, eine selbst zu implementieren, über Hash-Funktionen und warum die Anzahl der Buckets eine Primzahl sein sollte. Die mit Hash-Tabellen verbundenen Konzepte sind für nahezu jeden Bereich der Informatik relevant.
Ich rede über dich
Die ersten Minuten des Plauderns mit dem Interviewer sind eine wichtige Zeit, um jede Art von Erfahrung zu erklären, die Sie von anderen unterscheidet. Relevante Projekte, bedeutende technische Leistungen und dergleichen. Denken Sie daran, dass die Person, die das Interview leitet, Dutzende, wenn nicht Hunderte kluger Leute wie Sie interviewt hat. Was können Sie also sagen, das sie überraschen würde?
Zum Beispiel habe ich in einem Interview mit dem Interviewer über ein Programm gesprochen, das ich geschrieben habe, um Go in College zu spielen. Es ist sehr schwierig, eine KI für das Go-Spiel zu schreiben, und ich habe einen schrecklichen Go-Bot, der das beweist! Das Fazit ist, dass Sie selbst sind und nicht irgendeine kluge Person, die programmieren kann.
Stress dich nicht zu sehr aus, es ist nur ein Interview wie jedes andere. Seien Sie versichert, dass Ihnen niemand dumme Fragen zu Schachtabdeckungen oder zum Berg stellen wird. Fuji.
quelle
Entspannen Sie Sich
Wenn dein Interview so ist wie meins, ist der Interviewer nicht da, um dich zur Unterwerfung zu bringen, er ist da, um zu sehen, wie du denkst .
EDIT: Dies war nur das erste Telefoninterview, ich weiß nichts weiter als das ... und wenn ja, könnte ich es dir wahrscheinlich sowieso nicht sagen!
quelle
Den folgenden Artikel von http://get-that-job-at-google.blogspot.in/ ausgeliehen
Coding Knowledge C / C ++ und Java sind die bevorzugten Programmiersprachen für Google Interviewer. Sie müssen mindestens einen von ihnen wirklich gut kennen. Es wird erwartet, dass Sie Code in die Telefon-Bildschirm-Interviews und in die Vor-Ort-Interviews schreiben.
Empfohlene Bücher für CS-Interviews : Einführung in Algorithmen - Von Cormen
Programmierung Interviews ausgesetzt
Cracking the Coding Interviews
Algorithmen für Interviews
Empfohlene Websites für die Codierungspraxis : InterviewStreet, Topcoder
Big-O Dies sollte der Ausgangspunkt für die Vorbereitung eines algorithmischen Interviews sein. Sie müssen sich nicht mit grundlegenden Komplexitätsanalysen herumschlagen, da dies garantiert, dass Sie nicht eingestellt werden. Sie sollten mit den Bezeichnungen O, Θ und Ω vertraut sein und sie verstehen. Ich empfehle, den Abschnitt zur Komplexitätsanalyse aus dem Buch Datenstrukturen und Algorithmen zu lesen.
Sortieren Sie sollten in der Lage sein, mit Leichtigkeit Algorithmen O (n * lgn) wie QuickSort und MergeSort zu schreiben. Vergleichen und verstehen Sie die besten, schlechtesten und durchschnittlichen Komplexitäten. Ich fand diese Tabelle im Wiki sehr praktisch; Es listet wichtige Eigenschaften aller Sortieralgorithmen auf. Vernachlässigen Sie nicht die grundlegenden O (n ^ 2) -Algorithmen wie Bubble-Sortierung oder Insertion-Sortierung, da sich andere Algorithmen gegenüber diesen verbessern. In Interviews geht es mehr um die Verbesserung einer Grundidee. Sortieralgorithmen helfen dabei.
Hash-Tabellen Wenn Sie Zweifel haben, denken Sie an Hash-Tabellen. Sie sind bei den meisten Problemen hilfreich und helfen uns häufig, die zeitliche Komplexität einiger Probleme durch Zwischenspeichern von Ergebnissen zu verbessern.
Bäume Führen Sie grundlegende Baumkonstruktions-, Traversal- und Manipulationsalgorithmen durch. Sie sollten in der Lage sein, Algorithmen basierend auf binären Suchbäumen zu implementieren. Sie sollten mit ausgeglichenen Bäumen vertraut sein, obwohl nicht erwartet wird, dass Sie Code für sie im Interview schreiben: AVL-Bäume, rot-schwarze Bäume, Trie-Bäume, N-Bäume usw. Grundlegende Kenntnisse über Inorder-, Postorder- und Preorder-Traversals sind erforderlich, da Wir können viele Baumprobleme lösen, indem wir eine dieser Traversen einfach modifizieren.
Grafiken Grafiken sind ein sehr wichtiges Konzept in der Informatik. Üben Sie die drei grundlegenden Darstellungen von Diagrammen (Objekte und Zeiger, Matrix und Adjazenzliste) und machen Sie sich mit deren Vor- und Nachteilen vertraut. Da während des Interviews nicht viel Zeit bleibt, sollten Sie nicht mit etwas sehr Komplexem rechnen. Grundlegende Graph-Traversal-Algorithmen (DFS und BFS) sind jedoch ein Muss. Sie sollten sie in allen grundlegenden Darstellungen implementieren. Sie sollten in der Lage sein, die Dijkstra- oder Floyd-Warshall-Algorithmen sowie die Minimum-Spanning-Tree-Algorithmen (Kruskal und Prim) zu implementieren. Informieren Sie sich über die topologische Sortierung, da sie bei vielen Bestellproblemen überraschend hilfreich ist.
Dynamische Programmierung Dies ist wahrscheinlich das wichtigste Thema, da die Implementierungen klein sind. Sie sollten in der Lage sein, 2-3 dynamische Algorithmen innerhalb von 35-40 Minuten zu implementieren. Wenn Sie die Ressourcen in diesem Blog oder im Web überprüfen, sollten Sie mindestens eine dynamische Programmierfrage pro Interview erwarten.
Betriebssysteme Erfahren Sie mehr über Prozesse, Threads und Parallelitätsprobleme. Kennen Sie Mutexe, Semaphoren, Monitore und deren Funktionsweise. Verstehe, was Deadlock und Livelock sind und wie man sie vermeidet. Erfahren Sie mehr über Kontextwechsel, Zeitplanung usw.
Mathematik Sie sollten sich mit Zählen, Kombinatorik und Wahrscheinlichkeit vertraut machen.
Googles Veröffentlichungen Lesen Sie die unten aufgeführten wegweisenden Veröffentlichungen von Google, wenn Sie Zeit haben. Google-Dateisystem
Google Bigtable
Google MapReduce
quelle
Wenn Sie die letzten paar Monate im Careercup verbracht haben, können Sie es sich leisten, sich zu entspannen. Was in diesem Moment im Interview passiert, kann nicht geplant werden, sondern sollte entspannter sein und die Energie haben, die Runden zu überstehen.
quelle