Baru-baru ini saya berdebat dengan seorang kolega tentang pertanyaan teknis dalam wawancara. Sebagai lulusan, saya berkeliling banyak perusahaan dan memperhatikan mereka menggunakan pertanyaan yang sama. Contohnya adalah "Bisakah Anda menulis fungsi yang menentukan apakah suatu bilangan prima atau tidak?", 4 tahun kemudian, saya menemukan bahwa pertanyaan tertentu cukup umum bahkan untuk pengembang junior. Saya mungkin tidak melihat ini dengan cara yang benar, tetapi bukankah perusahaan perangkat lunak harus cukup pintar untuk memikirkan pertanyaan wawancara mereka sendiri? Saya telah mengunjungi sekitar 16 wawancara sebagai lulusan dan pertanyaan yang sama muncul di sekitar 75% dari mereka. Ini membuat saya percaya bahwa banyak perusahaan malas dan hanya Google: 'Templat pertanyaan untuk mewawancarai pengembang perangkat lunak' dan saya merasa ada yang merugikan diri sendiri dalam mengambil pendekatan ini.
Pertanyaan: Apakah lebih baik menggunakan seperangkat pertanyaan dari beberapa templat atau haruskah perusahaan perangkat lunak berusaha untuk menjadi lebih asli dan menghasilkan bahan wawancara mereka sendiri?
Dari sudut pandang saya, jika saya gagal dalam sebuah wawancara dan pergi dan mencari jawaban yang baik untuk pertanyaan yang saya buat, saya bisa terbang melalui wawancara berikutnya jika pertanyaannya sama.
Jawaban:
Banyak pertanyaan seperti itu tetap ada karena sulit untuk mengajukan pertanyaan yang jelas, membutuhkan pengetahuan domain sesedikit mungkin, memerlukan kemampuan untuk membuat algoritma tanpa menjadi pertanyaan jebakan yang akan dilakukan seseorang " dapatkan "atau" tidak dapatkan, "dan bahwa orang memiliki latar belakang historis jawaban untuk membandingkan kandidat. Dan pertanyaan terbaik memiliki beberapa tingkat jawaban yang benar yang memungkinkan pewawancara untuk mengukur keterampilan pemecahan masalah kandidat. Misalnya, jika seseorang menyarankan algoritma pencarian prima yang sepele, kita dapat membicarakan bagaimana Anda dapat mengoptimalkan implementasi atau pewawancara untuk mengarahkan kandidat ke salah satu algoritma yang lebih canggih.
Saya sudah dalam kelompok di mana sejumlah pengembang yang berbeda menilai betapa sulitnya masalah tertentu untuk satu set orang yang diwawancarai dan perkiraan ada di peta. Banyak orang melihat FizzBuzz pada awalnya dan menganggapnya terlalu mudah. Jika Anda pergi ke wawancara tanpa pemahaman yang baik tentang betapa sulitnya pertanyaan, orang kelima yang Anda wawancarai memiliki keuntungan besar dibandingkan orang pertama karena Anda telah belajar bahwa orang-orang bergumul dengan FizzBuzz saat Anda membentuk kesan negatif dari orang pertama. Anda mewawancarai karena mereka memiliki perjuangan yang sama.
Jika pengembang mengajukan pertanyaan baru, mereka juga cenderung memiliki pengetahuan budaya atau domain yang tidak disengaja yang tertanam di dalamnya. Mereka akan mengajukan pertanyaan tentang olahraga, misalnya, yang cenderung memberi keuntungan kepada orang-orang yang mengetahui aturan olahraga itu yang dapat dengan cepat menemukan ambiguitas atau membuat asumsi yang "jelas". Seseorang yang sama sekali tidak terbiasa dengan olahraga harus mencari tahu aturan permainan dengan cepat dan jauh lebih mungkin untuk membuat kesalahan atau muncul dengan jawaban yang kurang canggih. Atau mereka akan mengajukan pertanyaan yang secara tidak sengaja mengasumsikan bahwa para kandidat akan mengetahui / mengingat beberapa berita gembira yang relatif kecil. Seseorang yang telah bekerja pada sistem akuntansi selama bertahun-tahun, misalnya, dapat berasumsi bahwa semua orang tahu apa sistem akuntansi entri ganda atau bahwa pertanyaan yang mengasumsikan definisi skema sistem akuntansi entri ganda sederhana akan jelas bagi pengembang yang kompeten. Tapi itu bisa dengan mudah melempar pengembang yang baik yang harus mendapatkan ide tentang debit untuk kas meningkatkan saldo kas dan kredit mengurangi saldo kas. Seseorang yang telah mengambil Akuntansi 101, bagaimanapun, akan cepat mengerti. Jika niat Anda adalah untuk menguji keakraban kandidat dengan akuntansi, ini mungkin pertanyaan yang masuk akal. Tetapi jika Anda tidak mencari ahli materi pelajaran, itu akan bermasalah. Tapi itu bisa dengan mudah melempar pengembang yang baik yang harus mendapatkan ide tentang debit untuk kas meningkatkan saldo kas dan kredit mengurangi saldo kas. Seseorang yang telah mengambil Akuntansi 101, bagaimanapun, akan cepat mengerti. Jika niat Anda adalah untuk menguji keakraban kandidat dengan akuntansi, ini mungkin pertanyaan yang masuk akal. Tetapi jika Anda tidak mencari ahli materi pelajaran, itu akan bermasalah. Tapi itu bisa dengan mudah melempar pengembang yang baik yang harus mendapatkan ide tentang debit untuk kas meningkatkan saldo kas dan kredit mengurangi saldo kas. Seseorang yang telah mengambil Akuntansi 101, bagaimanapun, akan cepat mengerti. Jika niat Anda adalah untuk menguji keakraban kandidat dengan akuntansi, ini mungkin pertanyaan yang masuk akal. Tetapi jika Anda tidak mencari ahli materi pelajaran, itu akan bermasalah.
Meskipun saya kira mungkin saja seseorang dapat menghafal jawaban atas beberapa ratus pertanyaan templat "umum" yang digunakan orang, itu tidak mengganggu saya sebagai pewawancara. Pertama-tama, akan sangat mengesankan jika mereka melakukannya dan akan mencerminkan sedikit ketekunan dan pemecahan masalah. Di tempat kedua, umumnya akan menjadi pelatihan yang cukup bagus - jika pengembang tahu cara membalikkan string, tahu beberapa algoritma untuk menemukan bilangan prima, tahu cara menulis loop dan menerapkan konstruksi kontrol untuk FizzBuzz, tahu berbagai algoritma grafik yang datang secara teratur, dll .-- mereka sepertinya pengembang yang cukup berpengalaman. Jika pengembang berhasil menghafal jawaban tanpa belajar apa pun, mereka akan ketahuan ketika pewawancara ingin sedikit menggali atau mereka '
sumber
Saya pikir ada pertanyaan-pertanyaan mudah fizzbuzz, membalikkan string, dll, dan kemudian ada pertanyaan tertentu sedangkan jika Anda belum melihat mereka sebelumnya sulit untuk mendapatkan solusi optimal yang dimaksudkan dengan tekanan tambahan dari wawancara dan waktu singkat kendala. Bagian terburuknya adalah bahwa kadang-kadang perekrut yang tidak memiliki pengetahuan teknis mengajukan beberapa pertanyaan ini dan mereka mencari jawaban yang sangat spesifik .... Jika Anda tidak memberikan jawaban yang optimal, mereka pikir Anda benar-benar idiot. Sekalipun jawaban Anda berhasil, selesaikan masalahnya, dan sementara itu mungkin tidak optimal itu tidak terlalu tidak efisien ....
Beberapa Contoh:
Bagaimana Anda mengocok setumpuk kartu? Mereka mencari metode Fisher-Yates http://en.wikipedia.org/wiki/Fisher%E2%80%93Yates_shufflejawaban lain adalah "salah" ..... Ini bukan sesuatu yang Anda mungkin tahu kecuali Anda ingin mengocok kartu sebelumnya dan secara khusus mencarinya. Anda mungkin tersandung pada saat melakukan jawaban, tetapi dari apa yang saya lihat mereka berharap Anda tahu dingin ini sehingga diragukan akan ada banyak waktu yang diberikan untuk memungkinkan menemukan solusi. Cara lain yang kurang efisien (tapi mungkin lebih jelas) adalah membuat array baru dengan pointer ke array asli dan angka yang merupakan angka acak kemudian mengurutkan array dengan angka acak. Kemudian gunakan susunan yang diurutkan untuk membuat susunan kartu yang baru. Dalam hal apa pun, saya mendapat 0 kredit karena menyajikannya kepada seorang perekrut.
Contoh lain adalah pertanyaan tentang bagaimana Anda akan mendeteksi nomor duplikat dalam daftar n angka semua dari 1 hingga n-1. Jawaban yang jelas (yang relatif efisien dalam perspektif waktu) adalah menggunakan tabel hash untuk memasukkan setiap elemen dan jika Anda menemukan satu sudah dimasukkan maka Anda menemukan duplikat. Jawaban optimal adalah karena jumlahnya antara 1 dan n jika tidak ada duplikat, Anda bisa mendapatkan jumlah yang diharapkan sebagai n (n + 1) / n. Kemudian jika Anda menjumlahkan array Anda mendapatkan jumlah aktual yang nd kurang dari jumlah yang diharapkan. Jadi pada dasarnya n - (Jumlah yang Diharapkan - Jumlah Aktual) = angka duplikat ... Ini adalah kasus yang cukup istimewa .... Saya benar-benar melihat sesuatu sebelumnya dalam beberapa posting online tentang masalah wawancara beberapa waktu lalu tentang yang terkait dengan trik yang sama, jadi Saya baik-baik saja ....
Yang lain, membalikkan semua kata dalam string tanpa menggunakan ruang tambahan. Saya harus memikirkannya dan perekrutnya cukup tidak sabar dalam 5 menit yang saya pikir (membelah dan menggabungkan kembali string secara terbalik, atau memasukkan kata demi kata ke dalam array baru keduanya sangat mudah). Saya datang dengan menemukan batas kata terakhir, menemukan akhir kata pertama, dan terus-menerus mengubah seluruh daftar menjadi 1 dan kemudian memasukkan huruf yang sesuai. Kemudian ulangi sampai Anda mencapai akhir daftar. Metode ini berhasil dan pewawancara setuju (dia agak teknis), tetapi cukup tidak efisien. Ketika sampai di rumah, saya mencari jawaban yang optimal, dan hanya membalikkan daftar, lalu membalikkan setiap kata. Beberapa orang mungkin datang dengan itu,
Sekarang benar begitu Anda telah melihat beberapa masalah ini, Anda dapat menyelesaikannya dengan lebih mudah. Karena ada beberapa pertanyaan serupa dengan beberapa trik yang sama. Saya tahu khususnya rumus n dan nomor (n-1) / 2 memiliki beberapa variasi. Tetapi saya masih belum tahu apa yang diuji dari pertanyaan-pertanyaan ini. FizzBuzz adalah sesuatu yang harus dapat dilakukan semua orang (walaupun saya telah melihat variasi yang tidak begitu sederhana dalam hal ini saya mulai mempertanyakan apakah itu realistis untuk situasi wawancara tanpa bisa mengetik / debug kode). Beberapa dari pertanyaan ini sudah jelas setelah Anda melihatnya, tetapi jika Anda belum melihatnya, itu tidak jelas. Setelah semua orang menyebutkan butuh waktu bertahun-tahun untuk implementasi pertama pencarian biner yang benar muncul ... Saat ini pencarian biner sangat jelas karena semua orang dapat membacanya.
Namun demikian, saya pikir bagian terburuknya adalah ketika orang-orang non-teknis mengajukan pertanyaan karena mereka tidak dapat menghargai solusi Anda yang benar meskipun tidak optimal. Mereka hanya tahu solusi Anda bukan yang disajikan dan karenanya semuanya salah, Anda tidak mendapat pujian atas upaya tersebut. Bahkan solusi yang tidak optimal sering menunjukkan pengetahuan tentang konstruksi pemrograman Kecuali saya pemrograman permainan poker, saya tidak peduli seberapa baik seseorang dapat mengocok setumpuk kartu. Dan bahkan jika saya, setelah menunjukkan kepada mereka algoritma yang efisien saya yakin siapa pun yang setengah layak bisa mengikutinya.
Pertanyaan templat tampaknya hanya memberikan keuntungan bagi kandidat yang telah mewawancarai lebih lama karena mereka lebih cenderung melihat lebih banyak pertanyaan templat. Bahkan FizzBuzz, pertama kali Anda melihatnya, Anda mungkin akan panik, tetapi ketika Anda melihatnya berulang-ulang Anda menjadi lebih terbiasa. Hal terbaik yang dapat Anda lakukan adalah memberikan beberapa tantangan pengkodean yang membutuhkan logika bisnis khusus. Misalnya membuat beberapa dataset (array objek / catatan) dan kemudian membuat beberapa aturan bisnis untuk diterapkan ke setiap objek dan mengembalikan jawaban .. misalnya beberapa jenis peringkat, dll. Tetapi aturan yang sangat khusus). Meskipun mereka mungkin telah melihat loop melalui catatan dan menerapkan logika jutaan kali, aturan Anda akan unik, jadi setidaknya mereka harus memahami dan berhasil menerapkan aturan yang Anda buat.
Katakanlah Gaji yang diproyeksikan dan daftar kandidat serta 3 video game favorit mereka, dan mungkin gaji awal. Calon yang menyukai Zelda mendapat penalti 300, kandidat yang suka putri duyung kecil mendapat bonus 200. Kandidat yang menyukai Donkey Kong dan Super Mario Brothers tetapi bukan Dr. Mario mendapat bonus 300. Calon yang suka Metroid atau Kid Icarus mendapatkan bonus 200, dll .... Tampaknya agak gila tetapi akan menunjukkan kepada Anda kemampuan mereka untuk menerjemahkan aturan bisnis ke dalam konstruksi program logis dan menguji pemahaman mereka tentang logika boolean juga. Secara keseluruhan tidak jauh berbeda dari fizzbuzz kecuali tidak menggunakan modulus dan loop. Anda tentu saja dapat memberi mereka daftar dan meminta mereka mengulanginya dan mencetak hasilnya ke layar menggunakan kriteria keluaran spesifik juga.
sumber
Pada pencarian kerja terakhir saya, saya berada dalam situasi yang sangat mirip. Saya pikir saya memiliki pertanyaan daftar tertaut yang sama di semua perusahaan kecuali satu (yang saat ini saya bekerja di).
Satu hal yang saya perhatikan adalah bahwa pertanyaan-pertanyaan ini diberikan dalam wawancara pertama.
Dari sudut pandang pewawancara, jika seseorang tidak dapat menjawab pertanyaan-pertanyaan ini dengan benar, maka mereka tidak siap untuk wawancara, jadi mengapa membuang lebih banyak waktu dengan mereka? Saya pikir ini bukan ide yang tepat. Perusahaan akan mendapatkan sejumlah besar orang yang dapat membaca jawaban dari Google untuk melanjutkan ke babak berikutnya, tetapi tidak harus sekelompok orang yang merupakan pengembang yang kompeten.
Saya menemukan pertanyaan-pertanyaan FizzBuzz boilerplate mengganggu secara pribadi, tetapi itu membuat wawancara mudah. Saya suka wawancara yang menantang. Ketika saya mewawancarai karyawan potensial, saya ingin memastikan bahwa saya tahu mereka dapat berpikir dan menyelesaikan masalah. Saya berharap mereka dapat menggunakan Google.
Haruskah perusahaan memiliki templat pertanyaan? Iya. Ini membantu mengevaluasi kandidat untuk beberapa putaran pertama. Haruskah templat dibuat dari masalah umum yang dapat dengan mudah ditemukan melalui Google? Tidak. Itu hanya perubahan singkat semua orang yang terlibat.
sumber
"Haruskah rumah-rumah perangkat lunak berusaha menjadi lebih asli dan menghasilkan bahan wawancara mereka sendiri?"
Ya mereka harus, tetapi secara praktis yang terjadi adalah Anda mulai bekerja dan Anda menemukan email dari HR yang mengatakan bahwa Anda sedang berada di lingkaran wawancara untuk dua kandidat besok. Anda sudah siap dengan buaya Anda, dan manajer Anda tidak akan berterima kasih telah meluangkan setengah hari untuk mengajukan beberapa pertanyaan wawancara baru yang bagus. Menjadi terdesak waktu, Anda jatuh kembali pertanyaan Anda telah diminta, atau bahwa Anda dapat menemukan dengan cepat di google.
sumber
Pertanyaan seperti yang Anda sebutkan biasanya adalah pertanyaan fizzbuzz dan bukan pertanyaan yang digunakan untuk merekrut; mereka adalah pertanyaan yang menyangkal (mis. jawaban yang benar tidak akan memberi Anda pekerjaan dengan cara apa pun, tetapi jawaban yang salah akan membuat Anda dibuang ke tempat sampah). Jadi mereka tidak terlalu berharga.
Itu adalah pertanyaan-pertanyaan yang datang kemudian yang perlu dipikirkan dan akan, lebih sering daripada tidak, memiliki beberapa hubungan yang kuat dengan jenis pekerjaan yang dilakukan perusahaan, dan seperti apa dinamika tim.
Jadi jawabannya adalah: keduanya.
sumber
Jika sebagian besar atau semua pertanyaan mereka sama, itu memang hal yang buruk (bagi mereka, itu). Itu mungkin menunjukkan bahwa pewawancara tidak siap untuk tugas itu.
Perhatikan bahwa menggunakan pertanyaan tingkat entri "templat" seperti tes FizzBuzz mungkin dapat diterima untuk membuang yang benar-benar tidak kompeten dengan cepat, tanpa menginvestasikan terlalu banyak waktu dan usaha. Meskipun demikian, variasi pada tema berguna untuk menghindari jawaban langsung dari Google. Kemudian lagi, mudah untuk bertanya kepada kandidat apa kode yang baru saja ditulisnya benar-benar berfungsi dan mengapa ia bekerja (atau tidak). Saya percaya bahwa pewawancara yang mahir secara teknis dapat dengan cepat mendeteksi apakah seseorang hanya berpura-pura tahu jawabannya.
Dan yang lebih penting, jika seseorang lulus tes entry level, pertanyaan yang lebih sulit harus datang, di mana tidak cukup lagi untuk melafalkan jawaban kalengan. Saya pribadi lebih tertarik pada proses berpikir orang yang diwawancarai dan kemampuan pemecahan masalah secara umum, daripada solusi khusus untuk teka-teki. Topik penting lainnya adalah proses dan pendekatan pengembangan - Saya memulai diskusi terbuka dan bukan pertanyaan konkret tentang topik ini. Tidak ada jawaban benar atau salah pada subjek ini, jadi tidak ada kemungkinan untuk mempersiapkan terlebih dahulu. Tetapi dari diskusi saya belajar banyak tentang apakah saya dan tim akan nyaman bekerja dengan kandidat ini.
Jadi beberapa pertanyaan "templat" dalam jumlah terbatas adalah OK, tetapi wawancara yang baik adalah proses mengalir, di mana pewawancara harus beradaptasi dengan situasi, termasuk tingkat keterampilan kandidat (yang diiklankan dan nyata), keadaan mental (gugup / lelah) dll.
sumber
Templat wawancara saya dalam kode semu:
if question (FizzBuzz_type_question) == benar kalau begitu
untuk setiap (pertanyaan q di array_of_more_interesting_questions) pertanyaan (q) lainnya
akhiri wawancara.
sumber
Saya pikir wawancara harus dibagi menjadi:
Aspek sosial (selain dari hal-hal SDM) - Apakah orang ini cocok dengan organisasi kami dengan baik? Apakah dia memiliki sikap yang benar - Apakah dia mau mengikuti gaya manajemen kita? Ini harus asli karena perusahaan dan tim berbeda.
Kesesuaian umum untuk peran - Sekali lagi ini harus berbeda dari satu tempat ke tempat lain
Inti: Subjek pertanyaan mater yang berfokus pada area utama pekerjaan - Ini ilmiah dan tidak perlu asli karena ilmiah.
Kesesuaian pekerjaan sehari-hari: Ini adalah pertanyaan tentang subjek yang Anda harapkan kandidat lakukan setiap hari. Ini mungkin ilmiah, tetapi lebih baik dari pekerjaan nyata yang diharapkannya lakukan. Bagian ini akan bervariasi dari satu tempat ke tempat lain.
sumber