Apakah “Jelaskan idiom RAII” adalah pertanyaan skrining C ++ yang baik? [Tutup]

13

Sebuah perusahaan tempat saya bekerja telah meminta saya untuk melakukan pemeriksaan telepon kandidat untuk memastikan mereka tidak sepenuhnya malu ketika mengirim seseorang ke klien potensial.

Ternyata cukup banyak orang ditempatkan untuk peran pengembang C ++. Saya tidak menghabiskan banyak waktu di C ++, tetapi saya telah melakukan beberapa proyek sepele dan non-sepele dalam bahasa ini. Saya pikir "Jelaskan idiom RAII" akan menjadi pertanyaan softball yang bagus yang bisa dijawab oleh pengembang C ++ paling serius saat setengah tertidur, dan akan memungkinkan saya untuk beralih ke pertanyaan yang lebih menarik tentang pengalaman. Tetapi ternyata orang yang memiliki pengalaman C ++ 10+ tahun tidak mengenali istilah tersebut, bahkan jika saya memperluas akronim menjadi "Akuisisi Sumber Daya adalah Inisialisasi." Salah satu kandidat mengatakan bahwa dia merasa tidak selalu praktis untuk menerapkan teknik dalam pengembangan Windows, yang saya pikir merupakan sentimen aneh, tetapi saya dapat melihat beberapa contoh yang bisa mendukung garis pemikiran itu.).

Bahkan beberapa pengembang C ++ saya tahu cukup baik untuk menilai kompetensi mereka mengatakan mereka tidak mengenali istilah tersebut, tetapi setelah membaca ringkasan teknik, mengatakan "Oh, ya, saya tidak tahu yang punya nama. Saya hanya memikirkan hal-hal itu sebagai sesuatu yang harus Anda lakukan . " Saya ingat istilah dari buku Stroustrup edisi kedua, meskipun dampak sepenuhnya tidak meresap pada saat itu.

Jadi, apakah "Bisakah Anda menjelaskan idiom RAII kepada saya?" pertanyaan penyaringan yang adil? Apakah masuk akal untuk mengharapkan semua pengembang C ++ yang kompeten untuk memahaminya? Apakah istilah ini lebih esoteris daripada yang saya pikirkan? Dengan asumsi seorang kandidat tidak tahu istilah itu, apakah ada pertanyaan lanjutan yang dapat membantu saya menggoda apakah mereka setidaknya telah menginternalisasi praktik-praktik yang membuat RAII berfungsi? Apakah ada pertanyaan "weeder" alternatif yang lebih baik yang memberikan kandidat sedikit kebebasan dalam menjawab, dan membantu kandidat menunjukkan pemahaman mereka tentang pengembangan C ++?

Mengedit untuk menambahkan : Untuk memperjelas, saya bukan jenis pewawancara yang mendiskualifikasi orang karena mereka tidak tahu kata kunci dan akronim. Namun, saya pikir masuk akal untuk berharap bahwa seorang programmer C ++ yang berpengalaman telah menginternalisasi praktik-praktik yang baik untuk manajemen sumber daya. Saya juga berpikir bahwa penting untuk memverifikasi bahwa seorang kandidat memahami beberapa "dasar" tentang teknologi yang mereka klaim keahliannya sebelum beralih ke pertanyaan yang lebih menarik tentang desain, pemecahan masalah, dll. Saya pikir apa yang saya cari adalah cara yang baik untuk mengajukan pertanyaan terbuka, cocok untuk digunakan dalam penyaringan telepon singkat, yang dapat saya gunakan untuk menilai pemahaman dasar seorang kandidat tentang praktik manajemen sumber daya yang baik di C ++, sebelum saya mengajukan pertanyaan "sulit".

