Bagaimana mempersiapkan wawancara di Google dan gagal. Dua kali

Bagaimana mempersiapkan wawancara di Google dan gagal. Dua kali

Judul artikelnya terdengar seperti kegagalan besar, tetapi kenyataannya tidak sesederhana itu. Dan secara umum, cerita ini berakhir dengan sangat positif, meski tidak di Google. Tapi ini adalah topik untuk artikel lain. Dalam artikel yang sama ini, saya akan membahas tiga hal: bagaimana proses persiapan saya, bagaimana wawancara di Google berlangsung, dan mengapa, menurut saya, semuanya tidak sejelas kelihatannya.

Bagaimana semuanya dimulai

Pada suatu malam musim dingin yang dingin di Siprus, tiba-tiba terlintas dalam benak saya bahwa pengetahuan saya tentang Ilmu Komputer klasik sangat jauh dari rata-rata, dan sesuatu perlu dilakukan untuk mengatasinya. Ngomong-ngomong, jika seseorang belum membaca mengapa malam itu Siprus dan dingin, Anda bisa mengetahuinya di sini. Setelah beberapa pemikiran, diputuskan untuk memulai dengan mengikuti kursus online tentang algoritma dan struktur data. Dari salah satu mantan kolega saya, saya mendengar tentang kursus Robert Sedgewick tentang Coursera. Kursus ini terdiri dari dua bagian (Bagian 1 и Bagian 2). Jika tiba-tiba tautannya berubah, Anda selalu dapat mencari nama penulisnya di Google. Setiap bagian berlangsung selama 6 minggu. Perkuliahan diberikan pada awal minggu, dan selama seminggu tetap perlu melakukan latihan. Bagian pertama kursus ini mencakup struktur data dasar, tipe dasar pengurutan, dan kompleksitas algoritma. Bagian kedua sudah lebih maju, dimulai dengan grafik dan diakhiri dengan hal-hal seperti Pemrograman Linier dan Intractability. Setelah memikirkan semua hal di atas, saya sampai pada kesimpulan bahwa inilah yang saya butuhkan. Omong-omong, pembaca yang penasaran mungkin bertanya, apa hubungannya Google dengan itu? Dan benar saja, sampai saat ini dia sama sekali tidak ada hubungannya sama sekali. Tapi saya butuh tujuan, karena belajar selama 12 minggu di malam hari tanpa tujuan agak sulit. Apa tujuan memperoleh pengetahuan baru? Tentu saja, penerapannya dalam praktik. Dalam kehidupan sehari-hari hal ini cukup bermasalah, namun saat wawancara di perusahaan besar mudah saja. Google sekilas menunjukkan bahwa Google (maafkan tautologinya) adalah salah satu perusahaan terbesar di Eropa (dan saya mencari secara khusus di Eropa) yang melakukan wawancara semacam itu. Yakni, kantor mereka berlokasi di Zurich, Swiss. Jadi sudah diputuskan - mari belajar dan wawancara di Google.

Mempersiapkan pendekatan pertama

12 minggu berlalu dengan cepat dan saya menyelesaikan kedua kursus tersebut. Kesan saya terhadap kursus ini lebih dari sekadar positif, dan saya dapat merekomendasikannya kepada siapa pun yang berminat. Saya menyukai kursus ini karena alasan berikut:

  • Dosen berbicara bahasa Inggris dengan cukup jelas
  • Materinya terstruktur dengan baik
  • Presentasi cantik yang menunjukkan bagian dalam setiap algoritma
  • Pemilihan bahan yang kompeten
  • Latihan yang menarik
  • Latihan secara otomatis diperiksa di situs, setelah itu laporan dibuat

Pekerjaan saya di kursus biasanya berjalan seperti ini. Saya mendengarkan ceramah dalam 1-2 hari. Kemudian mereka melakukan tes cepat terhadap pengetahuan mereka terhadap materi tersebut. Sisa minggu itu saya melakukan latihan dalam beberapa iterasi. Setelah yang pertama saya mendapat 30-70%, yang berikutnya hasilnya menjadi 97-100%. Latihan ini biasanya melibatkan penerapan beberapa algoritma, misalnya. Ukiran jahitan или bzip.

Setelah menyelesaikan kursus, saya menyadari bahwa banyak ilmu datang dengan banyak kesedihan. Kalau dulu aku hanya tahu bahwa aku tidak tahu apa-apa, sekarang aku mulai menyadari bahwa akulah yang tidak tahu.

