it-swarm-id.com

Apa pertanyaan wawancara C ++ terbaik?

Jika Anda bisa bertanya kepada seorang programmer C++ satu pertanyaan untuk mengukur keterampilan C++ mereka, apakah itu?

Pertanyaan yang saya pikir terbaik adalah: Dapatkah Anda memanggil "hapus ini;" di dalam fungsi anggota? (Saya menempatkan ini sebagai tautan sehingga Anda dapat memikirkannya terlebih dahulu, lalu pergi ke Pertanyaan W ++ C Terbaik - Pernah! 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.

28
David Thielen

Saya akan menanyakan alasan mengapa fungsi anggota virtual tidak dapat digunakan dengan template di C++. Tentu saja, hanya ada beberapa orang yang benar-benar dapat menjawab pertanyaan dengan segera. Tetapi jika orang yang diwawancarai dengan benar memahami mekanisme inti C++ (bagaimana templat bekerja dalam C++, bagaimana fungsi virtual diimplementasikan, bagaimana kompiler dan penghubung menghasilkan sebuah executable dari kode sumber, dll.), Anda mungkin mendapatkan jawaban dengan langkah-demi-langkah yang tepat. langkah memimpin pertanyaan.

Ditambahkan: Fungsi anggota virtual templat dalam jawaban ini berarti fungsi templat yang merupakan fungsi anggota virtual beberapa kelas - bukan fungsi anggota biasa di kelas templat. Maaf telah membingungkan :(

8
summerlight

Pertanyaan wawancara C++ terbaik adalah masalah pemrograman, bukan pertanyaan kuis.

57
Steven Evers

Saya akan bertanya kepada mereka apa yang mereka sukai tentang C++ 0x. Dari sini saya bisa "menyatukan" mereka ke berbagai stereotip:

  • sekolah super tua, menggunakan kompiler C++ untuk mengkompilasi kode C.
  • sekolah tua, takut (atau melihat tidak ada gunanya) STL, belum mengikuti perubahan
  • mencintai lambdas, mencintai STL semakin cepat dari referensi nilai, penggemar RAII besar, hot untuk menggunakan shared_ptr, unique_ptr dll
  • pahit karena semua kode penambah yang ditulis selama beberapa tahun terakhir perlu disesuaikan untuk menggunakan setara C++ 0x
  • metaprogrammer templat gila yang membuat kepala saya meledak saat menjawab pertanyaan yang relatif singkat

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.

32
Kate Gregory

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:

Dalam skala dari satu hingga sepuluh, seberapa bagus seorang programmer C++?

Ini bukan pertanyaan yang memberi Anda jawaban yang Anda inginkan. Semua orang mengatakan "delapan". Pertanyaan yang memberi Anda jawaban yang Anda inginkan adalah:

OK, jadi Anda delapan. Apa bidang masalah yang menurut Anda tujuh akan mengalami kesulitan bekerja dengan?

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 sesuatu 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 mendesain analisis semantik dan generator kode, serta pengetahuan mereka tentang C++.

28
Eric Lippert

Hanya untuk bersenang-senang, saya memiliki programmer C++ yang terhuyung-huyung dengan bayi kecil ini:

Mengapa ini mengalami loop tak terbatas (dan ya itu diketik dengan benar)?

int x=0;
while (x<3) {
  x = x++;
}

Sungguh menakjubkan berapa banyak yang tersandung. Tentu saja, saya tidak dapat menggunakannya lagi setelah itu 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 Coding Horror article ) 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 tersebut 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 yang telah meluangkan waktu untuk berkomentar.

14
Gary Rowe

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

8
Dima

Ceritakan tentang copy constructor.

7
fredoverflow

Itu sangat tergantung pada jenis C++ yang ditulis di perusahaan Anda. (Ketika saya harus menyewa programmer C++, saya tidak pernah bertanya tentang delete, karena saya bertanya kepada mereka tentang teknik untuk menghindari keharusan menulis delete 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.

7
sbi

Pertanyaan terbaik untuk pengembang C++ yang hebat adalah "Katakan padaku alasan mengapa kita harus BUKAN menggunakan C++?"

6
amadvance

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.

6
Orbling

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.

4
sashang
4
karlphillip

Pertanyaan favorit saya adalah sederhana:

a) Apakah Anda mulai dengan C dan kemudian beralih ke C++?

b) Jika demikian, lalu apa beberapa 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.

3
mohaps

Bagaimana Anda menerapkan Fungsi Virtual di C++, jelaskan skenario dunia nyata.

1
user616

Pada saat ini, saya akan mengatakan: "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.

1
Kaz Dragon

Saya pikir saya akan meminta pendapat mereka tentang desain, katakanlah, std::string. Saya juga akan bertanya kepada mereka apakah mereka telah menggunakan desain lain (mis., MFC/ATL CString, wxString, dll.) Dan dengan asumsi mereka miliki, minta mereka untuk membandingkan dan membedakan 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 menukar fleksibilitas yang lebih besar untuk beberapa kecanggungan yang mungkin. Singkatnya, hampir setiap orang yang memiliki pengalaman nyata harus dapat mengekspresikan beberapa pendapat yang bermakna tentang desain mereka dan pendapat itu harus memberi tahu Anda cukup banyak tentang bagaimana mereka berpikir, bagaimana mereka kode desain, sejauh mana mereka menghargai pragmatisme versus kemurnian teoretis, dan sebagainya.

1
Jerry Coffin

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 dapat memecahkan masalah.

1
Paul