Tampaknya ada perbedaan besar antara apa yang saya harapkan dari seseorang yang belajar pemrograman selama beberapa tahun di universitas, dan apa yang sebenarnya diketahui orang.
Saya tidak merasa seperti saya mengajukan pertanyaan yang terlalu rumit dalam wawancara. Beberapa pertanyaan saya yang biasa adalah:
Apa perbedaan antara tipe referensi dan tipe nilai?
Jika tampaknya orang yang diwawancarai tidak benar-benar memahami jawabannya sendiri, atau jika dia tidak tahu terminologi yang saya gunakan, saya masuk ke dalam perincian lebih lanjut dengan memintanya untuk menjelaskan kepada saya apa yang terjadi ketika saya menulis int i = 0; dalam suatu metode, bagaimana dengan objek o = 0, objek o = new MyClass (), dll ...
Pada dasarnya, saya melakukan semua yang saya bisa untuk menipu orang yang diwawancarai untuk memberi tahu saya tentang callstack, heap dll, dan saya mencoba untuk tetap dalam konsep agnostik bahasa. Jika orang yang diwawancarai memberi tahu saya bahwa dia banyak melakukan C, atau C ++, atau c #, saya menyelam lebih dalam ke bahasa tertentu, dan mungkin ke dalam detail implementasi.
Jika perlu, saya bertanya kepada orang yang diwawancarai apa itu callstack, atau di mana argumen dilewatkan ke fungsi dalam bahasa imperatif pilihannya disimpan.
sebagian besar orang yang diwawancarai tidak tahu apa itu callstack, apalagi pertimbangan tinju, dll.
Apa perbedaan antara kelas abstrak dan antarmuka. Dalam kasus apa Anda harus menggunakan salah satunya?
Biasanya, saya juga meminta mereka untuk membayangkan desain perpustakaan kecil dengan use case yang bertujuan menggunakan beberapa warisan dan beberapa pabrik abstrak
Sebagian besar orang yang diwawancarai tidak tahu apa tujuan sebenarnya warisan. Mereka biasanya mengetahui beberapa kata kunci (virtual, override, dll), tetapi tidak benar-benar tahu kapan menggunakannya, apalagi menjelaskan apa itu virtual-table.
Meskipun saya sudah menyaring CV sebelumnya, bahkan untuk orang-orang dengan 5 tahun pengalaman dalam proyek kehidupan nyata yang melibatkan arsitektur kompleks, saya akan mengatakan kurang dari 25% dari semua yang saya wawancarai dapat menjawab dua pertanyaan dengan benar. Dan ketika saya mengatakannya dengan benar, saya tidak bermaksud 'mendalam' ... hanya untuk memiliki perkiraan tentang konsep itu.
Mengenai junior, saya baik-baik saja dengan mempekerjakan seseorang yang tidak tahu bagaimana mengatur waktunya dengan sangat baik, atau seseorang yang tidak terbiasa dengan proses pembangunan industri misalnya, tetapi saya memiliki perasaan bahwa jika seseorang belum mendengar kata " "setelah beberapa tahun belajar Ilmu Komputer, dia bodoh, atau tidak termotivasi, atau memilih universitasnya dengan sangat tidak bijaksana.
Apakah Anda pikir saya terlalu ekstrim di sini? Apakah biasa untuk mempelajari konsep-konsep dasar ini setelah Anda menyelesaikan universitas? Apakah Anda tahu orang-orang yang tidak terbiasa dengan ini, dan menjadi insinyur perangkat lunak yang sangat baik setelah beberapa tahun? Dan apakah Anda pikir perusahaan saya mungkin memiliki masalah dalam menarik orang-orang berbakat, atau apakah Anda mengalami masalah yang sama dengan dalam proses perekrutan Anda sendiri?
Edit. mengenai "tipe langsung", itu hanya terjemahan harfiah dari bahasa Prancis ke bahasa Inggris, seperti yang biasanya kami lakukan dalam bahasa Prancis. Saya telah memperbaikinya dalam pertanyaan saya. Tapi tetap saja, saya pikir Anda semua mengerti dengan sempurna apa yang saya maksud, jenis apa yang membuat poin saya, bukan?