Karena ini baru bulan Mei, dan saya menjadwalkan wawancara pada musim gugur, saya memutuskan untuk melanjutkan pendidikan. Setelah meninjau persyaratan lowongan, diputuskan untuk mengambil dua arah secara paralel: terus mempelajari algoritma dan mengambil kursus dasar dalam pembelajaran mesin. Untuk tujuan pertama, saya memutuskan untuk beralih dari kursus ke buku dan memilih karya monumental Steven Skiena “Algorithms. Manual Desain Algoritma. Tidak monumental seperti milik Knut, tapi tetap saja. Untuk tujuan kedua, saya kembali ke Coursera dan mendaftar kursus Andrew Ng. Pembelajaran mesin.

3 bulan lagi berlalu dan saya menyelesaikan kursus dan buku.

Mari kita mulai dengan bukunya. Bacaannya ternyata cukup menarik meski tidak mudah. Pada prinsipnya, saya akan merekomendasikan buku tersebut, tetapi tidak langsung. Secara keseluruhan, buku ini memberikan pandangan yang lebih mendalam tentang apa yang saya pelajari dalam kursus tersebut. Ditambah lagi, saya menemukan (dari sudut pandang formal) hal-hal seperti heuristik dan pemrograman dinamis. Tentu saja, saya pernah menggunakannya sebelumnya, tetapi saya tidak tahu apa namanya. Buku ini juga memuat sejumlah kisah hidup penulisnya (Kisah Perang), yang agak melemahkan sifat akademis dari penyajiannya. Ngomong-ngomong, paruh kedua buku ini bisa dihilangkan, melainkan berisi uraian tentang masalah-masalah yang ada dan metode penyelesaiannya. Berguna jika sering digunakan dalam praktek, jika tidak maka akan langsung terlupakan.

Saya sangat senang dengan kursus ini. Penulis dengan jelas mengetahui materinya dan berbicara dengan cara yang menarik. Ditambah lagi cukup banyak yaitu aljabar linier dan dasar-dasar jaringan syaraf tiruan yang saya ingat semasa kuliah, jadi saya tidak mengalami kesulitan khusus. Struktur kursusnya cukup standar. Kursus ini dibagi menjadi beberapa minggu. Setiap minggunya ada perkuliahan yang dicampur dengan ulangan singkat. Selesai perkuliahan, Anda diberikan tugas yang perlu Anda kerjakan, serahkan, dan otomatis diperiksa. Secara singkat, daftar hal-hal yang diajarkan dalam kursus ini adalah sebagai berikut:
- fungsi biaya
- regresi linier
- penurunan gradien
- penskalaan fitur
- persamaan normal
- regresi logistik
— klasifikasi multikelas (satu vs semua)
— jaringan saraf
- propagasi mundur
- regularisasi
— bias/varians
— kurva belajar
— metrik kesalahan (presisi, perolehan, F1)
— Mesin Vektor Dukungan (klasifikasi margin besar)
— K-berarti
—Analisis Komponen Utama
- deteksi anomali
— pemfilteran kolaboratif (sistem pemberi rekomendasi)
— penurunan gradien stokastik, mini-batch, batch
- pembelajaran online
- pengurangan peta
- analisis plafon
Setelah menyelesaikan kursus, pemahaman tentang semua topik ini muncul. Setelah 2 tahun, hampir semuanya terlupakan secara alami. Saya merekomendasikannya kepada mereka yang belum terbiasa dengan pembelajaran mesin dan ingin memahami hal-hal dasar dengan baik untuk melanjutkan.

Lari pertama

Saat itu sudah bulan September dan sudah waktunya memikirkan wawancara. Karena melamar melalui situs ini cukup membawa malapetaka, saya mulai mencari teman yang bekerja di Google. Pilihannya jatuh datacomboy, karena hanya dialah satu-satunya yang saya kenal secara langsung (walaupun tidak secara pribadi). Dia setuju untuk meneruskan resume saya, dan segera saya menerima surat dari perekrut yang menawarkan untuk memesan tempat di kalendernya untuk percakapan pertama.Beberapa hari kemudian panggilan itu dilakukan. Kami mencoba berkomunikasi melalui Hangouts, namun kualitasnya buruk, jadi kami beralih ke telepon. Pertama, kami segera membahas standar bagaimana, mengapa, dan mengapa, lalu beralih ke penyaringan teknis. Ini terdiri dari selusin pertanyaan dengan semangat “apa kesulitan memasukkan ke dalam peta hash”, “pohon seimbang apa yang Anda ketahui.” Tidak sulit jika Anda memiliki pengetahuan dasar tentang hal-hal tersebut. Pemutaran film berjalan dengan baik dan berdasarkan hasilnya, mereka memutuskan untuk mengadakan wawancara pertama dalam seminggu.

