So bereiten Sie sich auf ein Vorstellungsgespräch bei Google vor und fallen durch. Zweimal

So bereiten Sie sich auf ein Vorstellungsgespräch bei Google vor und fallen durch. Zweimal

Der Titel des Artikels klingt wie ein epischer Fehlschlag, aber in Wirklichkeit ist nicht alles so einfach. Und im Allgemeinen endete diese Geschichte sehr positiv, wenn auch nicht bei Google. Aber das ist ein Thema für einen anderen Artikel. In demselben Artikel werde ich über drei Dinge sprechen: Wie mein Vorbereitungsprozess verlief, wie die Interviews bei Google abliefen und warum meiner Meinung nach nicht alles so klar ist, wie es scheint.

Wie alles begann

An einem kalten zypriotischen Winterabend kam mir plötzlich der Gedanke, dass meine Kenntnisse der klassischen Informatik alles andere als durchschnittlich waren und dass etwas dagegen getan werden musste. Wenn übrigens jemand noch nicht gelesen hat, warum der Abend zypriotisch und kalt ist, dann können Sie es herausfinden hier. Nach einigem Überlegen wurde beschlossen, zunächst einen Online-Kurs über Algorithmen und Datenstrukturen zu belegen. Von einem meiner ehemaligen Kollegen hörte ich von Robert Sedgewicks Kurs auf Coursera. Der Kurs besteht aus zwei Teilen (Teil 1 и Teil 2). Wenn sich die Links plötzlich ändern, können Sie jederzeit nach dem Namen des Autors googeln. Jeder Teil dauert 6 Wochen. Die Vorlesungen finden zu Beginn der Woche statt, unter der Woche müssen noch Übungen gemacht werden. Der erste Teil des Kurses behandelt grundlegende Datenstrukturen, grundlegende Sortierarten und die Komplexität von Algorithmen. Der zweite Teil ist bereits fortgeschrittener, beginnt mit Diagrammen und endet mit Dingen wie linearer Programmierung und Intraktibilität. Nachdem ich über all das nachgedacht hatte, kam ich zu dem Schluss, dass dies genau das ist, was ich brauche. Ein neugieriger Leser könnte sich übrigens fragen: Was hat Google damit zu tun? Und tatsächlich hatte er bis zu diesem Moment überhaupt nichts damit zu tun. Aber ich brauchte ein Ziel, da 12 Wochen abends ohne Ziel zu lernen schon etwas schwierig ist. Was könnte der Zweck des Erwerbs neuen Wissens sein? Natürlich ihre Anwendung in der Praxis. Im Alltag ist das ziemlich problematisch, aber bei einem Vorstellungsgespräch in einem großen Unternehmen ist es einfach. Ein kurzer Blick auf Google zeigte, dass Google (entschuldigen Sie die Tautologie) eines der größten Unternehmen in Europa (und ich habe speziell auf Europa geschaut) ist, das solche Interviews durchführt. Ihr Büro befindet sich nämlich in Zürich, Schweiz. Also ist es beschlossene Sache – lasst uns lernen und ein Vorstellungsgespräch bei Google führen.

Vorbereitung auf den ersten Ansatz

Die 12 Wochen vergingen schnell und ich habe beide Kurse abgeschlossen. Meine Eindrücke von den Kursen sind mehr als positiv und ich kann sie jedem Interessierten empfehlen. Mir gefielen die Kurse aus folgenden Gründen:

  • Der Dozent spricht ziemlich klares Englisch
  • Das Material ist gut strukturiert
  • Wunderschöne Präsentationen, die das Innere jedes Algorithmus zeigen
  • Kompetente Materialauswahl
  • Interessante Übungen
  • Übungen werden auf der Website automatisch überprüft und anschließend ein Bericht erstellt

Meine Arbeit an Kursen verlief normalerweise so. Ich habe mir in 1-2 Tagen Vorlesungen angehört. Dann machten sie einen kurzen Test, um ihr Wissen über den Stoff zu testen. Den Rest der Woche habe ich die Übung in mehreren Wiederholungen durchgeführt. Nach dem ersten habe ich meine 30-70 % erreicht, die weiteren brachten das Ergebnis auf 97-100 %. Die Übung umfasste normalerweise die Implementierung eines Algorithmus, z. Nahtschnitzerei oder bzip.

Nach Abschluss der Kurse wurde mir klar, dass viel Wissen mit viel Leid verbunden ist. Während ich vorher einfach wusste, dass ich nichts wusste, wurde mir jetzt klar, dass ich es war, der es nicht wusste.

