Jika Anda bisa bertanya kepada seorang programmer C ++ satu pertanyaan untuk mengukur keterampilan C ++ mereka, apakah itu?
Pertanyaan yang menurut saya paling baik adalah: Dapatkah Anda memanggil "hapus ini;" di dalam fungsi anggota? (Saya menempatkan ini sebagai tautan sehingga Anda dapat memikirkannya terlebih dahulu, lalu pergi ke The Best C ++ Interview Question - Ever! Untuk melihat jawaban yang benar.)
Saya tidak menanyakan ini karena saya berharap kebanyakan orang tahu jawabannya. Jika mereka melakukannya, itu tidak akan menjadi pertanyaan yang berguna. Saya bertanya untuk melihat apakah mereka dapat mengerjakan jawaban mereka yang benar dan bagaimana mereka melakukannya.
Pertanyaan wawancara C ++ terbaik adalah masalah pemrograman, bukan pertanyaan kuis.
sumber
CString
,char*
,std::string
, dll .; apakah mereka mengembalikan string baru atau mundur di tempat; apakah mereka secara manual mengulangi karakter atau mereka memanggil fungsi perpustakaan. Dan tentu saja jika mereka tidak dapat melakukan sesuatu yang sederhana seperti membalikkan string, itu juga memberi tahu Anda banyak tentang mereka! Ada juga banyak pertanyaan lanjutan, seperti apakah itu bekerja dengan Unicode, apakah itu bekerja dengan UTF-8, dll.Saya akan bertanya kepada mereka apa yang mereka sukai tentang C ++ 0x. Dari sini saya bisa "menyatukan" mereka ke berbagai stereotip:
Peluangnya adalah beberapa dari ember ini sangat cocok untuk Anda dan beberapa "terima kasih telah datang". Sebagai pertanyaan yang membuat Anda mendapatkan banyak informasi dengan cepat, ini adalah pemenang saya.
sumber
Saya agak heran mengapa "Anda bisa menghapus ini?" dianggap pertanyaan yang menarik. Siapa pun yang telah menulis kode COM dalam C ++ tahu bahwa hal pertama yang Anda pelajari pada hari pertama pemrograman COM dasar adalah bagaimana menggunakan "hapus ini" dengan benar. Saya kira itu mungkin berguna untuk menentukan apakah, katakanlah, seseorang berbohong pada resume mereka tentang telah menulis program COM, tetapi sebagai pengetahuan umum pertanyaan C ++, jika seseorang tidak dapat menjawabnya segera maka mereka tidak akan cocok. untuk tim saya.
Lagi pula, jika tujuan Anda adalah untuk mengajukan pertanyaan yang mengukur keterampilan C ++, maka memilih satu pertanyaan adalah cara yang salah. Putar balik. Pertanyaan yang tepat untuk ditanyakan adalah:
Ini bukan pertanyaan yang memberi Anda jawaban yang Anda inginkan. Semua orang mengatakan "delapan". Pertanyaan yang memberi Anda jawaban yang Anda inginkan adalah:
Dan boom , sekarang Anda sudah mendapatkannya. Jika kandidat berpikir bahwa "ada hubungannya dengan rekursi" atau "kapan menggunakan destruktor virtual" adalah hal yang sulit dilakukan oleh ketujuh, maka Anda tahu bahwa mereka tahu sedikit tentang rekursi atau destruktor atau apa pun , dan bahwa pengetahuan mereka tidak lebih jauh dari itu.
Itu akan memberi Anda kalibrasi yang jauh lebih baik daripada mengajukan beberapa pertanyaan sepele. Jika Anda memaksa saya untuk mengajukan pertanyaan tunggal yang bagus tentang fakta tentang C ++, saya mungkin akan bertanya seperti "bagaimana Anda mendesain semantic analyzer dan pembuat kode untuk bagian dari kompiler C ++ yang berhubungan dengan metode virtual disebut destruktor kelas dasar? " Anda harus mengajukan pertanyaan yang berkaitan dengan hal-hal nyata yang Anda kerjakan, dan bahwa kandidat kemungkinan akan mengerjakannya. Itu masalah yang harus saya kerjakan sekali, dan saya pikir itu akan memberikan wawasan yang cukup bagus tentang bagaimana seseorang merancang analisis semantik dan generator kode, serta pengetahuan mereka tentang C ++.
sumber
Hanya untuk bersenang-senang, saya memiliki programmer C ++ yang terhuyung-huyung dengan bayi kecil ini:
Mengapa ini berjalan ke loop tak terbatas (dan ya itu diketik dengan benar)?
Sungguh menakjubkan berapa banyak yang tersandung. Tentu saja, saya tidak bisa menggunakannya lagi setelah muncul di Stack Overflow . Bergumam ... bergumam ...
(Untuk mendapatkan jawaban yang tepat baca pengakuan dan baca komentarnya)
Menambahkan pertanyaan bonus
Ada FizzBuzz klasik sepanjang masa (seperti yang ditampilkan dalam artikel Coding Horror yang sekarang terkenal ). Saya tidak pernah benar-benar menggunakannya dalam sebuah wawancara, tetapi setelah membuangnya di sekitar tim pengembangan suatu waktu makan siang hasilnya ... um ... secara mengejutkan akurat.
Pengakuan
Saya terjebak pada respons standar "x ++ mengembalikan nilai asli". Namun, jawaban yang benar adalah bahwa perilaku tidak terdefinisi karena titik urut. Tidak ada yang pernah menyebutkan urutan poin sepanjang waktu saya menggunakan ini sampai saya diposting di sini.
Saya telah dididik dan saya benar-benar ingin berterima kasih kepada semua orang yang telah meluangkan waktu untuk berkomentar.
sumber
Hal pertama yang harus ditanyakan adalah pertanyaan sederhana tentang petunjuk. Saya heran melihat berapa banyak orang yang mengaku tahu C ++ atau, lebih buruk lagi, C, tidak bisa menjawabnya. Lalu saya akan mengajukan pertanyaan sederhana tentang fungsi virtual. Kombinasi ini memberi tahu Anda dengan sangat cepat apakah orang tersebut benar-benar tahu C ++.
sumber
Itu sangat tergantung pada jenis C ++ yang ditulis di perusahaan Anda. (Ketika saya harus menyewa programmer C ++, saya tidak pernah bertanya
delete
, karena saya bertanya kepada mereka tentang teknik untuk menghindari harus menulisdelete
sama sekali.)Idealnya, Anda ingin merekrut orang yang menulis kode di atas level yang ditulis tim Anda, tetapi tidak terlalu tinggi di atasnya, kecuali jika Anda ingin menggabungkan ini dengan melatih tim untuk membawanya ke tingkat yang lebih tinggi.
sumber
sumber
Saya percaya saya akan bertanya kepada mereka apa lagi yang mereka tahu, atau lebih mungkin memberi mereka pertanyaan dalam sesuatu yang sangat berbeda.
Terlalu banyak C + + coders tentang yang memiliki sedikit pengalaman bahasa lain. Pengalaman sempit biasanya membatasi.
sumber
Pertanyaan terbaik untuk pengembang C ++ yang hebat adalah "Katakan padaku alasan mengapa kita TIDAK boleh menggunakan C ++?"
sumber
Saya tidak berpikir ada pertanyaan C ++ terbaik. C ++ adalah bahasa yang begitu besar, dan dengan C ++ 0X itu tumbuh, sehingga Anda bisa menjadi kuat di subdomain tertentu dari bahasa tersebut dan tidak sedikit tentang bagian lain dari bahasa tersebut. Pertanyaan 'one shot' hanya akan melatih pengetahuan seseorang tentang sebagian kecil bahasa dan berisiko mengabaikan pengetahuannya tentang aspek-aspek lain dari bahasa tersebut.
sumber
Ada banyak di StackOverflow. Saya akan membagikan beberapa:
https://stackoverflow.com/questions/2428404/tricky-interview-question-for-c
https://stackoverflow.com/questions/50447/favorite-c-interview-question
https://stackoverflow.com/questions/4269838/interview-question
https://stackoverflow.com/questions/2532102/can-a-pointer-ever-point-to-itself
https://stackoverflow.com/questions/3055141/interview-question-about-virtual-functions-in-c
sumber
Pertanyaan favorit saya adalah sederhana:
a) Apakah Anda mulai dengan C dan kemudian beralih ke C ++?
b) Jika demikian, lalu apa hal pertama yang Anda pelajari untuk dilakukan secara berbeda?
Jawaban ini biasanya memberi saya sedikit tentang bagaimana programmer mendekati C ++ dan pemahamannya tentang OOP dan C ++ secara umum.
tidak ada jawaban "Benar" atau "Salah" di sini, tetapi biasanya ini adalah cara yang bagus untuk mengetahui dari mana kandidat berasal.
sumber
Saya benar-benar akan memberikan orang itu sedikit kode dari bahasa pemrograman lain yang berorientasi objek dan lebih disukai tidak ada dalam daftar bahasa yang mereka kenal. Kode harus mewakili tugas sederhana yang dilakukan dalam bahasa itu.
Inti dari ini bukan untuk menentukan pengetahuan mereka tentang C ++ tetapi mencari tahu seberapa baik mereka memahami pemrograman. Ketika Anda memahami konsep dasar di balik pemrograman, maka Anda bisa menyelesaikan masalah.
sumber
Bagaimana Anda menerapkan Fungsi Virtual di C ++, jelaskan skenario dunia nyata.
sumber
Pada saat ini, saya akan berkata: "Bagaimana Anda akan menerapkan sebuah konstruktor bergerak untuk sebuah wadah?"
Alasan saya adalah bahwa, karena konstruktor pemindahan adalah fitur dari standar berikutnya dan bukan yang sekarang, jawaban kandidat akan menunjukkan apakah pengembang yang bersangkutan aktif mengejar pengetahuan tentang bahasa mereka atau hanya mengikuti trik yang mereka ketahui.
sumber
Saya pikir saya akan meminta pendapat mereka tentang desain, katakanlah
std::string
,. Saya juga akan meminta mereka jika mereka telah menggunakan desain lainnya (misalnya, MFC / ATLCString
,wxString
, dll) dan dengan asumsi mereka memiliki, meminta mereka untuk membandingkan dan kontras desain.String cukup banyak digunakan sehingga hampir semua orang dengan pengalaman nyata menggunakan C ++ seharusnya menggunakan setidaknya satu atau dua di atas. Hampir semua desain mewujudkan beberapa kompromi antara kemurnian teoretis dan penggunaan praktis. Beberapa dapat bekerja dengan sangat baik, tetapi hanya jika digunakan tepat seperti yang dimaksudkan, sementara yang lain bertukar fleksibilitas yang lebih besar untuk beberapa kecanggungan yang mungkin. Singkatnya, hampir setiap orang yang memiliki pengalaman nyata harus mampu mengekspresikan beberapa pendapat yang bermakna tentang desain mereka dan pendapat itu harus memberi tahu Anda cukup banyak tentang bagaimana mereka berpikir, bagaimana mereka merancang kode, sejauh mana mereka menghargai pragmatisme versus kemurnian teoretis, dan seterusnya.
sumber