Wawancara juga dilakukan melalui Hangouts. Pertama mereka membicarakan saya sekitar 5 menit, lalu beralih ke masalahnya. Masalahnya ada pada grafik. Saya segera menyadari apa yang perlu dilakukan, tetapi saya memilih algoritma yang salah. Ketika saya mulai menulis kode, saya menyadari hal ini dan beralih ke opsi lain, yang saya selesaikan. Pewawancara mengajukan beberapa pertanyaan tentang kompleksitas algoritma dan menanyakan apakah hal itu dapat dilakukan lebih cepat. Saya entah bagaimana menjadi membosankan dan tidak bisa melakukannya. Pada titik ini, waktu telah habis dan kami mengucapkan selamat tinggal. Kemudian, setelah sekitar 10 menit, saya sadar bahwa alih-alih menggunakan algoritma Dijkstra yang saya gunakan, dalam masalah khusus ini saya bisa menggunakan pencarian luas-pertama, dan itu akan lebih cepat. Setelah beberapa waktu, perekrut menelepon dan mengatakan bahwa wawancara secara keseluruhan berjalan dengan baik dan wawancara berikutnya harus diselenggarakan. Kami sepakat untuk satu minggu lagi.

Kali ini segalanya menjadi lebih buruk. Kalau dulu pewawancara ramah dan mudah bergaul, kali ini agak murung. Saya tidak dapat langsung memecahkan masalahnya, meskipun ide-ide yang saya kemukakan, pada prinsipnya, dapat memberikan solusi. Pada akhirnya, setelah beberapa kali petunjuk dari pewawancara, solusinya datang kepada saya. Kali ini ternyata pencarian luas lagi, hanya dari beberapa titik. Saya menulis solusinya, menemuinya tepat waktu, tetapi lupa tentang kasus-kasus edge. Setelah beberapa waktu, perekrut menelepon dan mengatakan bahwa kali ini pewawancara tidak senang, karena menurutnya saya membutuhkan terlalu banyak petunjuk (3 atau 4 buah) dan saya terus-menerus mengubah kode saat menulis. Berdasarkan hasil dua kali wawancara, diputuskan untuk tidak melanjutkan, melainkan menunda wawancara berikutnya selama satu tahun, jika saya menginginkannya. Itu sebabnya kami mengucapkan selamat tinggal.

Dan dari cerita ini saya mengambil beberapa kesimpulan:

  • Teorinya bagus, tetapi Anda harus cepat menavigasinya
  • Teori tanpa praktek tidak akan membantu. Kita perlu memecahkan masalah dan menjadikan pengkodean menjadi otomatis.
  • Banyak hal tergantung pada pewawancara. Dan tidak ada yang bisa dilakukan mengenai hal itu.

Mempersiapkan putaran kedua

Setelah memikirkan situasinya, saya memutuskan untuk mencoba lagi dalam setahun. Dan sedikit mengedit tujuannya. Jika dulu tujuan utamanya adalah belajar, dan wawancara di Google ibarat wortel, kini lolos wawancara adalah tujuannya, dan belajar adalah sarananya.
Jadi, sebuah rencana baru dikembangkan, yang mencakup poin-poin berikut:

  • Terus pelajari teori dengan membaca buku dan artikel.
  • Memecahkan masalah algoritmik dalam jumlah 500-1000 buah.
  • Lanjutkan mempelajari teorinya dengan menonton video.
  • Terus belajar teori melalui kursus.
  • Pelajari pengalaman orang lain saat wawancara di Google.

Saya menyelesaikan rencana itu dalam waktu satu tahun. Selanjutnya saya akan menjelaskan apa sebenarnya yang saya lakukan untuk setiap poin.

Buku dan artikel

Saya bahkan tidak ingat berapa artikel yang saya baca, saya membacanya dalam bahasa Rusia dan Inggris. Mungkin situs yang paling berguna yang ini. Di sini Anda dapat menemukan deskripsi sejumlah besar algoritma menarik dengan contoh kode.