Jason True
sumber
3
"Bahkan beberapa pengembang C ++ yang saya kenal cukup baik untuk menilai kompetensi mereka mengatakan mereka tidak mengenali istilah". Baik. "Jadi, apakah" Bisakah Anda menjelaskan idiom RAII kepada saya? "Pertanyaan penyaringan yang adil?" Kenapa bertanya? Anda tidak dapat menemukan orang yang tahu tentang itu. Apa lagi yang perlu Anda ketahui yang belum Anda ketahui? Mungkin Anda harus meremehkan subjek ini (karena Anda sudah tahu jawabannya) dan fokus pada "Apakah ada alternatif yang lebih baik" weeder "pertanyaan" yang mungkin menarik. Kecuali bahwa itu adalah pendapat yang tidak masuk akal, yang tidak dapat ditoleransi dengan baik.
S.Lott
9
Idiom berubah, praktik yang baik tidak. Alih-alih bertanya tentang idiom tertentu, bagaimana dengan hanya bertanya, "langkah apa yang Anda ambil dalam merancang kelas untuk memastikan itu tidak bocor?"
Blrfl
Cukup adil, meskipun ukuran sampel saya rendah dan saya tidak aktif lagi dalam komunitas C ++, jadi saya tidak tahu apa yang dianggap penting oleh komunitas saat ini. Saya pada dasarnya mencoba mencari cara untuk memperluas daftar pertanyaan saya yang dapat digunakan untuk menilai pengetahuan C ++ nyata di luar, misalnya, dasar-dasar sintaksis.
JasonTrue
2
masalah Anda bukan yang saya harapkan. Saya berasumsi Anda akan menemukan seseorang yang tahu apa itu RAII, dipekerjakan, dan baru kemudian Anda mengetahui mereka masih payah dalam pengkodean.
Kevin
1
@JasonTrue: Saya pikir pertanyaan buzz aneh seharusnya pertanyaan pemrograman yang sebenarnya seperti membalikkan string. Tapi bagaimanapun saya pikir itu pertanyaan yang bagus. Anda juga dapat mempertimbangkan untuk menanyakan fitur apa dalam c ++ - 0x yang dianggap paling menarik atau penting oleh orang yang diwawancarai. Ini sedikit lebih sulit tetapi jika Anda mendapatkan jawaban yang baik itu mungkin berarti hal-hal yang baik Dan pertanyaannya selalu bisa kembali ke, 'perpustakaan apa yang paling penting / menarik' jika Anda mendapatkan tatapan kosong.
Kevin

Jawaban:

24

Anda tampaknya telah menemukan bahwa pengembang C ++ yang Anda kenal dari pengalaman kompeten tidak terbiasa dengan akronim itu atau bahkan ekspresi penuh. Itu saja tampaknya menunjukkan bahwa pertanyaan itu tidak cocok sebagai pertanyaan penyaringan selama panggilan telepon.

Di sisi lain, Anda bisa mencapai titik yang sama melalui cara yang lebih bundaran dengan mengajukan skenario. Sesuatu seperti: "Anda menerapkan kelas Log yang akan menulis informasi logging ke file. Jelas, Anda harus memiliki variabel anggota yang merupakan file handle (std :: FILE *). Di mana Anda mengalokasikan dan membebaskan file ini menangani?" Jika kandidat mulai berbicara tentang membuat metode open () dan close () daripada mengalokasikan file handle di konstruktor dan membatalkan alokasi handle di destructor, Anda bisa menindaklanjuti dengan menanyakan hal-hal seperti bagaimana kelas mereka akan berperilaku jika kode panggilan menimbulkan pengecualian, dll.

Gua Justin
sumber
Saran yang bagus. Saya suka pendekatan ini.
JasonTrue
Membutuhkan terlalu banyak waktu dalam wawancara telepon.
HelloWorld
15

Saya tidak berpikir itu adalah pertanyaan praktis seperti yang diusulkan. Saya pikir Anda akan menemukan banyak pengembang akan jatuh ke dalam kamp "oh, ya, saya tidak tahu yang punya nama". Saya menyarankan agar Anda menguji kandidat pada konsep dan bukan nama konsep. Berikan mereka contoh kode dan tanyakan mengapa itu tidak lengkap atau minta mereka menunjukkan bahwa mereka tahu konsepnya.

GEL
sumber
3

Saya pikir itu adalah pertanyaan yang valid. Meskipun saya tidak tahu seberapa populer istilah RAII (di tim saya, kami memang menggunakan istilah RAII sepanjang waktu) tetapi konsep penanganan sumber daya adalah penting terutama jika Anda ingin pengecualian-aman dan multi-threaded-safety juga .

Armando
sumber
3

Yah, saya tahu bahwa ketika saya ingin tahu apakah seseorang kompeten, hal pertama yang saya lakukan adalah memeriksa pengetahuan mereka tentang akronim. Setelah itu didirikan, saya memastikan mereka tahu nama-nama teknologi lain yang menurut saya terdengar keren. Jika mereka masih ada di sana setelah itu, maka saya meminta mereka daftar warna favorit mereka.