Da es erst Mai war und ich das Vorstellungsgespräch für den Herbst geplant hatte, beschloss ich, meine Ausbildung fortzusetzen. Nach Prüfung der Anforderungen für die Stelle wurde beschlossen, parallel zwei Richtungen einzuschlagen: das Studium der Algorithmen fortzusetzen und einen Grundkurs in maschinellem Lernen zu belegen. Für das erste Ziel entschied ich mich, von Kursen auf ein Buch umzusteigen und wählte Steven Skienas monumentales Werk „Algorithmen. Das Algorithmus-Design-Handbuch. Nicht so monumental wie das von Knut, aber dennoch. Für das zweite Ziel ging ich zurück zu Coursera und meldete mich für den Kurs von Andrew Ng an. Maschinelles lernen.

Weitere 3 Monate vergingen und ich hatte den Kurs und das Buch fertiggestellt.

Beginnen wir mit dem Buch. Die Lektüre erwies sich als recht interessant, wenn auch nicht einfach. Prinzipiell würde ich das Buch weiterempfehlen, aber nicht sofort. Insgesamt bietet das Buch einen tiefergehenden Einblick in das, was ich im Kurs gelernt habe. Außerdem habe ich (aus formaler Sicht) Dinge wie Heuristik und dynamische Programmierung entdeckt. Natürlich hatte ich sie schon einmal benutzt, aber ich wusste nicht, wie sie hießen. Das Buch enthält auch eine Reihe von Geschichten aus dem Leben des Autors (War Story), die den akademischen Charakter der Präsentation etwas verwässern. Die zweite Hälfte des Buches kann übrigens weggelassen werden; sie enthält vielmehr eine Beschreibung bestehender Probleme und Methoden zu deren Lösung. Es ist nützlich, wenn es in der Praxis regelmäßig verwendet wird, sonst gerät es sofort in Vergessenheit.

Ich war mit dem Kurs mehr als zufrieden. Der Autor kennt sich eindeutig aus und spricht auf interessante Weise. Außerdem kann ich mich an einiges davon, nämlich lineare Algebra und die Grundlagen neuronaler Netze, aus der Uni erinnern, sodass ich keine besonderen Schwierigkeiten hatte. Der Aufbau des Kurses ist recht standardisiert. Der Kurs ist in Wochen unterteilt. Jede Woche gibt es Vorlesungen gemischt mit kurzen Tests. Nach den Vorlesungen erhalten Sie eine Aufgabe, die Sie bearbeiten, abgeben und automatisch prüfen müssen. Kurz gesagt, die Liste der im Kurs gelehrten Dinge lautet wie folgt:
- Kostenfunktion
- lineare Regression
- Gradientenabstieg
- Funktionsskalierung
- Normalgleichung
- logistische Regression
— Mehrklassenklassifizierung (eins gegen alle)
- Neuronale Netze
- Backpropagation
- Regulierung
– Bias/Varianz
- Lernkurven
— Fehlermetriken (Präzision, Rückruf, F1)
— Support Vector Machines (Klassifizierung mit großem Rand)
— K-bedeutet
-Hauptkomponentenanalyse
- Anomalieerkennung
— Kollaborative Filterung (Empfehlungssystem)
– stochastische, Mini-Batch-, Batch-Gradientenabstiege
- Online lernen
- Karte verkleinern
- Deckenanalyse
Nach Abschluss des Kurses war ein Verständnis für alle diese Themen vorhanden. Nach 2 Jahren war natürlich fast alles vergessen. Ich empfehle es denjenigen, die mit maschinellem Lernen nicht vertraut sind und sich ein gutes Verständnis der grundlegenden Dinge aneignen möchten, mit denen sie fortfahren können.

Erster Lauf

Es war bereits September und es war Zeit, über ein Interview nachzudenken. Da eine Bewerbung über die Website ziemlich katastrophal ist, begann ich, nach Freunden zu suchen, die bei Google arbeiten. Die Wahl fiel auf Datencompboy, da er der einzige war, den ich direkt kannte (wenn auch nicht persönlich). Er erklärte sich bereit, meinen Lebenslauf weiterzuleiten, und bald darauf erhielt ich einen Brief vom Personalvermittler, in dem er mir anbot, einen Platz in seinem Kalender für das erste Gespräch zu reservieren. Ein paar Tage später erfolgte der Anruf. Wir haben versucht, über Hangouts zu kommunizieren, aber die Qualität war schrecklich, also sind wir auf das Telefon umgestiegen. Zuerst haben wir schnell das Wie, Warum und Warum des Standards besprochen und sind dann zum technischen Screening übergegangen. Es bestand aus einem Dutzend Fragen im Sinne von „Was ist die Schwierigkeit beim Einfügen in eine Hash-Karte“ und „Welche ausgeglichenen Bäume kennen Sie?“. Es ist nicht schwierig, wenn Sie über Grundkenntnisse in diesen Dingen verfügen. Das Screening verlief gut und auf der Grundlage der Ergebnisse wurde beschlossen, das erste Interview in einer Woche zu organisieren.