Saya membaca 5 buku: Algorithms, edisi ke-4 (Sedgewick, Wayne), Pengantar Algoritma Edisi ke-3 (Cormen, Leiserson, Rivest, Stein), Cracking the Coding Interview edisi ke-4 (Gayle Laakmann), Programming Interviews Expose edisi ke-2 (Mongan, Suojanen , Giguere), Elemen Wawancara Pemrograman (Aziz, Lee, Prakash). Mereka dapat dibagi menjadi 2 kategori. Yang pertama mencakup buku-buku karya Sedgwick dan Corman. Ini adalah sebuah teori. Selebihnya adalah persiapan wawancara. Sedgwick menceritakan hal yang sama di bukunya seperti di kursusnya. Hanya secara tertulis. Tidak ada gunanya membacanya dengan cermat jika Anda sudah mengikuti kursusnya, tetapi tetap ada baiknya untuk membaca sepintas lalu. Jika Anda belum menonton kursusnya, masuk akal untuk membacanya. Cormen tampak terlalu membosankan bagiku. Sejujurnya, saya kesulitan menguasainya. Aku baru saja mengeluarkannya dari sana teori utama, dan beberapa struktur data yang jarang digunakan (Fibonacci heap, van Emde Boas tree, radix heap).

Ada baiknya membaca setidaknya satu buku untuk mempersiapkan wawancara. Semuanya dibangun dengan prinsip yang kurang lebih sama. Mereka mendeskripsikan proses wawancara di perusahaan teknologi besar, memberikan hal-hal dasar dari Ilmu Komputer, permasalahan untuk hal-hal dasar tersebut, solusi masalah dan analisis solusi. Dari ketiga di atas, saya mungkin akan merekomendasikan Cracking the Coding Interview sebagai yang utama, dan sisanya opsional.

Masalah algoritma

Ini mungkin merupakan hal persiapan yang paling menarik. Anda tentu saja bisa duduk dan memecahkan masalah dengan bodohnya. Ada banyak situs berbeda untuk ini. Saya terutama menggunakan tiga: Hackerrank, CodeChef и Kode Leet. Di CodeChef, soal dibagi berdasarkan tingkat kesulitan, tetapi tidak berdasarkan topik. Di Hackerrank berdasarkan kompleksitas dan topik.

Namun setelah saya langsung mengetahuinya sendiri, ada cara yang lebih menarik. Dan ini adalah kompetisi (tantangan pemrograman atau kontes pemrograman). Ketiga situs menyediakannya. Benar, ada masalah dengan LeetCode - zona waktu yang tidak nyaman. Itu sebabnya saya tidak berpartisipasi di situs ini. Hackerrank dan CodeChef menyediakan kompetisi berbeda dalam jumlah yang cukup besar, berlangsung dari 1 jam hingga 10 hari. Format yang berbeda memiliki aturan yang berbeda, namun kita dapat membicarakannya untuk waktu yang lama. Poin utama mengapa kompetisi itu bagus adalah pengenalan elemen kompetitif (dan sekali lagi tautologi) ke dalam proses pembelajaran.

Secara total, saya mengikuti 37 kompetisi di Hackerrank. Dari jumlah tersebut, 32 merupakan peringkat, dan 5 disponsori (saya bahkan menerima $25 di salah satunya) atau untuk bersenang-senang. Dalam pemeringkatan saya berada di 10% teratas sebanyak 4 kali, di 11% teratas sebanyak 12 kali, dan di 5% teratas sebanyak 25 kali. Hasil terbaik adalah 27/1459 dalam 3 jam dan 22/9721 dalam seminggu.

Saya beralih ke CodeChef ketika Hackerrank mulai lebih jarang mengadakan kompetisi. Total saya berhasil mengikuti 5 kompetisi. Skor terbaik adalah 426/5019 dalam kompetisi sepuluh hari.

Secara total, di kompetisi dan begitu saja, saya memecahkan lebih dari 1000 masalah, yang sesuai dengan rencana. Sayangnya, saat ini tidak ada waktu luang untuk melanjutkan kegiatan kompetitif, sama seperti tidak ada tujuan untuk menghapuskan waktu luang tersebut. Tapi itu menyenangkan. Saya menyarankan mereka yang tertarik dengan hal ini menemukan orang yang berpikiran sama. Bersama-sama atau berkelompok jauh lebih menarik. Saya bersenang-senang dengan seorang teman, jadi mungkin itu berjalan dengan baik.

Tonton video

