Pertanyaan dasar meliputi:
Saya pikir biasanya membantu untuk meminta pelamar Anda untuk menyelesaikan latihan pengkodean sederhana seperti:
- Tulis kelas daftar tertaut Anda sendiri tanpa menggunakan kelas bawaan.
- Tulis kelas hashtable Anda sendiri tanpa menggunakan kelas bawaan.
- Tulis kelas yang mewakili pohon biner. Tulis metode yang melintasi semua simpul pohon.
- Tulis metode untuk melakukan pencarian biner pada array tanpa menggunakan metode bawaan.
- Gambarlah skema basis data untuk sebuah blog. Setiap pengguna hanya memiliki satu blog, setiap blog memiliki banyak kategori, setiap kategori memiliki banyak posting, dan setiap posting dapat menjadi milik lebih dari satu kategori. Minta pelamar Anda untuk menulis pertanyaan untuk mengeluarkan informasi tertentu.
Selanjutnya, cari pengetahuan teknis khusus:
- (Penangan acara) Buat kelas dengan penangan acara khusus, buat kelas lain yang terhubung ke penangan acara khusus.
- (XML) Muat dokumen XML dan pilih semua node dengan properti x, y, dan z.
- (Pemrograman fungsional) Buat fungsi yang menerima fungsi lain sebagai parameter. Fungsi Map atau Fold berfungsi sangat baik untuk ini.
- (Refleksi) Tulis fungsi yang menentukan apakah kelas memiliki atribut tertentu.
- (Regex) Tulis ekspresi reguler yang menghapus semua tag dari blok HTML.
Tak satu pun dari ini adalah pertanyaan yang sulit bagi programmer C # mahir untuk menjawab, dan mereka harus memberi Anda ide yang baik tentang kekuatan khusus pelamar Anda. Anda mungkin juga ingin mengerjakan beberapa pertanyaan / contoh kode yang memanfaatkan pola desain tertentu.
[Edit untuk klarifikasi] :
Tampaknya banyak orang tidak mengerti mengapa saya menanyakan pertanyaan-pertanyaan semacam ini. Izinkan saya menyentuh beberapa komentar orang (saya tidak mengutip langsung, tetapi sebagai parafrase):
T: Kapan terakhir kali ada yang menggunakan volatile atau referensi lemah?
A: Ketika saya memberikan wawancara teknis, saya melihat apakah seseorang memahami fitur tingkat tinggi dan rendah dari .NET. Volatile dan referensi lemah adalah dua fitur tingkat rendah yang disediakan oleh .NET - bahkan jika fitur ini tidak sering digunakan dalam praktiknya, jawaban atas pertanyaan ini sangat terbuka:
Pemahaman yang baik tentang volatile menunjukkan bahwa seseorang memahami bagaimana optimisasi kompiler mengubah kebenaran kode, bagaimana utas menjaga salinan lokal dari keadaan bersama yang mungkin tidak sinkron pada waktu tertentu, dan secara minimal menyadari beberapa kompleksitas kode multithreaded .
Pemahaman yang baik tentang referensi yang lemah menunjukkan bahwa seseorang tahu tentang detail intim dari pemulung dan bagaimana memutuskan kapan harus membebaskan memori. Tentu, Anda bisa bertanya kepada kandidat "bagaimana cara kerja pengumpul sampah", tetapi bertanya tentang referensi yang lemah mendapat jawaban yang jauh lebih baik dan lebih bijaksana.
.NET adalah bahasa yang cukup abstrak, tetapi pengembang bintang hampir selalu memiliki pemahaman yang mendalam tentang CLR dan detail tingkat rendah dari runtime .NET.
T: Mengapa orang perlu menerapkan daftar hashtable atau tertaut mereka sendiri?
J: Saya tidak menyiratkan bahwa kelas Kamus lebih rendah atau bahwa orang-orang harus memutar hashtable mereka sendiri. Ini adalah pertanyaan dasar yang menguji apakah seseorang memiliki pemahaman minimal tentang struktur data. Itulah yang diuji untuk pertanyaan-pertanyaan ini: telanjangkan pemahaman minimum.
Anda belajar tentang hashtable dan daftar tertaut ini pada hari pertama Struktur Data 101. Jika seseorang tidak dapat menulis hashtable atau daftar tertaut dari awal, maka mereka memiliki kesenjangan besar dalam pengetahuan teknis mereka.
T: Mengapa pertanyaan-pertanyaan ini sangat berorientasi pada kasar?
A: Karena judul utas ini adalah "pertanyaan yang harus diketahui oleh setiap pengembang .NET yang baik". Setiap pengembang .NET memulai aplikasi crud penulisan karier mereka, dan 90% dari semua pengembangan aplikasi yang dilakukan orang mencari nafkah berkaitan dengan lini aplikasi bisnis.
Saya pikir pertanyaan menguji pengetahuan orang tentang aplikasi lini bisnis sesuai dalam banyak kasus, kecuali jika Anda mencari pengembang di ceruk yang sangat spesifik, seperti pengembangan kompiler, pengembangan mesin-game, pembuktian teorema, pemrosesan gambar, dll. .