Haruskah saya memberikan jawaban untuk latihan koding wawancara yang gagal? [Tutup]

14

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 3dan 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.

Komunitas
sumber
34
Potong mereka dan lanjutkan harimu. Sejauh yang saya ketahui, kegagalan FizzBuzz di "tingkat senior" adalah sengaja dan jahat menghabiskan waktu saya.
Steven Evers
6
Saya baru-baru ini mewawancarai beberapa posisi di daerah saya, dan orang-orang yang memerlukan kode menunjukkan kepada saya bahwa mereka kesulitan menemukan kandidat tingkat senior yang dapat lulus tes "FizzBuzz" mereka sendiri. Dalam setiap kasus, reaksi saya adalah "Anda tidak bisa serius". Rupanya ada banyak programmer mengerikan yang menyamar sebagai senior yang bahkan tidak dekat.
Joel Etherton
6
@ JoelEtherton - Hal yang sama di sekitar sini. Saya telah mendorong layar ponsel ke mana pun saya pergi. Jika Anda melamar menjadi Senior menggunakan C # dan tidak dapat memberi tahu kami perbedaan antara tipe nilai dan tipe referensi, Anda tidak akan mendapatkan wawancara.
Telastyn
3
@ 0A0D, memimpin tim adalah jenis keterampilan berbeda dari menjadi pengembang yang baik. Saya telah melihat pimpinan tim yang juga merupakan pengembang yang buruk.
Kyralessa
4
@ JoelEtherton, jangan bertindak terkejut. Saya pikir "199 dari 200 pelamar tidak dapat kode" hanyalah hiperbola sampai saya benar-benar mulai membantu menyaring dan mewawancarai kandidat. Pengalaman bertahun-tahun (dugaan) sama sekali tidak penting. Jabatan tidak penting. Sebagian besar pelamar memang sangat junior, apakah mereka tahu atau tidak.
Anthony Pegram

Jawaban:

15

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.

yannis
sumber
Masuk akal; Saya sedang mencari pekerjaan baru baru-baru ini, dan saya menemukan bahwa sebagian besar pewawancara melakukan hal yang sama ketika saya memberikan jawaban yang salah (atau sedikit "tidak tepat jawaban") untuk pertanyaan mereka. Ini adalah praktik yang sangat bagus. Sebagian besar karena itu membuka calon (mis. Saya) dan membuat wawancara itu sendiri lebih menarik dari kedua belah pihak. Tapi tentu saja, kami mendiskusikan template, RAII dan multithreading di C ++. Pertanyaannya adalah apa yang Anda katakan kepada orang yang tidak bisa menyelesaikan fizzbuzz?
Chani
11
@RitwikG Jujur, jika kandidat sedang mewawancarai untuk posisi pemrograman dan tidak bisa mengatasi fizzbuzz, saya mungkin akan ... tertawa (hei, saya tidak pernah mengatakan saya adalah pewawancara yang baik ;). Yang mengatakan, beberapa bulan yang lalu saya kehilangan sekitar beberapa hari melawan apa yang berubah menjadi OBOE yang sangat sepele dalam kode saya. Kita semua memiliki saat-saat libur, dan saya tidak akan benar-benar terpaku pada kandidat yang mengacaukan satu latihan, saya mungkin akan pindah ke yang berikutnya dengan cepat. Jika mereka gagal yang berikutnya juga, saya mungkin akan berterima kasih atas waktu mereka dan melanjutkan.
yannis
1
@YannisRizos Itu mungkin pendekatan yang bagus; selalu ada kemungkinan bahwa orang tersebut tidak melakukannya dengan baik dalam situasi wawancara, atau entah bagaimana menghindari operasi modulo dalam pekerjaan mereka (walaupun itu bukan pertanda baik, untuk sedikitnya). Dalam pengalaman saya, sejumlah besar pelamar bingung ketika diminta untuk menulis loop sederhana (dalam bahasa apa pun pilihan mereka), bahkan untuk posisi senior. Sekarang bahwa , saya menemukan benar-benar mustahil untuk membenarkan.
Daniel B
Itu juga beberapa wawasan yang bagus tentang prosesnya. Calon itu agak gugup, dan saya lebih dari rela memberikan uang saku untuk itu. Ketika dia akhirnya mulai berbicara melalui upayanya pada solusi, itu hanya berbelit-belit dan menciptakan kondisi batas yang dia lewatkan.
15

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:

Jika kita mendaftar semua bilangan asli di bawah 10 yang merupakan kelipatan 3 atau 5, kita mendapatkan 3, 5, 6 dan 9. Jumlah kelipatan ini adalah 23. Tulis fungsi yang menemukan jumlah semua kelipatan dari 3 atau 5 di bawah 1000.

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:

public static void main(String[] args) {
  long n = Long.valueOf(args[0]).longValue();
  long sum = 0;
  long ms = System.currentTimeMillis();
  // Brute force method  Performance: cn
  for (long i = 1; i <= n; i++) {
    if ((i % 3) == 0) { sum += i;
    } else if ((i % 5) == 0) { sum += i; }
  }
  System.out.print("Brute force sum:    " + sum);
  System.out.println(" time: " + (System.currentTimeMillis() - ms));
  ms = System.currentTimeMillis();

  // Second solution: iterate through only numbers we are
  // interested in.  Performance: c * (n/3 + n/5 + n/15)
  // We counted multiples of 15 twice, so subtract one of them
  sum = countSum(n, 3) + countSum(n, 5) - countSum(n, 15);
  System.out.print("Only multiples sum: " + sum);
  System.out.println(" time: " + (System.currentTimeMillis() - ms));
  ms = System.currentTimeMillis();

  // Third solution: Use high school algebra.  Performance: c
  sum = sumSeries(n, 3) + sumSeries(n, 5) - sumSeries(n, 15);
  System.out.print("Sum of series:      " + sum);
  System.out.println(" time: " + (System.currentTimeMillis() - ms));
}

// Iteravely sum all multiples of skip
private static long countSum(long n, long skip) {
  long skipTotal = skip;
  long grandTotal = 0;
  while (skipTotal <= n) {
    grandTotal += skipTotal; skipTotal += skip;
  }
  return grandTotal;
}

// Thanks to @Caleb for pointing this out!  High school algebra
// tells us that the sum of a series is: (n * (a1 + an)) / 2
// where a1 is the first term and an is the nth term.  E.g. The
// sum of a series of 3 is: (n/3 * (3 + n - (n % 3))) / 2
// Since we are thinking about performance here, we'll shift
// right one instead of dividing by 2 for style points.  ;-D
private static long sumSeries(long n, long skip) {
  return (n/skip * (skip + n - (n % skip))) >> 1;
}

Output (jumlah FizzBuzz <1000):

$JDK_HOME/bin/java FizzBuzzNot 999
Brute force sum:    233168 time: 0
Only multiples sum: 233168 time: 0
Sum of series:      233168 time: 0

Dengan n yang lebih besar untuk perbandingan kinerja:

$JDK_HOME/bin/java FizzBuzzNot 1000000000
Brute force sum:    233333334166666668 time: 4744
Only multiples sum: 233333334166666668 time: 818
Sum of series:      233333334166666668 time: 0

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.