Setelah membaca buku Skiena, saya menjadi tertarik dengan apa yang dia lakukan. Seperti Sedgwick, dia adalah seorang profesor universitas. Dalam hal ini, video kursusnya dapat ditemukan online. Saya memutuskan untuk meninjau kursus tersebut COMP300E - Tantangan Pemrograman - HKUST 2009. Saya tidak bisa mengatakan bahwa saya sangat menyukainya. Pertama-tama, kualitas videonya tidak terlalu bagus. Kedua, saya tidak mencoba memecahkan sendiri masalah yang dibahas dalam kursus ini. Jadi keterlibatannya tidak terlalu tinggi.
Selain itu, ketika memecahkan masalah, mencoba menemukan algoritma yang tepat, saya menemukan video Tushar Roy. Dia bekerja di Amazon dan sekarang bekerja di Apple. Seperti yang kemudian saya ketahui sendiri, dia melakukannya Saluran Youtube, di mana dia memposting analisis berbagai algoritma. Pada saat penulisan, saluran tersebut berisi 103 video. Dan saya harus mengatakan bahwa analisisnya dilakukan dengan sangat baik. Saya mencoba menonton penulis lain, tetapi entah bagaimana tidak berhasil. Jadi saya pasti dapat merekomendasikan saluran ini untuk ditonton.

Mengambil kursus

Saya tidak melakukan sesuatu yang istimewa di sini. Menonton video dari Nanodegree Pengembang Android Google dan mengikuti kursus dari ITMO Cara Memenangkan Kompetisi Coding: Rahasia Juara. Nanodegree cukup bagus, meskipun saya tentu saja tidak belajar sesuatu yang baru darinya. Kursus dari ITMO sedikit melenceng dari segi teori, tetapi permasalahannya menarik. Saya tidak akan merekomendasikan memulainya, tetapi pada prinsipnya ini adalah waktu yang dihabiskan dengan baik.

Belajar dari pengalaman orang lain

Tentu saja banyak orang yang mencoba masuk ke Google. Ada yang mengerti, ada yang tidak. Beberapa telah menulis artikel tentang ini. Hal menarik yang mungkin akan saya sebutkan yang ini и yang ini. Dalam kasus pertama, orang tersebut menyiapkan sendiri daftar apa yang perlu dia pelajari untuk menjadi Insinyur Perangkat Lunak dan masuk ke Google. Itu akhirnya berakhir di Amazon, tapi itu tidak penting lagi. Manual kedua ditulis oleh insinyur Google, Larisa Agarkova (Larrr). Selain dokumen ini, Anda juga bisa membaca blognya.

Masuk akal untuk membaca ulasan wawancara di Glassdoor. Semuanya kurang lebih serupa, tetapi Anda bisa mendapatkan beberapa informasi berguna.

Saya tidak akan memberikan link ke artikel kecil lainnya, Anda dapat dengan mudah menemukannya di Google.

Putaran kedua

Dan sekarang satu tahun telah berlalu. Ternyata sangat intens dalam hal belajar. Namun saya mendekati musim gugur yang baru dengan pengetahuan teoretis yang lebih dalam dan mengembangkan keterampilan praktis. Masih ada beberapa minggu tersisa sebelum akhir tahun yang diberikan kepada saya untuk persiapan, ketika tiba-tiba sepucuk surat dari perekrut dari Google masuk ke pos, di mana dia bertanya apakah saya masih memiliki keinginan untuk bekerja di Google dan apakah saya mau. Saya keberatan berbicara dengannya. Tentu saja, saya tidak keberatan. Kami sepakat untuk menelepon dalam seminggu. Mereka juga meminta saya untuk memperbarui resume, dan saya menambahkan deskripsi singkat tentang apa yang telah saya lakukan selama setahun di tempat kerja dan secara umum.

Setelah berkomunikasi seumur hidup, kami memutuskan seminggu lagi akan ada wawancara Hangout, seperti tahun lalu. Seminggu berlalu, tiba waktunya wawancara, namun pewawancara tidak juga muncul. 10 menit berlalu, aku sudah mulai gugup, tiba-tiba ada yang menghambur dalam obrolan. Ternyata beberapa saat kemudian, pewawancara saya karena alasan tertentu tidak dapat hadir dan penggantinya segera ditemukan. Orang tersebut agak tidak siap baik dalam hal menyiapkan komputer maupun dalam melakukan wawancara. Tapi kemudian semuanya berjalan baik. Saya memecahkan masalah dengan cepat, menjelaskan di mana kendala mungkin terjadi, dan bagaimana cara menghindarinya. Kami membahas beberapa versi masalah yang berbeda dan kompleksitas algoritmanya. Kemudian kami berbicara selama 5 menit lagi, insinyur tersebut menceritakan kesannya bekerja di Munich (mereka tampaknya tidak menemukan pengganti yang mendesak di Zurich), dan kemudian kami berpisah.