Das Interview fand ebenfalls über Hangouts statt. Zuerst redeten sie etwa fünf Minuten lang über mich und gingen dann zum Problem über. Das Problem lag bei den Grafiken. Mir wurde schnell klar, was zu tun war, aber ich habe den falschen Algorithmus gewählt. Als ich anfing, Code zu schreiben, wurde mir das klar und ich wechselte zu einer anderen Option, die ich vervollständigte. Der Interviewer stellte mehrere Fragen zur Komplexität des Algorithmus und fragte, ob er schneller erledigt werden könne. Irgendwie wurde ich langweilig und konnte es nicht. Zu diesem Zeitpunkt war die Zeit abgelaufen und wir verabschiedeten uns. Dann, nach etwa 5 Minuten, wurde mir klar, dass ich bei diesem speziellen Problem anstelle des von mir verwendeten Dijkstra-Algorithmus auch die Breitensuche verwenden könnte, und das wäre schneller. Nach einiger Zeit rief der Personalvermittler an und sagte, dass das Vorstellungsgespräch insgesamt gut verlaufen sei und dass ein weiteres Vorstellungsgespräch organisiert werden sollte. Wir einigten uns auf eine weitere Woche.

Dieses Mal kam es noch schlimmer. War der Interviewer beim ersten Mal freundlich und kontaktfreudig, wirkte er dieses Mal etwas düster. Ich konnte das Problem nicht sofort erkennen, obwohl die Ideen, die ich hatte, im Prinzip zu einer Lösung führen könnten. Am Ende, nach mehreren Aufforderungen des Interviewers, fiel mir die Lösung ein. Auch dieses Mal handelte es sich wieder um eine Breitensuche, nur von mehreren Punkten aus. Ich habe die Lösungen geschrieben, sie pünktlich getroffen, aber die Randfälle vergessen. Nach einiger Zeit rief der Personalvermittler an und sagte, dass der Interviewer dieses Mal unzufrieden sei, weil ich seiner Meinung nach zu viele Hinweise brauchte (3 oder 4 Stück) und während des Schreibens ständig den Code änderte. Aufgrund der Ergebnisse zweier Interviews wurde beschlossen, nicht weiter zu gehen, sondern das nächste Interview auf Wunsch um ein Jahr zu verschieben. Deshalb haben wir uns verabschiedet.

Und aus dieser Geschichte habe ich mehrere Schlussfolgerungen gezogen:

  • Die Theorie ist gut, aber man muss sich schnell darin zurechtfinden
  • Theorie ohne Praxis hilft nicht. Wir müssen Probleme lösen und die Codierung zur Automatisierung bringen.
  • Viel hängt vom Interviewer ab. Und man kann nichts dagegen tun.

Vorbereitung für den zweiten Lauf

Nachdem ich über die Situation nachgedacht hatte, beschloss ich, es in einem Jahr noch einmal zu versuchen. Und das Ziel leicht bearbeitet. Wenn früher das Hauptziel darin bestand, zu studieren, und ein Vorstellungsgespräch bei Google wie eine ferne Karotte war, war es jetzt das Ziel, ein Vorstellungsgespräch zu bestehen, und das Lernen war das Mittel.
Daher wurde ein neuer Plan entwickelt, der folgende Punkte beinhaltete:

  • Studieren Sie weiterhin Theorie, indem Sie Bücher und Artikel lesen.
  • Lösen Sie algorithmische Probleme im Umfang von 500-1000 Teilen.
  • Lernen Sie die Theorie weiter, indem Sie sich Videos ansehen.
  • Studieren Sie weiterhin Theorie durch Kurse.
  • Studieren Sie die Erfahrungen anderer Menschen mit Interviews bei Google.

Ich habe den Plan innerhalb eines Jahres abgeschlossen. Als nächstes werde ich beschreiben, was genau ich für jeden der Punkte getan habe.

Bücher und Artikel

Ich erinnere mich nicht einmal an die Anzahl der Artikel, die ich gelesen habe; ich habe sie sowohl auf Russisch als auch auf Englisch gelesen. Wahrscheinlich die nützlichste Seite dieser hier. Hier finden Sie eine Beschreibung einer Vielzahl interessanter Algorithmen mit Codebeispielen.