Saya tidak tahan dengan hal semacam ini. Maksudku, di akhir wawancara, ini sirene dan lonceng peringatan. Saya tidak ingin bekerja di tempat yang sebenarnya penting bagi saya untuk mengetahui mnemonik aneh yang menurut atasan saya "mendasar". Saya tidak dapat diganggu untuk mempelajari nama-nama orang yang telah saya tangani selama bertahun-tahun, jadi saya yakin tidak menyia-nyiakan ruang otak dengan akronim lucu yang menggambarkan praktik terbaik.

Lihatlah kode saya. Tanya saya bagaimana saya akan melakukan sesuatu. Saya akan mencorat-coret papan tulis sampai sapi pulang. Saya akan memberi kode aplikasi kepada Anda. Jangan beri aku pertanyaan sepele omong kosong. Trivia selalu hit atau miss, dan itu tidak pernah mendasar.

Satanicpuppy
sumber
Saya tidak cenderung mengajukan banyak pertanyaan pengetahuan esoteris dalam skrining wawancara, tetapi ada sedikit uji tuntas yang harus saya lakukan untuk memastikan seseorang tidak sepenuhnya tidak kompeten. Oleh karena itu, saya mencari pertanyaan terbuka yang memungkinkan saya memverifikasi beberapa tingkat pengetahuan sementara memungkinkan kandidat untuk memamerkan latar belakang mereka sendiri. Saya mengharapkan "sebagian" pengetahuan langsung jika seseorang mengatakan mereka tahu teknologi X di resume mereka; pertanyaan saya intinya adalah, pengetahuan apa yang harus saya harapkan dari seorang programmer C ++ yang merupakan gerbang yang berguna untuk percakapan lebih lanjut?
JasonTrue
4
@ alasan: Ya, saya mungkin akan dapat mengingat akronim RAII selama beberapa bulan. Apakah pengetahuan singkat itu membuat saya kompeten, meskipun saya belum menyentuh C ++ selama bertahun-tahun? Itu sepele sepele. Tanyakan kepada mereka bagaimana mereka menangani kunci, dan pastikan mereka memahami PENGETAHUAN yang sebenarnya, bukan akronim yang aneh.
Satanicpuppy
1
@ alasan: Saya setuju. Saya hanya tidak setuju bahwa dasar-dasarnya termasuk hal-hal sepele semacam ini. Seorang idiot mungkin tahu itu, dan seorang pakar mungkin tidak. Anda mendasarkan proses seleksi Anda pada sesuatu yang tidak relevan dengan keterampilan.
Satanicpuppy
5
Mengetahui apa yang disebut RAII bukanlah pengetahuan esensial. Tetapi secara otomatis meraih polanya.
btilly
2
RAII adalah konsep dasar dari C ++ yang baik, dan istilah ini telah ada selama setidaknya 20 tahun. Saya pikir menganggapnya sebagai hal sepele agak tidak adil. Meskipun Anda dapat memiliki pengembang C ++ yang baik yang tidak tahu istilahnya, bagi saya itu berbau seseorang yang tidak meneliti kerajinan mereka.
Kaz Dragon
1

Jika tujuan Anda adalah untuk menyaring total yang tidak kompeten dengan cepat, coba sesuatu seperti ini:

Tes FizzBuzz

Kemudian Anda dapat meninggalkan konsep dan praktik C ++ kepada mereka yang berada di posisi yang lebih baik untuk mengevaluasi keahlian C ++.

Harold Bamford
sumber
1
Saya sering menggunakan, dan menerima, pertanyaan ini, dan menyebutkannya di atas dalam komentar saya, tetapi saya merasa canggung untuk bertanya dalam percakapan telepon 25 menit.
JasonTrue
0

Ini pertanyaan yang valid, tetapi tidak untuk skrining. Saya menggunakannya sebagai pertanyaan tertulis, untuk didiskusikan saat wawancara. Anda bisa mendapatkan banyak wawasan tentang pola berpikir yang diberikan pemberitahuan sebelumnya. Sebagai pertanyaan pemutaran, itu hanyalah jebakan yang tidak menyenangkan.

david.pfx
sumber