Dalam beberapa minggu terakhir, gelombang artikel tentang Habril tentang bagaimana wawancara dilakukan menjadi lebih sering.

Google terus mencari insinyur. Sebagai SRE, saya dapat mengatakan dengan pasti bahwa Anda
dibutuhkan di jajaran kami . Kue-kue di dapur kecil dan kopi di mesin kopi sedang menunggu Anda. Yang perlu Anda lakukan hanyalah mendapatkan wawancara. Ini sulit, tetapi nyata - setelah saya
menggambarkan kisah saya sebagai pencari kerja, dan sekarang, di antara hal-hal lain, saya juga melakukan wawancara. Jadi sekarang saya akan menceritakan bagaimana kami melakukan wawancara dengan para insinyur.
Tidak, saya tidak menjadi perekrut.
Proses wawancara pertama melibatkan percakapan dengan perekrut. Ini adalah percakapan "apa-di mana-mengapa" umum (yaitu, deskripsi proses untuk kasus spesifik Anda) dan
penyaringan yang sama
oleh semua orang dari kuesioner dengan beberapa pilihan jawaban. Pemutaran pada saat itu terasa sangat mendasar bagi saya, saya kira Anda sudah menjawab pertanyaan seperti itu seratus kali. Kemudian wawancara akan dilakukan oleh para insinyur - kolega masa depan Anda (dekat atau jauh, begini ceritanya, planet kita sangat kecil).
(Penting: Saya menggambarkan proses yang saya tahu, di posisi engineering (Software Engineer (SWE) dan Site Reliability Engineer (SRE).) Untuk peserta magang, prosesnya berubah; serta prosesnya dapat berbeda secara prinsip, karena departemen SDM mengadaptasi proses untuk mencapai Gunakan informasi yang disediakan di sini hanya untuk secara kasar mewakili apa yang diharapkan - tetapi bukan tawaran publik! Informasi yang tepat tentang bagaimana proses akan berlangsung untuk Anda secara pribadi akan menjadi informasi eksklusif dan eksklusif dari perekrut Anda. Informasi juga mungkin sudah usang. - perhatikan Lihat bagian Bagaimana Kami Menyewa untuk informasi terkini pada saat membaca).Pertama, akan ada beberapa wawancara melalui
hangout / bertemu . Ini adalah wawancara lengkap, seperti yang saya katakan di atas - insinyur akan mewawancarai, dan diasumsikan bahwa kandidat akan "berpikir keras" dalam proses + menulis selusin atau dua baris dalam bahasa pemrograman apa pun (ya, sayangnya, sejauh ini di Google).
Wawancara saya dirancang untuk ~ 45 plus atau minus sepuluh menit, tetapi biasanya saya mencoba untuk menyesuaikan dalam 45 menit. Mulai saat ini, lima menit untuk pengantar singkat dan informasi umum, 30-35 menit untuk pertanyaan dan diskusi, kemudian lima menit untuk pertanyaan kandidat (jika ada).
Secara umum, tujuan insinyur wawancara adalah untuk mengumpulkan informasi
tentang beberapa sumbu keterampilan kandidat (seperti keterampilan coding, pengetahuan tentang algoritma dan struktur data, dll.). Tetapi hal terpenting dalam wawancara adalah untuk mengetahui bagaimana seseorang berpikir. Artinya, selalu penting untuk menemukan batas ketika seseorang tidak tahu solusinya. Setiap pewawancara memiliki tekniknya sendiri (terutama untuk wawancara telepon): seseorang menyimpan selusin pertanyaan dari pertanyaan pemanasan (solusi yang secara harfiah adalah menulis siklus tiga baris) hingga yang sulit untuk dijelaskan. Seseorang memiliki 2-3 pertanyaan "favorit", yang mana bisa dibolak-balik oleh selusin pihak dan bagaimana menyederhanakan dan memperumit, tergantung pada apa yang ditunjukkan lawan bicaranya. Saya yakin masih ada opsi, tetapi saya tidak tahu tentang mereka.
Saya mencoba kedua teknik, dan saya lebih suka yang kedua: tergantung pada resume dan harga diri kandidat, saya menggunakan formulir pertanyaan yang lebih tepat. Pertanyaannya selalu terbuka (setelah semua, kapan terakhir kali Anda melihat pernyataan yang tepat dari masalah di industri kami?) - dan tergantung pada apa yang diminta kandidat, saya menyederhanakan atau memperumit pertanyaan sehingga pada akhir 10 menit pertama kandidat sudah menulis solusi sepele. Ini jarang sulit, bagaimanapun, solusinya sepele.
Pertanyaan-pertanyaan "mengapa Anda yakin itu berhasil?" Juga ditanyakan sepele. (jika kandidat tidak segera menggambarkan batas-batas penerapan atau tes), dan apa kompleksitas solusinya. Itu hanya memberikan informasi bahwa kandidat tahu bagaimana kode dan mengerti apa yang dia tulis. Tetapi pengkodean tidak cukup - Anda harus bisa berpikir, jadi pertanyaan-pertanyaan berikut adalah: bagaimana cara menghilangkan batasan? Bagaimana melakukan yang lebih baik? Entah (apa yang terjadi ketika kandidat sangat bagus atau hanya tahu solusi dari pengalaman) bagaimana membuat kode bekerja di bawah ini atau batasan tambahan lainnya.
Ini memberikan paket sinyal segera - tetapi berapa banyak kandidat tahu bagaimana beradaptasi dengan perubahan dalam tugas? Dan seberapa siap untuk memikirkan solusi alternatif? Diskusi itu sendiri juga menarik - pertanyaannya selalu diajukan seterbuka mungkin, jadi ada lusinan cara untuk memahaminya. Apakah lingkungan bisnis diklarifikasi, atau hanya keterbatasan teknis? Apakah batasan teknis diperhitungkan? Sebagai contoh, beberapa kali saya mengatakan “1e12 objek diharapkan”, dan kandidat tidak mengevaluasi seberapa banyak ini. Dan ini hampir satu terabyte, jika byte per objek. Atau ~ 116,5 gigabytes jika demi sedikit. Atau 4,3 terabyte jika int32. Nah, Anda mengerti intinya. Tidak, mengingat ini tidak perlu - tidak di ujian, tidak ada yang mengambil kalkulator. Ponsel ini, ya, bahkan dalam pencarian. Dan omong-omong, Anda bisa bertanya.
Dan ini adalah bagaimana saya akan meningkatkan kesulitan atau hanya memodifikasi tugas untuk semua waktu wawancara yang tersedia. Ya, mungkin bagi yang diwawancarai ini adalah roti kerja utama, dan dia makan tugas-tugas seperti itu untuk sarapan, makan siang, dan makan malam. Nah, untuk kasus ini
, kartu perjalanan saya memiliki pertanyaan yang sangat berbeda. Misalnya, alih-alih grafik - untuk pemrograman dinamis. Atau di daftar. Atau secara umum pertanyaannya adalah, di mana solusi optimal akan membutuhkan banyak. Yang utama adalah lingkungan yang berbeda, tugas yang berbeda.
Yang paling penting di sini adalah memberi pada saat yang sama tugas yang sangat sederhana sehingga kandidat dapat memecahkan dan menunjukkan keterampilan dasar, dan meningkatkan kesulitan ke tingkat di mana kandidat tidak tahu jawabannya sehingga ia dapat menunjukkan bagaimana ia berpikir. Jika pada saat yang sama ia dapat menemukan solusi untuk masalah yang lebih kompleks - itu baik-baik saja, tetapi jika kandidat mampu menyelesaikan semuanya, maka ini adalah tusukan orang yang diwawancarai yang tidak menyiapkan pertanyaan tentang kompleksitas yang bahkan lebih besar.
Ingin spesifik? Berikut adalah salah satu pertanyaan yang
TIDAK akan Anda tanyakan hanya karena dia sudah dianggap "bocor" - artinya, kemungkinan calon tidak akan memikirkannya, tetapi ingat. Seperti yang saya tulis di atas, penting bagaimana kandidat berpikir, dan bukan bagaimana dia mengingat ... Jadi, pertanyaannya adalah:
mengimplementasikan cache LRU .
Secara umum, tugas itu indah, karena memungkinkan banyak bentuk tugas dan banyak bentuk penafsiran. Misalnya, Anda dapat mengajukan pertanyaan secara langsung di dahi “implement LRU cache”. Ini dapat dirumuskan sebagai “bayangkan bahwa layanan kami untuk memproses permintaan memeriksa keberadaan objek eksternal. Bagaimana saya bisa mempercepat pemrosesan? " - mengharapkan kalimat yang sangat jelas "mari kita cache hasil". Apa yang bisa ditanyakan “tetapi bagaimana?”. Dan "bagaimana jika kita ingin mengontrol memori maksimum yang dikonsumsi oleh cache ini?". Pertanyaannya tetap terbuka - dan API mana yang harus menyediakan cache ini. Untuk kesederhanaan, Anda selalu dapat menguranginya menjadi set (key, value) + get (key); tetapi Anda dapat menambahkan TTL. Mungkin dengan get (key, fetch_func). Secara umum, evaluasi API yang diusulkan juga dapat memberikan sinyal tambahan tentang pengalaman dan gaya berpikir kandidat.
Solusi sepele pada hashmap akan memberikan O (1) pada get () + O (N) di set () (ini benar, kan?). Jika semua elemen terhubung tambahan (dengan mengatur tautan ganda), dimungkinkan untuk mendapatkan O (1) untuk kedua operasi. Jika Anda perlu menambahkan TTL ... Saya pikir idenya jelas. Jika Anda mau, mari kita bahas dalam komentar: bayangkan Anda ditanya pertanyaan ini, bagaimana menurut Anda? solusi apa yang Anda usulkan? ..
Dan dalam bahasa pemrograman apa? Ya, apa yang paling Anda sukai, yang paling disukai. C ++? Luar biasa Pergi? Bagus Python Anda selalu disambut. Perl? Sekarang jarang, tapi ya juga. Dan Jawa ya. Dan javascript (meskipun lebih rumit mengingat memori solusinya).
Jadi, setelah sekitar 40 menit dari awal wawancara, penerbangan yang diduga kandidat akan terganggu, tetapi ini tidak berarti bahwa semuanya buruk. Itu artinya waktunya sudah habis.
Setelah wawancara itu sendiri, pewawancara menulis laporan, seringkali dengan transkrip rinci tentang apa yang terjadi dalam wawancara. Laporan ini akan digunakan untuk pengambilan keputusan. Saya pribadi memesan sekitar satu jam segera setelah wawancara untuk merekam menit penuh dari percakapan dengan memori baru, beberapa hanya menulis di atas kertas transkrip yang hampir lengkap selama wawancara.
Setelah wawancara telepon, berdasarkan laporan dari semua yang diwawancarai, keputusan dibuat atas undangan untuk berkonfrontasi. Ini akan menjadi wawancara sehari penuh di salah satu kantor: beberapa wawancara di pagi hari, lalu makan siang (dan mengenal ruang makan di kantor :) dan kemudian beberapa lagi. Saat mewawancarai di SRE, ini akan menjadi wawancara yang berbeda, daftar yang akan disampaikan oleh perekrut kepada Anda, termasuk coding dan
NALSD : Desain Sistem Skala Besar Non-Abstrak. Kuncinya adalah non-abstrak (yaitu, bukan kata-kata umum "kita membutuhkan database") dan "skala besar" (yaitu, jika database diperlukan, maka di bawah petabyte, misalnya). Anda dapat
membaca lebih lanjut di sini dan banyak lagi di mana menemukan bahan dalam pencarian. Saya merekrut beberapa tautan untuk pelatihan. Ini adalah poin yang sangat penting dalam wawancara - hanya karena ketika bekerja untuk perusahaan Google, Anda harus berpikir dan mempertimbangkan sistem dari perspektif seperti itu.
Secara umum, wawancara langsung tidak jauh berbeda dari wawancara telepon - masalah serupa dan proses serupa. Pada saat yang sama, kami mencoba mengatur pertanyaan agar tidak mengajukan pertanyaan yang sama dua kali.
Apa lagi yang bisa saya tambahkan tentang proses wawancara? Selamat bersenang-senang! Tidak, serius, santai dan bersenang-senang! Wawancara telepon? Hanya percakapan dengan teman bicara yang menarik. Dijamin informasi baru dan pengalaman baru. Wawancara langsung? Lebih menyenangkan! Anda sedang dalam perjalanan bisnis dengan mengorbankan perusahaan yang akan datang :) Berjalan-jalanlah di kota, temui teman-teman. Hiburan sehari penuh dan percakapan yang menarik juga dijamin.
Dan setelah hari yang menyenangkan ini, semua orang yang mewawancarai Anda juga menulis laporan, dengan protokol percakapan yang lengkap. Semua data wawancara dikumpulkan bersama dan
ditinjau oleh komite independen . Ini penting: tidak ada orang yang mengenal Anda secara pribadi berpartisipasi dalam keputusan. Tak satu pun dari mereka yang diwawancarai juga terlibat langsung. Ini semua bertujuan menghilangkan bias dalam keputusan. Evaluasi hanya untuk kepatuhan dengan standar yang disyaratkan dari standar perekrutan. Jika Anda kurang beruntung dan gagal, Anda selalu dapat mencoba lagi dalam setahun. Untuk tahun ini, Anda dapat mensistematisasikan pengetahuan Anda dan mengisi kekosongan yang ditemukan.
Punya pertanyaan? Tanyakan di komentar.
Apakah ada minat mencoba wawancara sebelum wawancara? Ada layanan untuk wawancara tiruan (misalnya,
sekali dan
dua kali , tetapi itu bukan dari perusahaan itu sendiri, jadi tidak ada jaminan); terkadang Google menjalankan kampanye serupa.
Dan ya, jangan ragu
untuk mendaftar sendiri. Jika Anda percaya pada keajaiban "pengarsipan melalui karyawan" - menulis kepada saya, saya akan mengirimkan aplikasi Anda. Welkam!