Ich habe 5 Bücher gelesen: Algorithms, 4. Auflage (Sedgewick, Wayne), Introduction to Algorithms 3. Auflage (Cormen, Leiserson, Rivest, Stein), Cracking the Coding Interview 4. Auflage (Gayle Laakmann), Programming Interviews Exposed 2. Auflage (Mongan, Suojanen , Giguere), Elements of Programming Interviews (Aziz, Lee, Prakash). Sie können in 2 Kategorien unterteilt werden. Die erste umfasst Bücher von Sedgwick und Corman. Das ist eine Theorie. Der Rest ist die Vorbereitung auf das Vorstellungsgespräch. Sedgwick erzählt in dem Buch dasselbe wie in seinen Kursen. Nur schriftlich. Es macht nicht viel Sinn, es sorgfältig zu lesen, wenn Sie den Kurs besucht haben, aber es lohnt sich trotzdem, es zu überfliegen. Wenn Sie den Kurs noch nicht gesehen haben, ist es sinnvoll, ihn zu lesen. Cormen kam mir zu langweilig vor. Ehrlich gesagt fiel es mir schwer, es zu meistern. Ich habe es einfach da rausgeholt Meistertheorieund mehrere selten verwendete Datenstrukturen (Fibonacci-Heap, Van-Emde-Boas-Baum, Radix-Heap).

Es lohnt sich, zur Vorbereitung auf ein Vorstellungsgespräch mindestens ein Buch zu lesen. Sie sind alle ungefähr nach dem gleichen Prinzip aufgebaut. Sie beschreiben den Interviewprozess in großen Technologieunternehmen, geben grundlegende Dinge aus der Informatik, Probleme für diese grundlegenden Dinge, Problemlösungen und Analyse von Lösungen. Von den drei oben genannten würde ich Cracking the Coding Interview wahrscheinlich als Hauptteil empfehlen, die übrigen sind optional.

Algorithmenprobleme

Dies war wahrscheinlich der interessanteste Punkt der Vorbereitung. Sie können sich natürlich hinsetzen und Probleme dumm lösen. Dafür gibt es viele verschiedene Seiten. Ich habe hauptsächlich drei verwendet: Hackerrank, CodeChef и LeetCode. Auf CodeChef werden Probleme nach Schwierigkeitsgrad, nicht jedoch nach Thema unterteilt. Auf Hackerrank sowohl nach Komplexität als auch nach Thema.

Aber wie ich sofort selbst herausgefunden habe, gibt es einen interessanteren Weg. Und das sind Wettbewerbe (Programmier-Challenges oder Programmierwettbewerbe). Alle drei Standorte bieten sie an. Es stimmt, es gibt ein Problem mit LeetCode – eine ungünstige Zeitzone. Deshalb habe ich auf dieser Seite nicht teilgenommen. Hackerrank und CodeChef bieten eine ziemlich große Anzahl verschiedener Wettbewerbe an, die zwischen 1 Stunde und 10 Tagen dauern. Verschiedene Formate haben unterschiedliche Regeln, aber darüber könnten wir noch lange reden. Der Hauptgrund, warum Wettbewerbe gut sind, ist die Einführung eines wettbewerbsorientierten (und wiederum tautologischen) Elements in den Lernprozess.

Insgesamt habe ich an 37 Wettbewerben auf Hackerrank teilgenommen. Davon waren 32 Bewertungen, und 5 wurden entweder gesponsert (ich habe für eines davon sogar 25 US-Dollar erhalten) oder zum Spaß. In der Rangliste war ich 10 Mal unter den besten 4 %, 11 Mal unter den besten 12 % und fünf Mal unter den besten 5 %. Die besten Ergebnisse waren 25/27 in der 1459-Stunden-Laufzeit und 3/22 in der Woche.

Ich bin zu CodeChef gewechselt, als Hackerrank begann, immer seltener Wettbewerbe zu veranstalten. Insgesamt konnte ich an 5 Wettbewerben teilnehmen. Die beste Punktzahl war 426/5019 im zehntägigen Wettbewerb.

Insgesamt habe ich bei Wettbewerben und einfach so etwas mehr als 1000 Aufgaben gelöst, die in den Plan passten. Jetzt fehlt leider die freie Zeit, um die Wettkampfaktivitäten fortzusetzen, ebenso wie es kein Ziel gibt, für das die unfreie Zeit abgeschrieben werden kann. Aber es hat Spaß gemacht. Wer sich dafür interessiert, dem empfehle ich, Gleichgesinnte zu finden. Zusammen oder in der Gruppe ist es viel interessanter. Ich hatte mit einem Freund Spaß daran, also ist es vielleicht gut gelaufen.

Video ansehen