Di hari yang sama, perekrut menghubungi saya dan mengatakan bahwa wawancara berjalan dengan baik dan mereka siap mengundang saya untuk wawancara di kantor. Keesokan harinya kami menelepon melalui Hangouts dan mendiskusikan detailnya. Karena saya perlu mengajukan visa, kami memutuskan untuk menjadwalkan wawancara dalam sebulan.

Saat saya menyiapkan dokumen, saya sekaligus mendiskusikan wawancara yang akan datang dengan perekrut. Wawancara standar di Google terdiri dari 4 wawancara algoritmik dan satu wawancara Desain Sistem. Namun, sejak saya melamar pekerjaan sebagai pengembang Android, saya diberitahu bahwa bagian dari wawancara tersebut akan spesifik untuk Android. Saya tidak dapat menjelaskan kepada perekrut apa sebenarnya dan apa spesifiknya. Sejauh yang saya mengerti, ini diperkenalkan relatif baru dan dia sendiri tidak terlalu menyadarinya. Saya juga mendaftar untuk dua sesi pelatihan: cara lulus wawancara algoritmik dan cara lulus wawancara Desain Sistem. Sesi-sesi tersebut memiliki kegunaan yang rata-rata. Di sana juga, tidak ada yang bisa memberi tahu saya apa yang ditanyakan pengembang Android. Oleh karena itu, persiapan saya untuk bulan ini adalah sebagai berikut:

  • Membeli papan penanda dan menulis 2-3 lusin algoritma paling populer dari memori. 3-5 buah setiap hari. Totalnya, masing-masing ditulis beberapa kali.
  • Segarkan kembali ingatan Anda akan berbagai informasi di Android yang tidak Anda gunakan setiap hari
  • Menonton beberapa video tentang Skala Besar dan sejenisnya

Seperti yang sudah saya katakan, pada saat yang sama saya sedang mempersiapkan dokumen untuk perjalanan. Awalnya mereka meminta informasi kepada saya untuk membuat surat undangan. Kemudian saya mencoba lama sekali untuk mencari tahu siapa di Siprus yang mengeluarkan visa ke Swiss, karena kedutaan Swiss tidak menangani hal ini. Ternyata, konsulat Austria yang melakukan hal tersebut. Saya menelepon dan membuat janji. Mereka meminta banyak dokumen, tapi tidak ada yang menarik. Foto, paspor, izin tinggal, berbagai sertifikat dan, tentu saja, surat undangan. Sementara suratnya tidak sampai. Pada akhirnya, saya menggunakan cetakan biasa dan hasilnya cukup baik. Surat itu sendiri tiba 3 hari kemudian, dan FedEx Siprus tidak dapat menemukan alamat saya dan saya harus mengambilnya sendiri. Pada saat yang sama, saya menerima parsel dari FedEx yang sama, yang juga tidak dapat dikirimkan kepada saya, karena mereka tidak menemukan alamatnya, dan sudah tergeletak di sana sejak Juni (5 bulan, Karl). Karena saya tidak mengetahuinya, tentu saja saya tidak berasumsi bahwa mereka memilikinya. Saya menerima visa tepat waktu, setelah itu mereka memesankan hotel untuk saya dan menawari saya pilihan penerbangan. Saya telah menyesuaikan opsi agar lebih nyaman. Tidak ada lagi penerbangan langsung, jadi saya akhirnya terbang ke sana melalui Athena dan kembali melalui Wina.

Setelah semua formalitas perjalanan diselesaikan, beberapa hari berlalu dan saya benar-benar terbang ke Zurich. Sampai di sana tanpa insiden. Dari bandara ke kota saya naik kereta - dengan cepat dan nyaman. Setelah berkeliling kota sebentar, saya menemukan hotel dan check in. Karena hotel dipesan tanpa makanan, saya makan malam di sebelah dan pergi tidur, karena penerbangannya pagi dan saya sudah ingin tidur. Keesokan harinya saya sarapan di hotel (untuk uang tambahan) dan pergi ke kantor Google. Google memiliki beberapa kantor di Zurich. Wawancara saya bukan yang utama. Dan secara umum, kantor tersebut terlihat biasa saja, jadi saya tidak sempat melihat semua kelebihan dari kantor Google yang “normal”. Saya mendaftar ke administrator dan duduk menunggu. Setelah beberapa waktu, perekrut keluar dan memberi tahu saya rencana hari itu, setelah itu dia membawa saya ke ruangan tempat wawancara akan dilakukan. Sebenarnya rencananya termasuk 3 wawancara, makan siang dan 2 wawancara lagi.

Wawancara nomor satu

