Kami memiliki kandidat wawancara tingkat senior yang gagal dalam nuansa pertanyaan FizzBuzz 1 2 .
Maksud saya, benar-benar, sepenuhnya, sepenuhnya, gagal pertanyaan - bahkan tidak menutup.
Saya bahkan melatihnya untuk berpikir tentang menggunakan loop dan itu 3
dan benar5
- benar layak dipertimbangkan sebagai kasus khusus.
Dia gagal.
Hanya untuk tujuan QA, saya memberikan pertanyaan yang persis sama kepada tiga rekan satu tim; memberi mereka 5 menit; dan kemudian kembali untuk mengumpulkan kode semu mereka. Mereka semua memaku dan belum melihat pertanyaan sebelumnya. Dua bertanya apa masalahnya ...
Pada latihan logika yang berbeda, kandidat menunjukkan beberapa pemahaman tentang beberapa fitur yang tersedia dalam bahasa yang ia pilih untuk digunakan (C #). Jadi bukan seolah-olah dia tidak pernah menulis sebaris kode. Namun logikanya masih stunk.
Pertanyaan saya adalah apakah saya seharusnya memberikan jawaban untuk pertanyaan logika atau tidak.
Dia tahu dia telah menghancurkan mereka, dan mengakuinya kemudian dalam wawancara.
Di sisi lain, dia tidak pernah meminta jawaban atau apa yang saya harapkan untuk dilihat.
Saya tahu latihan coding dapat digunakan untuk mengatur kandidat gagal (sekali lagi, lihat tautan kedua dari atas). Dan saya benar-benar mencoba membantunya pulang menjawab inti pertanyaan. Tapi ini adalah kandidat tingkat senior dan Fizz-Buzz, sejujurnya, sangat mudah bahkan setelah memperhitungkan kegelisahan wawancara.
Saya merasa saya seharusnya menunjukkan kepadanya cara memecahkan masalah sehingga dia setidaknya bisa belajar dari pengalaman. Tetapi sekali lagi, dia tidak bertanya.
Apa cara yang tepat untuk menangani situasi itu?
1 Oke, itu bukan tautan ke pertanyaan FizzBuzz yang sebenarnya, tetapi ini adalah diskusi P.SE yang bagus di sekitar FizzBuzz dan tautan ke berbagai aspeknya.
2 Untuk membantu memperjelas, ini adalah nuansa Fizz-Buzz yang saya minta dan ini dari masalah pertama Project Euler . Pengganti pencetakan Fizz | Buzz untuk menjumlahkan angka-angka dan Anda memiliki pertanyaan mendasar yang sama.
If we list all the natural numbers below 10 that are multiples of 3 or 5, we get 3, 5, 6 and 9. The sum of these multiples is 23. Write a function that finds the sum of all the multiples of 3 or 5 below 1000.
3 Pertanyaan ini menarik lebih banyak perhatian daripada yang saya harapkan, dan saya menghargai semua balasan. Beberapa jawaban kemudian benar-benar sampai pada inti pertanyaan saya, jadi saya akan mengizinkan komunitas meninjau dan memberikan suara sebelum memberikan jawaban "the".
4 Saya memilih jawaban "the" berdasarkan suara komunitas pada saat itu. Dan saya pikir jawaban Yannis cocok untuk wawancara dengan para pengembang baru. Saya pikir respons kolektif yang berfokus pada kurangnya meminta jawabannya juga tepat.
Jawaban:
Sebagian besar wawancara saya dengan siswa mencari posisi magang, dan lebih sering mereka mengacaukan latihan sederhana (?). Saya ingin cara yang mudah dan ramah untuk mengkomunikasikan kesalahan mereka, dan apa yang saya dapatkan cukup sederhana: Saya menyelesaikan latihan sendiri, dan menunjukkan kepada mereka solusi saya setelah mereka selesai dengan kesalahan mereka.
Saya memiliki beberapa diskusi yang sangat menarik dan mengungkapkan dengan kandidat yang dimulai dengan membandingkan pendekatan kami yang berbeda untuk menyelesaikan masalah yang sama. Setelah beberapa saat saya bahkan mengantisipasi beberapa kesalahan, hanya dengan memeriksa sekolah mana yang dihadiri kandidat (beberapa "profesor" adalah ... bodoh). Dan, yah, dalam beberapa kasus bahwa seorang kandidat tidak dapat menemukan solusi apa pun, saya sudah memberikannya untuk yang lain kali.
sumber
Memberi Jawaban
Saya akan mengatakan bahwa jika kandidat tidak cukup tertarik untuk bertanya, saya tidak akan membuang-buang napas, tetapi jawaban @Yannis_Rizos jauh lebih baik.
Wawancara cukup cepat. Saya tahu saya sering mencari hal-hal selama berhari-hari setelah wawancara.
Orang Yang Tidak Dapat Kode FizzBuzz Classic
Saya membayangkan titik mencuat yang besar adalah menyadari% operator. Anda akan berharap bahwa seseorang dapat berpikir untuk membandingkan
(myInt / 3) == (myDouble / 3.0)
tetapi mungkin dengan tekanan wawancara ... Namun, FizzBuzz Classic memaksa pendekatan kasar, menempatkannya dalam kategori masalah algoritma termudah untuk dipecahkan. Sebagai petunjuk, pernahkah Anda mencoba meminta orang untuk hanya kode "Fizz" untuk setengah-kredit dan mungkin menambahkan "Buzz" nanti sebagai perangkat tambahan?Saya pikir jawaban terakhir untuk pertanyaan Anda adalah sangat sulit untuk menemukan kandidat yang baik.
Pertanyaan Wawancara secara Umum
Saya sering merasa lebih mudah dan lebih produktif untuk meminta kandidat menggambarkan proyek pemrograman terakhir yang mereka sukai. Saya sudah 100% sukses dengan pertanyaan ini, yang berarti bahwa orang-orang yang berbicara dengan bersemangat tentang proyek pemrograman dan dapat menjawab pertanyaan teknis tentang itu adalah karyawan yang hebat dan mereka yang tidak bisa, tidak. Ini memiliki efek samping yang bagus untuk membuat kandidat merasa nyaman, dan mendorong diskusi terbuka. Dengan pertanyaan ini, kandidat akan, pada dasarnya, memberi tahu Anda apa yang paling cocok untuk mereka.
Mungkin di sebuah algoritma think tank pertanyaan juga diperlukan, tetapi saya telah mengabaikannya demi pertanyaan "proyek favorit".
Jumlah (Anak) dari FizzBuzz
Pertanyaan wawancara Anda tidak setara dengan FizzBuzz:
Di mana FizzBuzz Classic memaksa Anda untuk melalui n iterasi (untuk mencetak setiap angka atau Fizz / Buzz), masalah Anda dapat dilakukan dalam n / 5 + n / 3 + n / 15 iterasi, atau bahkan tanpa iterasi - perbaikan langsung perhitungan titik dimungkinkan. Program berikut membandingkan tiga metode ini:
Output (jumlah FizzBuzz <1000):
Dengan n yang lebih besar untuk perbandingan kinerja:
Catatan untuk mereka yang memilih ini sebagai off-topic
Inti dari menghadirkan solusi untuk pertanyaan ini adalah untuk menunjukkan bahwa sementara solusi brute force untuk FizzBuzz mirip dengan FizzBuzz Classic, solusi yang lebih baik untuk masalah Sum tersedia, menjadikannya masalah yang berbeda secara mendasar. Jumlah FizzBuzz sangat rumit jika Anda tidak ingat rumus yang tepat untuk jumlah seri, atau tidak menyadari bahwa itu berlaku ketika melangkah 3 atau 5.
Jika Anda menurunkan kembali rumus untuk jumlah seri dengan memecah seri menjadi dua, membalikkan satu bagian, dan memasangkannya, Anda mendapatkan (n + 1) (n / 2) yang dapat membawa Anda ke jalan yang benar-benar berantakan. sejauh pembagian bilangan bulat dan sisa terpotong yang bersangkutan. Versi (n (a1 + an)) / 2 dari rumus ini sangat penting untuk jawaban sederhana untuk semua nilai n.
sumber
t = { |i| (i * (i+1)) / 2 }; fizzbuzz = { |n| 3 * t((n-1)/3) + 5 * t((n-1)/5) }
Saya tidak peduli untuk level apa wawancara ini, juga tidak benar-benar apakah itu pertanyaan tingkat "FizzBuzz" atau pertanyaan tingkat lanjut. Jika Anda meminta kandidat untuk memecahkan pertanyaan, dan mereka tidak bisa, tetapi bahkan tidak repot-repot meminta jawaban yang tepat maka mereka tidak sepadan dengan waktu Anda. Bagaimana mungkin kamu bisa jadi sangat malas secara intelektual?!?
Dan bahkan jika Anda benar-benar bau sebagai seorang programmer dan hanya mencoba cara Anda kerbau ke pekerjaan, mengapa Anda setidaknya tidak begitu pragmatis untuk mendapatkan jawaban yang benar sekarang, sehingga Anda tahu itu untuk wawancara berikutnya?
Jadi tidak, Anda tidak boleh "memberikan" jawabannya, tetapi Anda harus mengharapkan agar kandidat bersikeras mendengar jawaban yang benar setelah mereka gagal. Jika tidak, itu bendera merah besar di buku saya.
Jika seseorang menghancurkan FizzBuzz dalam wawancara Dev tingkat junior karena mereka tidak dapat mengingat operator modulus dan tidak bisa memaksa diri untuk melanjutkan tanpanya, tetapi mereka kemudian bersemangat untuk melakukannya lagi setelah Anda menjelaskan jawaban yang tepat, atau setidaknya berbicara melalui kode yang tepat dengan Anda, maka itu hampir sama baiknya dengan menjawabnya dengan benar.
sumber
Saya mengetik fizzbuzz saat di telepon dengan pewawancara saat pra-layar. Itu adalah sesuatu yang, bahkan jika semua orang belum pernah mendengar, Anda harus dapat bersatu setelah satu semester tentu saja bekerja tetapi pasti setelah memperoleh status "senior".
Benar-benar tidak ada pemulihan dari tidak bisa melakukan itu. Ini adalah salah satu gangguan yang perlu Anda lakukan untuk berjaga-jaga.
Saya akan mengatakan bahwa masuk akal untuk menyampaikannya sebagai pra-layar sehingga Anda tidak membuang waktu semua orang dengan membawanya ke lokasi untuk wawancara.
sumber
Sangat menarik untuk mengetahui apa yang menurut Anda jawaban "benar" untuk pertanyaan FizzBuzz-ish Anda. Dari tempat saya duduk, yang bagus (dalam C) ditulis untuk surat pertanyaan Anda adalah:
Yang lebih baik mungkin:
Kenapa sih Anda menulis program untuk melakukan itu ketika Anda dapat menghitungnya langsung?
Intinya adalah bahwa ada lebih dari satu cara untuk menguliti kucing, dan fakta bahwa kandidat tersebut tidak segera mulai menulis
for
loop danmod
operator tidak berarti bahwa dia bodoh. Jika Anda ingin tahu apa yang diketahui kandidat, diskusikan masalahnya - cari tahu apa yang dia pikirkan. Jika dia mandek atau bingung, cari tahu di mana dan mengapa. Dia mungkin menuntun Anda ke pendekatan yang tidak pernah Anda pertimbangkan.Sebagai pewawancara, itu bukan tempat Anda untuk memberi pelajaran pada kandidat . Jika mereka benar-benar tidak tahu cara menulis kode, sama sekali tidak perlu mempermalukan mereka dengan memikirkan seberapa banyak mereka tidak tahu. Jika mereka cukup tertarik untuk bertanya, maka jangan ragu untuk berbagi. Jika tidak, selesaikan wawancara, ucapkan terima kasih atas waktu mereka, dan lanjutkan ke kandidat berikutnya.
sumber
discuss the problem
, elemen itu muncul dengan pertanyaan lain selama wawancara. Sayangnya, kandidat itu ... kurang datang dalam menjawab. Saya tidak menambahkan aspek itu ke dalam pertanyaan awal karena saya benar-benar berusaha untuk tetap dalam pedoman P.SE untuk "subyektif yang baik.""Masalah" Anda adalah bahwa Anda adalah manusia yang berempati, jadi sulit untuk menonton seseorang bergumul dengan masalah yang Anda tahu jawabannya (ini juga merupakan masalah jika Anda menjalankan studi kegunaan). Dari perspektif tugas-sebagai-pewawancara, Anda sama sekali tidak berkewajiban untuk mengajar orang yang diwawancarai bagaimana memprogram atau memecahkan masalah, atau solusi untuk masalah yang Anda tanyakan.
Ketika Anda melatih orang yang diwawancarai, itu bukan supaya mereka bisa mendapatkan jawaban yang benar. Ini agar Anda dapat melihat apakah mereka benar-benar tidak dapat menyelesaikan masalah atau jika mereka hanya terpaku pada satu atau dua kesalahan atau kesalahpahaman.
Jadi jika Anda ingin memberikan solusi kepada orang yang diwawancarai setelah fakta, Anda melakukannya murni untuk diri sendiri. Secara umum, saya lebih suka menggunakan waktu itu untuk memungkinkan orang yang diwawancarai mencoba masalah lain. Tetapi seorang programmer "senior" yang tidak dapat menjawab FizzBuzz mungkin tidak ada dalam daftar. Jika Anda memutuskan untuk memberikan solusi, pastikan Anda tidak membodohi diri sendiri dengan berpikir bahwa wawancara berjalan lebih baik daripada yang terjadi (jika Anda menemukan diri Anda berpikir, "dia tidak bisa menyelesaikan masalah, tetapi ketika saya menjelaskannya, dia memahaminya dengan baik", lalu Anda berada di jalur berbahaya).
Dan ya, saya telah menjadi orang yang diwawancarai yang berada di atas kepalanya dan bahkan tidak bisa melakukan upaya pertama untuk menyelesaikan masalah wawancara. Itu hanya berarti bahwa saya perlu belajar lebih banyak untuk mengejar pekerjaan di bidang itu.
sumber
Mendapatkan jawaban yang tepat bukanlah bagian penting dari tes ini. Apa yang Anda ukur adalah pendekatan seseorang terhadap penyelesaian masalah, bagaimana mereka terlibat dengan pertanyaan, apa pun yang kreatif atau menarik yang mereka ajukan sepanjang jalan; hal semacam itu. Bahkan jika mereka mendapatkan jawaban yang salah, mereka mungkin masih layak dengan kriteria ini.
OK, tidak tahu operator mod tidak bisa dimaafkan, dan berdasarkan metrik yang saya berikan pada kandidat ini tampaknya masih ada penghapusan, tetapi saya tidak percaya bahwa hanya memberikan jawaban yang tepat kepada kandidat ini akan menjadi apa saja manfaat.
Ini berasal dari pendapat pribadi Anda dari sini. Apakah Anda ingin memberikan umpan balik wawancara dengan tujuan membantu kandidat melakukan lebih baik dalam wawancara di masa depan (dan agar pewawancara di masa depan tidak harus menderita dengan apa yang baru saja Anda alami)? Jika demikian, sesuaikan umpan balik Anda dengan istilah yang baru saja saya uraikan di atas: beri tahu mereka bahwa ini bukan hanya tentang jawaban yang benar tetapi bagaimana mereka bekerja untuk sampai pada jawaban adalah faktor penting.
sumber
how they work to arrive at the answer is a critical factor.
Sementara saya mengharapkan operator modulus untuk digunakan, itu hanya karena itulah bagaimana saya akan menyelesaikannya. Saya sangat terbuka untuk melihat pendekatan lain yang memecahkan masalah tanpa membuat kesalahan kondisi batas mencolok (lihat berbagai komentar saya tentang pendekatan dengan rekursi ....).Cara saya melihatnya, tidak ada situasi untuk ditangani. Dengan asumsi bahwa Anda telah menolak lamarannya, kurangnya minat calon (yang jelas) bukanlah sesuatu yang perlu Anda perhatikan sendiri.
Memang, bahkan jika ia tidak bertanya, Anda tidak berutang padanya penjelasan. Dan jika Anda berbicara dengan staf SDM Anda tentang hal itu, mereka mungkin memberi tahu Anda bahwa diskusi lebih lanjut dengan kandidat tidak disarankan karena alasan hukum.
Perlu juga dicatat bahwa masalah FizzBuzz memiliki jawaban "terbaik" yang berbeda tergantung pada bagaimana Anda menanyakannya. Jika Anda meminta solusi "paling sederhana" dan solusi "paling efisien", jawaban terbaiknya sangat berbeda. Dan ini bisa mewarnai penilaian Anda secara tidak adil ... jika Anda tidak jelas dalam cara Anda mengajukan pertanyaan. (Di sisi lain, kandidat yang baik / berpengalaman akan memiliki pandangan jauh ke depan untuk mengklarifikasi bahwa sebelum mulai kode ...)
sumber
Untuk menjawab pertanyaan Anda, tidak, saya tidak akan memberikan jawabannya. Jika orang tersebut ingin menjadi insinyur perangkat lunak yang lebih baik, mereka akan menemukan jawabannya. Jika Anda memberi mereka jawaban, Anda merampok mereka dari kesempatan ini.
Pertanyaan yang lebih relevan adalah kapan Anda bisa menyebut diri Anda seorang pengembang senior? Ini bervariasi antara organisasi dan negara. Misalnya, perusahaan tempat saya bekerja dengan Insinyur Perangkat Lunak yang dianggap memiliki pengalaman 5 tahun sebagai senior. Tidak ada penekanan pada kualitas pengalaman, hanya panjangnya.
Sampai kami datang dengan standar yang akan mengkategorikan semua Insinyur Perangkat Lunak terlepas dari bahasa mereka, kami memiliki individu yang menentukan tingkat keterampilan mereka. Dan kami akan terus mendengar "Insinyur Senior" gagal dalam tes keterampilan paling dasar.
Beberapa minggu yang lalu pertanyaan diajukan "Kapan Anda harus menyebut diri Anda Senior Developer" . Saya juga menulis posting blog tentang topik tersebut.
sumber