Nachdem ich Skienas Buch gelesen hatte, interessierte ich mich für seine Arbeit. Wie Sedgwick ist er Universitätsprofessor. Videos seiner Kurse sind hierzu online zu finden. Ich habe beschlossen, den Kurs zu überprüfen COMP300E – Programmierherausforderungen – 2009 HKUST. Ich kann nicht sagen, dass es mir sehr gut gefallen hat. Erstens ist die Videoqualität nicht sehr gut. Zweitens habe ich nicht versucht, die im Kurs besprochenen Probleme selbst zu lösen. Das Engagement war also nicht sehr hoch.
Außerdem bin ich beim Lösen von Problemen und beim Versuch, den richtigen Algorithmus zu finden, auf das Video von Tushar Roy gestoßen. Er hat bei Amazon gearbeitet und arbeitet jetzt bei Apple. Wie ich später selbst herausfand, hat er es getan Youtube Kanal, wo er eine Analyse verschiedener Algorithmen veröffentlicht. Zum Zeitpunkt des Schreibens enthält der Kanal 103 Videos. Und ich muss sagen, dass seine Analyse sehr gut gelungen ist. Ich habe versucht, andere Autoren anzuschauen, aber irgendwie hat es nicht funktioniert. Daher kann ich diesen Kanal auf jeden Fall zum Ansehen empfehlen.

Kurse belegen

Ich habe hier nichts Besonderes gemacht. Habe mir ein Video von Googles Android Developer Nanodegree angesehen und einen Kurs von ITMO besucht So gewinnen Sie Programmierwettbewerbe: Secrets of Champions. Nanodegree ist ganz gut, auch wenn ich dadurch natürlich nichts Neues gelernt habe. Der Kurs von ITMO ist theoretisch etwas verzerrt, aber die Probleme waren interessant. Ich würde nicht empfehlen, damit anzufangen, aber im Prinzip war es eine gut investierte Zeit.

Lernen Sie aus den Erfahrungen anderer Menschen

Natürlich haben viele Leute versucht, bei Google einzudringen. Manche haben es verstanden, manche nicht. Einige haben Artikel darüber geschrieben. Von den interessanten Dingen werde ich wahrscheinlich erwähnen Dieses hier и Dieses hier. Im ersten Fall erstellte die Person eine Liste dessen, was sie lernen musste, um Software-Ingenieur zu werden und bei Google einzusteigen. Es landete schließlich bei Amazon, aber das ist nicht mehr so ​​wichtig. Das zweite Handbuch wurde von der Google-Ingenieurin Larisa Agarkova geschrieben (Larrr). Zusätzlich zu diesem Dokument können Sie auch lesen ihr Blog.

Es ist sinnvoll, Bewertungen von Vorstellungsgesprächen auf Glassdoor zu lesen. Sie sind alle mehr oder weniger ähnlich, aber Sie können einige nützliche Informationen erhalten.

Ich werde keine Links zu anderen kleinen Artikeln bereitstellen; Sie können diese leicht auf Google finden.

Zweiter Lauf

Und nun ist ein Jahr vergangen. Es stellte sich heraus, dass es studientechnisch sehr intensiv war. Aber ich bin mit viel tieferen theoretischen Kenntnissen und entwickelten praktischen Fähigkeiten in den neuen Herbst gegangen. Bis zum Ende des Jahres, das mir zur Vorbereitung zur Verfügung stand, waren es noch ein paar Wochen, als plötzlich ein Brief eines Personalvermittlers von Google in der Post landete, in dem er mich fragte, ob ich noch Lust hätte, bei Google zu arbeiten, und das auch tun würde Es macht mir etwas aus, mit ihm zu reden. Natürlich machte es mir nichts aus. Wir vereinbarten, in einer Woche anzurufen. Sie baten mich auch um einen aktualisierten Lebenslauf, dem ich eine kurze Beschreibung dessen hinzufügte, was ich im Laufe des Jahres bei der Arbeit und im Allgemeinen getan hatte.

Nachdem wir ein Leben lang kommuniziert hatten, beschlossen wir, dass es in einer Woche ein Hangout-Interview geben würde, genau wie letztes Jahr. Eine Woche verging, es war Zeit für das Interview, aber der Interviewer erschien nicht. 10 Minuten vergingen, ich wurde schon nervös, als plötzlich jemand in den Chat einbrach. Wie sich wenig später herausstellte, konnte mein Interviewer aus irgendeinem Grund nicht erscheinen und es wurde dringend ein Ersatz für ihn gefunden. Die Person war sowohl hinsichtlich der Einrichtung des Computers als auch hinsichtlich der Durchführung des Interviews etwas unvorbereitet. Aber dann ging alles gut. Ich habe das Problem schnell gelöst, beschrieben, wo Fallstricke möglich sind und wie diese umgangen werden können. Wir haben verschiedene Versionen des Problems und die Komplexität des Algorithmus besprochen. Dann unterhielten wir uns noch 5 Minuten, der Ingenieur erzählte uns seine Eindrücke von der Arbeit in München (in Zürich fand man offenbar keinen dringenden Ersatz), und dann trennten wir uns.