Wawancara pertama baru saja di Android. Dan itu sama sekali tidak ada hubungannya dengan algoritma. Tapi kejutan. Baiklah, cara ini bahkan lebih umum. Kami diminta membuat komponen UI tertentu. Pertama kita bahas apa dan bagaimana. Dia menawarkan untuk membuat solusi menggunakan RxJava, menjelaskan apa sebenarnya yang akan dia lakukan dan mengapa. Mereka bilang ini pasti bagus, tapi mari kita lakukan dengan menggunakan framework Android. Dan pada saat yang sama kita akan menulis kodenya di papan tulis. Dan bukan hanya sebuah komponen, tetapi seluruh Aktivitas yang menggunakan komponen ini. Inilah yang saya belum siap. Menulis algoritme 30-50 baris di papan tulis adalah satu hal, dan menulis mie kode Android adalah satu hal, bahkan dengan singkatan dan komentar dengan semangat "baiklah, saya tidak akan menulis itu, karena sudah jelas." Hasilnya semacam vinaigrette untuk 3 papan. Itu. Saya memecahkan masalahnya, tetapi tampaknya bodoh.

Wawancara nomor dua

Wawancara kali ini tentang algoritma. Dan ada dua pewawancara. Salah satunya adalah pewawancara sebenarnya, dan yang kedua adalah padawan muda (pewawancara bayangan). Penting untuk membuat struktur data dengan properti tertentu. Pertama, kita membahas masalahnya seperti biasa. Saya mengajukan pertanyaan berbeda, pewawancara menjawab. Setelah beberapa waktu, mereka diminta untuk menuliskan beberapa metode struktur yang ditemukan di papan tulis. Kali ini saya kurang lebih berhasil, meskipun dengan beberapa kesalahan kecil, yang saya perbaiki atas dorongan pewawancara.

Wawancara nomor tiga

Kali ini System Design yang tiba-tiba ternyata juga Android. Penting untuk mengembangkan aplikasi dengan fungsionalitas tertentu. Kami membahas persyaratan untuk aplikasi, server, dan protokol komunikasi. Selanjutnya saya mulai menjelaskan komponen atau perpustakaan apa yang akan saya gunakan ketika membangun aplikasi. Lalu, saat menyebut Penjadwal Pekerjaan, terjadi kebingungan. Intinya saya tidak pernah menggunakannya dalam praktek, karena pada saat dirilis saya baru beralih ke aplikasi pendukung yang belum ada tugas untuk penggunaannya. Hal yang sama terjadi ketika mengembangkan yang berikutnya. Artinya, secara teori, saya tahu benda apa itu, kapan dan bagaimana penggunaannya, tapi saya tidak punya pengalaman dalam menggunakannya. Dan pewawancara sepertinya tidak terlalu menyukainya. Kemudian mereka meminta saya untuk menulis beberapa kode. Ya, saat mengembangkan aplikasi Anda perlu segera menulis kode. Sekali lagi kode Android di papan. Ternyata menakutkan lagi.

Makan siang

Orang lain seharusnya datang, tapi dia tidak datang. Dan Google membuat kesalahan. Hasilnya, saya pergi makan siang bersama pewawancara sebelumnya, rekannya, dan tak lama kemudian pewawancara berikutnya bergabung. Makan siangnya cukup lumayan. Sekali lagi, karena ini bukan kantor utama di Zurich, ruang makannya terlihat biasa saja, meski sangat bagus.

Wawancara nomor empat

Terakhir, algoritma dalam bentuknya yang paling murni. Saya memecahkan masalah pertama dengan cukup cepat dan efektif, meskipun saya melewatkan satu kasus kecil, tetapi atas perintah pewawancara (dia memberikan kasus kecil ini) saya menemukan masalahnya dan memperbaikinya. Tentu saja, saya harus menulis kodenya di papan tulis. Kemudian diberikan tugas serupa, namun lebih sulit. Untuk itu, saya menemukan beberapa solusi non-optimal dan hampir menemukan solusi optimal, 5-10 menit tidak cukup untuk menyelesaikan pemikiran tersebut. Ya, saya tidak punya waktu untuk menulis kodenya.

Wawancara nomor lima