GlenPeterson
sumber
3
Ini dapat dihitung secara langsung (Ruby): t = { |i| (i * (i+1)) / 2 }; fizzbuzz = { |n| 3 * t((n-1)/3) + 5 * t((n-1)/5) }
kevin cline
1
@ GlenH7 Ya, saya menghapus komentar saya karena itu buzzkill. Glen pantas mendapatkan alat peraga untuk analisisnya, bahkan jika itu tidak menjawab pertanyaan AT ALL: D (Selain itu, saya benar-benar membuat kode dan mencoba solusi saya sendiri beberapa waktu yang lalu)
Andres F.
2
Anda mencari jumlah seri, mengingat seri ini adalah modulo = 0, rumus n / 2 * (m + nm) dapat digunakan. Di mana m = jumlah modulo dan n = jumlah elemen dalam seri (alias lantai (x / m). Setelah itu mudah, S (3) + S (5) - S (3 * 5) [sehingga beberapa angka jangan dihitung dua kali].
jmoreno
3
Salah satu alasan Anda mungkin mengalami masalah, adalah bahwa Anda menghitung beberapa angka dua kali (yang dapat dibagi dengan 15). Untuk program contoh lihat ideone.com/clone/oNWrhJ
jmoreno
8

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?

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.

Graham
sumber
1
Mengapa? Anda bisa Google jawabannya nanti. FizzBuzz cukup populer. Saya akan jujur ​​peduli jika seseorang tidak tahu pembagian modulus.
Brian
Saya akan memberinya kredit karena mencoba membuat sesuatu alih-alih operator modulus, tetapi dia bahkan tidak sampai ke titik itu. Saya pikir Anda memiliki poin bagus dengan berfokus pada kegagalannya untuk meminta jawaban. Pengamatan Anda sejalan dengan beberapa tantangan lain yang muncul selama wawancara.
Saya benar-benar berpendapat tentang FizzBuzz ... tetapi ini adalah jawaban yang tepat. Jika kandidat tidak meminta jawaban, jangan berikan kepada mereka.
James P. Wright
@ JamesP.Wright - Saya setuju sampai batas tertentu, dan pergi ke wawancara, saya agak malu untuk menggunakannya sebagai pertanyaan coding utama. Itu seharusnya menjadi ridiculously mudah, dan saya bahkan diawali dengan peringatan untuk tidak over-membaca pertanyaan. Saya memiliki tindak lanjut yang juga seharusnya mudah, dan kemudian saya memiliki yang ketiga yang memungkinkannya untuk menunjukkan keterampilan pengembangan / desain tingkat yang lebih tinggi. Kami tidak pernah sampai pada pertanyaan ketiga ....
1
@ 0A0D, "matematika" yang terlibat dalam FizzBuzz hanya memeriksa apakah variabel yang diberikan dapat dibagi oleh 3 dan / atau dengan 5. Tingkat matematika itu ada di hampir setiap aplikasi yang Anda tulis. Bahkan "pelaku bisnis" seperti saya yang hanya mengimplementasikan proyek yang sama berulang kali menggunakan tingkat matematika ini. GlenH7, saya bahkan tidak yakin apakah menggunakan rekursi di FizzBuzz akan membuat saya terkesan atau menakut-nakuti saya .... Tentu saja tampaknya seperti pembunuhan berlebihan yang berbahaya.
Graham
4

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.

Michael Brown
sumber
Untuk pra-layar kami, kami telah meminta beberapa kode sampel, yang disediakan. Kode itu memiliki beberapa fitur bahasa C # menengah ke lanjutan, jadi saya benar-benar berharap dia akan menjawab pertanyaan logis hanya dalam satu atau dua menit.
7
Ketika kode sampel yang disediakan tidak sesuai dengan pengetahuan yang ditunjukkan dalam sebuah wawancara, otak saya langsung menjadi curiga terhadap kode sampel.
Graham
@Graham: Pekerjakan dia sebagai pekerja sementara selama 6 bulan ..
Brian
@ 0A0D Sayangnya saya belum pernah bekerja di tempat yang memungkinkan fleksibilitas semacam itu. Jika posisi yang diiklankan adalah pertunjukan penuh waktu, itu SEMUA yang dapat kami tawarkan kepada orang tersebut.
Graham
3
Tidak ada pagar dalam skenario itu. Jika "kode sampel" -nya menunjukkan pengetahuan yang kuat dan dia tidak bisa membuat kode fizzbuzz, tarik sampel dan tanyakan padanya secara spesifik. Jika dia tidak dapat mendukungnya, maka sudah waktunya untuk saluran favorit saya "kami masih memiliki beberapa kandidat untuk ditinjau, kami akan menghubungi Anda."
Michael Brown
4

Saya bahkan melatihnya untuk berpikir tentang menggunakan loop dan bahwa 3 dan 5 benar-benar layak dipertimbangkan sebagai kasus khusus.

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:

int f(void) {
    // sum the multiples of 3 and of 5 and subtract multiples of 15 so we don't count them twice
    return ((1000/3)/2)*(999+3) + ((1000/5)/2)*(995+5) - ((1000/15)/2)*(990+15);
}

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 forloop dan modoperator 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.

Pertanyaan saya adalah apakah saya seharusnya memberikan jawaban untuk pertanyaan logika atau tidak.

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.

Caleb
sumber
+1 untuk jawaban solid di paragraf terakhir Anda. Dan Anda menyampaikan poin yang baik bahwa saya seharusnya mengatakan "sebuah jawaban" alih-alih jawaban "the". Ada beberapa cara untuk menyelesaikannya. Adapun 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."
1
"Ini bukan tempatmu untuk memberi pelajaran pada kandidat" - Saya tidak setuju. Seorang programmer yang baik selalu belajar. Jika mereka merespons pelajaran Anda dengan bertindak bersyukur karena mempelajari hal-hal baru, itu pertanda bahwa mereka adalah programmer yang baik. Jika mereka mengabaikan pelajaran Anda, kemungkinan besar mereka adalah programmer yang menyebalkan.
nbv4
Jika saya pewawancara Anda, dan Anda memberi saya jawaban seperti itu, saya akan merujuk Anda ke distrik sekolah yang membutuhkan guru aljabar. FizzBuzz adalah tentang menunjukkan pengetahuan dasar pemrograman sehingga pewawancara dapat beralih ke pertanyaan yang akan membedakan Anda dari programmer lain yang pada dasarnya layak. Jawaban Anda cerdas, tetapi mereka tidak menetapkan bahwa Anda memahami perulangan, aritmatika modular, dll., Meninggalkan wawancara untuk maju dengan asumsi bahwa orang yang tahu aljabar juga tahu pemrograman (salah), atau hanya menjabat tangan Anda dan lanjutkan (lebih mungkin).
user1172763
@ user1172763 Itulah intinya - tidak seperti FizzBuzz, pertanyaan wawancara OP dapat dijawab dengan perhitungan tunggal. Oleh karena itu pilihan yang buruk jika intinya adalah untuk melihat apakah kandidat dapat menulis loop. Anda tidak dapat mengharapkan seorang kandidat untuk memilih solusi yang lebih lambat, jauh lebih bertele-tele dengan asumsi bahwa Anda mengajukan pertanyaan untuk alasan tertentu (dan tidak dinyatakan). Memang, pewawancara bisa dengan mudah menjadi pertanyaan "trik" untuk melihat apakah kandidat memperhatikan bahwa perulangan benar-benar tidak perlu. Membaca pikiran Anda bukanlah tanggung jawab kandidat.
Caleb
2

"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.

Tom Panning
sumber
2

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.

Maximus Minimus
sumber
+1 untuk komentar 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 ....).
2

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?

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 ...)

Stephen C
sumber
2

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.

Chuck Conway
sumber
Bisakah Anda merevisi tautan blog Anda?
André
@ Tautan André diperbarui.
Chuck Conway