Am selben Tag kontaktierte mich der Personalvermittler und teilte mir mit, dass das Vorstellungsgespräch gut verlaufen sei und sie bereit seien, mich zu einem Vorstellungsgespräch ins Büro einzuladen. Am nächsten Tag riefen wir über Hangouts an und besprachen die Details. Da ich ein Visum beantragen musste, beschlossen wir, in einem Monat ein Vorstellungsgespräch zu vereinbaren.

Während ich die Unterlagen vorbereitete, besprach ich gleichzeitig das bevorstehende Vorstellungsgespräch mit dem Personalvermittler. Ein Standardinterview bei Google besteht aus 4 algorithmischen Interviews und einem Systemdesign-Interview. Aber da ich mich für eine Stelle als Android-Entwickler beworben hatte, wurde mir gesagt, dass ein Teil des Vorstellungsgesprächs Android-spezifisch sein würde. Ich konnte dem Personalvermittler nicht genau sagen, was und welche Einzelheiten genau sein würden. Soweit ich weiß, wurde dies erst vor relativ kurzer Zeit eingeführt und er selbst war sich dessen nicht sehr bewusst. Außerdem habe ich mich für zwei Schulungen angemeldet: wie man ein algorithmisches Vorstellungsgespräch besteht und wie man ein Systemdesign-Interview besteht. Die Sitzungen waren von durchschnittlichem Nutzen. Auch dort konnte mir niemand sagen, was sie von Android-Entwicklern verlangen. Daher lief meine Vorbereitung für diesen Monat auf Folgendes hinaus:

  • Kaufen Sie eine Markierungstafel und schreiben Sie aus dem Gedächtnis zwei bis drei Dutzend der beliebtesten Algorithmen darauf. 2-3 Stück täglich. Insgesamt wurde jedes Stück mehrmals geschrieben.
  • Aktualisieren Sie Ihr Gedächtnis mit verschiedenen Informationen auf Android, die Sie nicht jeden Tag verwenden
  • Schauen Sie sich ein paar Videos über Big Scale und ähnliches an

Wie ich bereits sagte, bereitete ich gleichzeitig die Unterlagen für die Reise vor. Zunächst baten sie mich um Informationen, um ein Einladungsschreiben zu verfassen. Dann habe ich lange versucht herauszufinden, wer auf Zypern Visa für die Schweiz ausstellt, da sich die Schweizer Botschaft nicht darum kümmert. Wie sich herausstellte, ist dies das österreichische Konsulat. Ich habe angerufen und einen Termin vereinbart. Sie verlangten eine Menge Dokumente, aber nichts besonders Interessantes. Foto, Reisepass, Aufenthaltserlaubnis, eine Reihe verschiedener Zertifikate und natürlich ein Einladungsschreiben. Mittlerweile ist der Brief nicht angekommen. Am Ende habe ich mich für einen normalen Ausdruck entschieden und es hat ganz gut funktioniert. Der Brief selbst traf drei Tage später ein, und das zypriotische FedEx konnte meine Adresse nicht finden und ich musste ihn selbst abholen. Gleichzeitig erhielt ich ein Paket von derselben FedEx, das sie mir ebenfalls nicht zustellen konnten, da sie die Adresse nicht fanden und das seit Juni (3 Monate, Karl) dort lag. Da ich nichts davon wusste, ging ich natürlich nicht davon aus, dass sie es hatten. Ich erhielt mein Visum pünktlich, danach buchten sie mir ein Hotel und boten mir Flugoptionen an. Ich habe die Optionen angepasst, um es komfortabler zu machen. Da es keine Direktflüge mehr gab, flog ich schließlich über Athen hin und über Wien zurück.

Nachdem alle Formalitäten mit der Reise erledigt waren, vergingen noch ein paar Tage und ich flog tatsächlich nach Zürich. Bin dort ohne Zwischenfälle angekommen. Vom Flughafen in die Stadt nahm ich den Zug – schnell und bequem. Nachdem ich ein wenig durch die Stadt geschlendert war, fand ich ein Hotel und checkte ein. Da das Hotel ohne Verpflegung ausgebucht war, aß ich nebenan zu Abend und ging ins Bett, da der Flug am Morgen war und ich schon schlafen wollte. Am nächsten Tag frühstückte ich im Hotel (gegen Aufpreis) und ging zum Google-Büro. Google hat mehrere Büros in Zürich. Mein Vorstellungsgespräch fand nicht in der Zentrale statt. Und im Allgemeinen sah das Büro recht gewöhnlich aus, sodass ich keine Gelegenheit hatte, mir alle Vorzüge eines „normalen“ Google-Büros anzusehen. Ich habe mich beim Administrator registriert und mich hingesetzt, um zu warten. Nach einiger Zeit kam der Personalvermittler heraus und erzählte mir den Plan für den Tag. Anschließend brachte er mich in den Raum, in dem die Vorstellungsgespräche stattfinden sollten. Eigentlich waren drei Interviews, ein Mittagessen und zwei weitere Interviews geplant.