Dan lagi wawancara Android. Saya bertanya-tanya mengapa saya mempelajari algoritma sepanjang tahun?
Awalnya ada beberapa pertanyaan sederhana. Kemudian pewawancara menulis kode di papan tulis dan meminta untuk menemukan permasalahan di dalamnya. Menemukannya, menjelaskannya, memperbaikinya. Dibahas. Dan kemudian beberapa pertanyaan tak terduga dimulai dalam semangat “apa yang dilakukan metode Y di kelas X”, “apa yang ada di dalam metode Y”, “apa yang dilakukan kelas Z”. Tentu saja, saya menjawab sesuatu, tetapi kemudian saya berkata bahwa saya belum pernah menemukan hal ini dalam pekerjaan saya akhir-akhir ini dan tentu saja saya tidak ingat secara detail siapa melakukan apa dan bagaimana. Setelah itu, pewawancara menanyakan apa yang saya lakukan sekarang. Dan pertanyaannya berlanjut pada topik ini. Saya sudah menjawab jauh lebih baik di sini.

Setelah wawancara terakhir berakhir, mereka mengambil izin saya, mendoakan saya beruntung dan mengirim saya dalam perjalanan. Saya berjalan-jalan keliling kota sebentar, makan malam dan pergi ke hotel, tempat saya tidur, karena penerbangan lagi pagi-pagi sekali. Keesokan harinya saya tiba dengan selamat di Siprus. Atas permintaan perekrut, saya menulis tanggapan wawancara dan mengisi formulir di layanan khusus untuk mengembalikan uang yang dikeluarkan. Dari seluruh biaya, Google langsung hanya membayar tiket. Hotel, makanan dan perjalanan ditanggung oleh kandidat. Kemudian kami mengisi formulir, melampirkan kuitansi dan mengirimkannya ke kantor khusus. Mereka memprosesnya dan mentransfer uang ke rekening dengan cukup cepat.

Butuh waktu satu setengah minggu untuk memproses hasil wawancara. Setelah itu saya diberitahu bahwa saya “sedikit di bawah standar.” Artinya, saya sedikit gagal. Lebih khusus lagi, 2 wawancara berjalan dengan baik, 2 wawancara kurang baik, dan Desain Sistem kurang baik. Nah, kalau minimal 3 sudah berjalan dengan baik, maka kita pasti bisa bersaing, kalau tidak, tidak ada peluang. Mereka menawarkan untuk kembali lagi satu tahun lagi.

Pada awalnya, tentu saja saya kesal, karena banyak usaha yang telah dikeluarkan untuk persiapan, dan pada saat wawancara saya sudah berpikir untuk meninggalkan Siprus. Bergabung dengan Google dan pindah ke Swiss sepertinya merupakan pilihan yang bagus.

Kesimpulan

Dan di sinilah kita sampai pada bagian terakhir artikel ini. Ya, saya gagal dalam wawancara Google dua kali. Sedih. Mungkin akan menarik untuk bekerja di sana. Tapi, Anda bisa melihat masalah ini dari sisi lain.

  • Dalam satu setengah tahun, saya belajar banyak hal terkait pengembangan perangkat lunak.
  • Saya sangat senang berpartisipasi dalam kompetisi pemrograman.
  • Saya pergi ke Zurich selama beberapa hari. Kapan saya akan pergi ke sana lagi?
  • Saya memiliki pengalaman wawancara yang menarik di salah satu perusahaan IT terbesar di dunia.

Jadi, segala sesuatu yang terjadi selama satu setengah tahun ini bisa dianggap sebagai pelatihan, atau pelatihan. Dan hasil dari pelatihan ini sangat terasa. Ide saya untuk meninggalkan Siprus sudah matang (karena beberapa keadaan keluarga), saya berhasil melewati beberapa wawancara dengan perusahaan terkenal lainnya dan pindah setelah 8 bulan. Tapi itu cerita yang sama sekali berbeda. Namun, saya rasa saya tetap harus berterima kasih kepada Google atas satu setengah tahun saya bekerja sendiri, dan untuk 2 hari yang menarik di Zurich.

Apa yang akhirnya bisa saya katakan? Jika Anda bekerja di bidang IT, persiapkan diri Anda untuk wawancara di Google (Amazon, Microsoft, Apple, dll). Mungkin suatu hari nanti Anda akan pergi ke sana untuk sampai ke sana. Meski Anda tidak mau, percayalah, persiapan seperti itu tidak akan memperburuk keadaan Anda. Saat Anda menyadari bahwa Anda bisa (walaupun hanya dengan keberuntungan) mendapatkan wawancara dengan salah satu perusahaan ini, lebih banyak jalan yang terbuka bagi Anda daripada sebelum Anda memulai persiapan. Dan yang Anda butuhkan sepanjang perjalanan hanyalah tujuan, ketekunan, dan waktu. Aku harap kamu berhasil :)

Sumber: www.habr.com

Tambah komentar