Interview Nummer eins

Das erste Interview fand nur auf Android statt. Und es hatte überhaupt nichts mit Algorithmen zu tun. Allerdings eine Überraschung. Nun gut, so kommt es sogar noch häufiger vor. Wir wurden gebeten, eine bestimmte UI-Komponente zu erstellen. Zuerst besprachen wir was und wie. Er bot an, eine Lösung mit RxJava zu entwickeln, beschrieb, was genau er tun würde und warum. Sie sagten, das sei sicherlich gut, aber machen wir es mit dem Android-Framework. Und gleichzeitig schreiben wir den Code an die Tafel. Und nicht nur eine Komponente, sondern die gesamte Aktivität, die diese Komponente verwendet. Darauf war ich nicht vorbereitet. Es ist eine Sache, einen 30-50-Zeilen-Algorithmus an die Tafel zu schreiben, und eine andere, Nudeln Android-Code zu schreiben, selbst mit Abkürzungen und Kommentaren im Sinne von „Nun, das werde ich nicht schreiben, da es schon offensichtlich ist.“ Das Ergebnis war eine Art Vinaigrette für 3 Bretter. Diese. Ich habe das Problem gelöst, aber es sah dumm aus.

Interview Nummer zwei

Dieses Mal ging es im Interview um Algorithmen. Und es gab zwei Interviewer. Einer ist der eigentliche Interviewer und der zweite ist ein junger Padawan (Schatteninterviewer). Es war notwendig, eine Datenstruktur mit bestimmten Eigenschaften zu entwickeln. Zuerst haben wir das Problem wie gewohnt besprochen. Ich habe verschiedene Fragen gestellt, der Interviewer antwortete. Nach einiger Zeit wurden sie gebeten, verschiedene Methoden der erfundenen Struktur an die Tafel zu schreiben. Dieses Mal hatte ich mehr oder weniger Erfolg, wenn auch mit ein paar kleineren Fehlern, die ich auf Anregung des Interviewers korrigierte.

Interview Nummer drei

Diesmal System Design, das sich plötzlich auch als Android herausstellte. Es war notwendig, eine Anwendung mit einer bestimmten Funktionalität zu entwickeln. Wir besprachen die Anforderungen an die Anwendung, den Server und das Kommunikationsprotokoll. Als nächstes begann ich zu beschreiben, welche Komponenten oder Bibliotheken ich beim Erstellen der Anwendung verwenden würde. Und als dann Job Scheduler erwähnt wurde, gab es einige Verwirrung. Der Punkt ist, dass ich es nie in der Praxis verwendet habe, da ich zum Zeitpunkt der Veröffentlichung gerade auf unterstützende Anwendungen umgestiegen war, für die es keine Aufgaben für seine Verwendung gab. Das Gleiche geschah bei der Entwicklung nachfolgender Versionen. Das heißt, theoretisch weiß ich, was das für ein Ding ist, wann und wie es verwendet wird, aber ich habe keine Erfahrung damit. Und dem Interviewer schien es nicht besonders zu gefallen. Dann baten sie mich, Code zu schreiben. Ja, wenn Sie eine Anwendung entwickeln, müssen Sie sofort Code schreiben. Wieder Android-Code auf der Tafel. Es wurde wieder gruselig.

Mittagessen

Eine andere Person sollte kommen, aber er kam nicht. Und Google macht Fehler. Daraufhin ging ich mit der vorherigen Interviewerin und ihrer Kollegin zum Mittagessen und wenig später kam die nächste Interviewerin hinzu. Das Mittagessen war recht anständig. Da dies nicht das Hauptbüro in Zürich ist, sah der Speisesaal recht gewöhnlich aus, wenn auch sehr schön.

Interview Nummer vier

Endlich Algorithmen in ihrer reinsten Form. Ich habe das erste Problem ziemlich schnell und sofort effektiv gelöst, obwohl ich einen Randfall übersehen habe, aber auf die Aufforderung des Interviewers hin (er gab genau diesen Randfall an) habe ich das Problem gefunden und behoben. Natürlich musste ich den Code an die Tafel schreiben. Dann wurde eine ähnliche Aufgabe gestellt, aber schwieriger. Dafür habe ich ein paar nicht optimale Lösungen gefunden und fast die optimale Lösung gefunden, 5-10 Minuten reichten nicht aus, um den Gedanken zu Ende zu bringen. Nun, ich hatte keine Zeit, den Code dafür zu schreiben.

Interview Nummer fünf

Und wieder ein Android-Interview. Ich frage mich, warum ich das ganze Jahr über Algorithmen studiert habe?
Zunächst gab es ein paar einfache Fragen. Dann schrieb der Interviewer Code an die Tafel und bat darum, darin Probleme zu finden. Gefunden, erklärt, behoben. Besprochen. Und dann begannen einige unerwartete Fragen im Sinne von „Was macht Methode Y in Klasse X“, „Was steckt in Methode Y“ und „Was macht Klasse Z?“. Natürlich habe ich etwas geantwortet, aber dann habe ich gesagt, dass mir das bei meiner Arbeit in letzter Zeit nicht begegnet ist und ich mich natürlich nicht mehr im Detail erinnern kann, wer was und wie macht. Danach fragte der Interviewer, was ich jetzt mache. Und die Fragen gingen zu diesem Thema. Ich habe hier schon viel besser geantwortet.

Nach dem Ende des letzten Interviews nahmen sie meinen Pass entgegen, wünschten mir viel Glück und schickten mich weiter. Ich schlenderte ein wenig durch die Stadt, aß zu Abend und ging zum Hotel, wo ich zu Bett ging, da der Flug wieder früh am Morgen war. Am nächsten Tag kam ich wohlbehalten in Zypern an. Auf Wunsch des Personalvermittlers schrieb ich ein Feedback zum Vorstellungsgespräch und füllte in einem speziellen Service ein Formular aus, um das ausgegebene Geld zurückzuerstatten. Von allen Ausgaben zahlt Google direkt nur die Tickets. Hotel, Verpflegung und Anreise trägt der Kandidat. Anschließend füllen wir das Formular aus, fügen die Quittungen bei und senden es an eine spezielle Geschäftsstelle. Sie verarbeiten dies und überweisen das Geld relativ schnell auf das Konto.

Die Verarbeitung der Interviewergebnisse dauerte anderthalb Wochen. Danach wurde mir mitgeteilt, dass ich „etwas unter der Messlatte“ liege. Das heißt, ich bin etwas zu kurz gekommen. Genauer gesagt verliefen zwei Interviews gut, zwei etwas nicht so gut und das Systemdesign nicht sehr gut. Wenn jetzt mindestens 2 gut gelaufen wären, hätten wir mithalten können, sonst gibt es keine Chance. Sie boten an, in einem weiteren Jahr wiederzukommen.

Zuerst war ich natürlich verärgert, da viel Aufwand in die Vorbereitung gesteckt wurde und ich zum Zeitpunkt des Interviews bereits darüber nachgedacht hatte, Zypern zu verlassen. Der Beitritt zu Google und der Umzug in die Schweiz schienen eine großartige Option zu sein.

Abschluss

Und hier kommen wir zum letzten Teil des Artikels. Ja, ich bin beim Google-Interview zweimal durchgefallen. Es ist traurig. Es wäre wahrscheinlich interessant, dort zu arbeiten. Aber man kann die Sache auch von der anderen Seite betrachten.

  • In anderthalb Jahren habe ich eine Menge Dinge im Zusammenhang mit der Softwareentwicklung gelernt.
  • Die Teilnahme an Programmierwettbewerben hat mir viel Spaß gemacht.
  • Ich war für ein paar Tage in Zürich. Wann werde ich wieder dorthin gehen?
  • Ich hatte ein interessantes Interviewerlebnis bei einem der größten IT-Unternehmen der Welt.

Somit kann alles, was in diesen anderthalb Jahren passiert ist, einfach als Training oder Training betrachtet werden. Und die Ergebnisse dieser Schulung machten sich bemerkbar. Meine Idee, Zypern zu verlassen, reifte (aufgrund einiger familiärer Umstände), ich bestand erfolgreich mehrere Vorstellungsgespräche bei einem anderen bekannten Unternehmen und zog nach 8 Monaten um. Aber das ist eine ganz andere Geschichte. Dennoch denke ich, dass ich Google dennoch danken sollte, sowohl für die anderthalb Jahre, in denen ich an mir selbst gearbeitet habe, als auch für zwei interessante Tage in Zürich.

Was kann ich abschließend sagen? Wenn Sie in der IT-Branche arbeiten, bereiten Sie sich auf Vorstellungsgespräche bei Google (Amazon, Microsoft, Apple usw.) vor. Vielleicht wirst du eines Tages dorthin gehen, um dorthin zu gelangen. Auch wenn Sie es nicht wollen, glauben Sie mir, eine solche Vorbereitung wird Sie nicht schlechter machen. Sobald Sie erkennen, dass Sie (wenn auch nur mit Glück) ein Vorstellungsgespräch bei einem dieser Unternehmen bekommen können, stehen Ihnen viel mehr Wege offen als vor Beginn Ihrer Vorbereitung. Und alles, was Sie auf dem Weg dorthin brauchen, ist Zielstrebigkeit, Ausdauer und Zeit. Ich wünsche Ihnen Erfolg :)

Source: habr.com

Kommentar hinzufügen