Pertanyaan setiap pengembang .NET yang baik harus dapat menjawab? [Tutup]

246

Perusahaan saya akan mempekerjakan pengembang .NET . Kami bekerja pada berbagai platform .NET: ASP.NET, Compact Framework, Windowsforms, Layanan Web. Saya ingin menyusun daftar / katalog pertanyaan yang bagus, semacam standar minimum untuk melihat apakah pelamar berpengalaman. Jadi, pertanyaan saya adalah:

Menurut Anda pertanyaan apa yang harus dijawab oleh programmer .NET yang baik ?

Saya juga melihatnya sebagai daftar periksa untuk diri saya sendiri, untuk melihat di mana defisit saya sendiri (ada banyak ...) .

teks alternatif

* PEMBARUAN: Ini ingin memperjelas bahwa kami tidak menguji hanya untuk pengetahuan .NET, dan bahwa kemampuan pemecahan masalah dan keterampilan pemrograman umum bahkan lebih penting bagi kami.

splattne
sumber

Jawaban:

171

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

Juliet
sumber
8
Saya pikir daftar Anda adalah cara yang baik untuk menyelidiki kekuatan dan kelemahan tetapi itu bukan pengetahuan "dasar". Seperti yang ditunjukkan Greg, saya tersandung oleh operator "hubung singkat" walaupun mereka sederhana dan saya sering menggunakannya: Saya baru saja lupa nama. Apakah itu akan mendiskualifikasi saya?
Mark Brittingham
33
Demikian pula, saya tidak pernah mendeklarasikan variabel "Volatile" dan melakukan sangat sedikit dengan XML sehingga tidak bisa menyelesaikan tugas pemrograman Anda. Namun, saya adalah seorang penulis yang diterbitkan, memenangkan kontes pemrograman utama, dan telah menulis 4 produk sukses yang telah memenangkan penghargaan utama.
Mark Brittingham
24
Jadi, saya tidak perlu tidak setuju dengan daftar Anda - saya hanya tidak setuju dengan karakterisasi item pengetahuan Anda sebagai "Dasar." Tidak ada konsep yang sulit - tetapi beberapa hanya sangat spesifik dan tidak akan akrab bagi banyak pelamar. Masih - lagi - tolong terima permintaan maaf saya.
Mark Brittingham
39
Separuh item dalam daftar ini adalah pertanyaan trivia. Ini tidak akan membantu menemukan orang yang baik, tetapi mungkin cukup mengganggu beberapa dari mereka untuk keluar dari wawancara Anda.
Jason Kester
15
(Regex) Write a regular expression which removes all tags from a block of HTML.- I SMELL TROUBLE
BlueRaja - Danny Pflughoeft
135

Saya menemukan daftar ini di blog Scott Hanselman :

Inilah yang menurut saya merupakan pertanyaan paling penting dari pos-pos ini yang terbagi dalam beberapa kategori. Saya mengedit dan mengatur ulang mereka. Untungnya untuk sebagian besar pertanyaan ini sudah ada jawaban yang bagus tentang Stack Overflow. Ikuti saja tautannya (Saya akan memperbarui semuanya secepatnya) .

Platform. NET pertanyaan independen

ASP.NET

splattne
sumber
8
Saya tahu pengembang mengetahui semua ini dan masih tidak bisa melihat lebih jauh dari buku. Open-Minded sangat penting, selain itu, jangan mencoba untuk mendapatkan terlalu banyak jawaban terperinci, hanya pastikan mereka memahami konsepnya.
Saif Khan
Saya agee, Saif. Tetapi di sisi lain, jika Anda tidak tahu detailnya, Anda tidak akan dapat menerapkan "konsep" dengan benar.
splattne
2
Beberapa pertanyaan benar-benar bodoh, seperti apa perbedaan antara Debug dan rilis build. Ya, Visual Studio telah menetapkan beberapa konfigurasi build tetapi ini bukan pertanyaan platform independen. Seseorang yang mengkompilasi dengan baris perintah atau menggunakan Mono, mungkin tidak tahu apa yang Anda bicarakan.
lubos hasko
3
Apakah Anda dapat menggambarkan konsep yang biasanya mengambil 2 halaman atau bahkan satu bab buku, dengan cara yang jelas dalam situasi wawancara. Saya tidak bisa tanpa berlatih mereka sebelumnya
Chris S
1
Cobalah untuk tidak meminta orang mendefinisikan istilah. Anda akan berakhir dengan jurusan CS yang harus menghafalnya untuk ujian, tetapi kehilangan orang-orang yang benar-benar tahu cara memprogram. Saya ingat pernah ditanya apa "penundaan" itu. Saya tidak memiliki petunjuk pertama, meskipun saya melakukannya 30 kali sehari saat itu.
Jason Kester
94

Ini mungkin bukan yang ingin Anda dengar, tetapi saya sarankan untuk tidak berfokus pada teknologi yang sempit, tetapi pada pemrograman umum dan keterampilan memecahkan masalah. Pengembang yang solid dapat mempelajari apa pun yang Anda ingin mereka lakukan dengan cepat.

Saya, misalnya, bukan orang Compact Framework, jadi saya mungkin gagal wawancara Anda jika Anda pergi ke arah itu. Tetapi jika saya perlu menggunakannya saya bisa melakukan riset dan langsung masuk.

Buku Joel, Smart and Gets Things Done , memiliki saran yang bagus untuk mempekerjakan para dev dan ada banyak bagian menarik tentang jenis pertanyaan yang akan diajukan. Saya sangat merekomendasikannya.

Brian MacKay
sumber
Mungkin bagian dari proses perekrutan seharusnya menjadi masalah di Cardspace atau sesuatu yang belum pernah mereka lihat !!
Jennifer
Mungkin, tetapi ada masalah penelitian, jadi saya pikir itu mungkin tidak adil. Saya lebih tertarik melihat bagaimana mereka memikirkan masalah dan mungkin melihat mereka untuk mengkode sesuatu yang abstrak sehingga saya dapat mengetahui apakah mereka berbicara kode asli atau tidak.
Brian MacKay
Jika saya bisa memilih sekitar dua orang yang memiliki keduanya dengan pemrograman umum dan keterampilan pemecahan masalah, untuk alasan praktis saya HARUS memilih yang dengan pengetahuan dan pengalaman .NET yang lebih baik.
splattne
Pengetahuan .NET tentu saja, tetapi ketika turun ke teknologi yang lebih sempit saya pikir Anda bisa pergi dengan programmer dengan keterampilan pemecahan masalah.
Jennifer
5
Ya, kita semua harus tahu banyak "teknologi sempit". Tetapi untuk setiap orang yang kita kenal, ada banyak yang tidak kita ketahui (biasanya karena kita belum membutuhkannya). Saya mengatakan Anda tidak ingin melewatkan pengembang yang hebat karena tidak mengenal SharePoint, karena sebentar lagi dia mungkin adalah orang SharePoint terbaik Anda.
Brian MacKay
66

Saya pikir jika saya mewawancarai seseorang yang memiliki pengalaman LINQ, aku mungkin hanya meminta mereka untuk menjelaskan LINQ. Jika mereka dapat menjelaskan eksekusi yang ditangguhkan, streaming, antarmuka IEnumerable / IEnumerator, foreach, blok iterator, pohon ekspresi (untuk poin bonus, bagaimanapun) maka mereka mungkin dapat mengatasi sisanya. (Harus diakui mereka bisa menjadi pengembang "ok" dan belum "mendapatkan" LINQ - Saya benar-benar memikirkan kasus di mana mereka mengklaim cukup tahu LINQ untuk menjadikannya pertanyaan yang adil.)

Di masa lalu saya telah mengajukan beberapa pertanyaan yang sudah terdaftar, dan beberapa lainnya:

  • Perbedaan antara tipe referensi dan nilai
  • Pass by reference vs pass by value
  • IDisposable dan finalizer
  • String, kekekalan, pengkodean karakter
  • Titik mengambang
  • Delegasi
  • Generik
  • Jenis tidak dapat dibatalkan
Jon Skeet
sumber
1
Ya, saya ingin melihat jawaban seperti ini. Kandidat yang bagus untuk diterima. Adakah yang lebih baik?
splattne
5
@plattne: jangan konyol, ini adalah jawaban Jon Skeet, jadi terima saja. Itu tidak bisa dihindari.
Steven A. Lowe
3
Saya baru saja akan mengatakan ... wt ... Anda tidak mempertanyakan Skeet!
Saif Khan
1
Ini adalah jawaban yang jauh lebih baik daripada yang diterima. Ini membantu Anda memahami apakah seseorang memiliki pengetahuan yang mendalam di bidang keahlian yang diakui sementara juga menggali pengetahuan tentang fitur bahasa yang menjalankan keseluruhan yang cukup luas.
Mark Brittingham
1
Jawaban ini mengalahkan langkah 'rancang Daftar Tertaut Anda sendiri, "parse HTML with regexp", atau "Seberapa banyak yang Anda ketahui tentang Majelis, GAC, dll ..." karena ini membahas alat dan konsep yang Anda inginkan benar-benar digunakan selama pengembangan. Pengetahuan intim tentang LINQ juga penting. Saya telah melihat banyak contoh di situs ini di mana orang mencoba untuk menggulung versi mereka sendiri dari Union Distinct dan Concat untuk koleksi karena mereka tidak mengerti LINQ.
Evan Plaice
42

Saya dengan orang-orang yang mencari kemampuan pemecahan masalah daripada hal-hal yang dapat Anda cari dan hafal dari '101 teratas. Wawancara NET Qs and As ".

Sebagai contoh saja, saya cenderung 'tahu' hal-hal yang perlu saya gunakan dari hari ke hari. Saya cenderung lupa (dan kemudian harus melihat kembali) hal-hal yang jarang saya gunakan.

Jika Anda ingin membuat saya tersandung dalam sebuah wawancara, itu akan sangat mudah.

Namun demikian, saya telah merancang dan mengkodekan banyak infrastruktur untuk sistem yang menggunakan Objek Bisnis dan lapisan Data yang identik untuk inkarnasi WinForms dan ASP.NET, dan basis kode kami cukup kuat dan dapat digunakan kembali sehingga kami dapat mendukung dan mengembangkan 20+ versi yang berbeda dari situs web, serta semakin banyak (saat ini 5) aplikasi WinForms ...

... dengan tim pengembangan dua.

Saya dulu bekerja di tim sebagai pemimpin teknologi, dan pekerjaan saya melibatkan banyak perekrutan dan wawancara. Kesalahan saya yang paling spektakuler adalah mempekerjakan seorang pria yang tahu lebih banyak tentang teknologi yang kami gunakan daripada kami semua, termasuk saya, dan saya menganggap diri saya sebagai seorang ahli. Dia tahu segalanya ...

... kecuali cara menulis kode yang memenuhi persyaratan, atau dapat dipahami oleh siapa pun kecuali dirinya sendiri. Ketika saya akhirnya meyakinkan PM untuk tidak memperpanjang kontraknya, setiap hal yang ditulisnya harus ditulis ulang.

Struktur wawancara Anda dengan bijak ...

ChrisA
sumber
1
Itu pengamatan yang sangat menarik. Kami memiliki situasi yang berlawanan: sekelompok kecil pengembang yang tahu lebih sedikit daripada yang lain tetapi yang meyakinkan manajemen bahwa mereka tahu lebih banyak. Mereka mengusulkan kelas abstraksi data yang menurut saya tidak mungkin (saya dikritik karena tidak menjadi "pemain tim").
Mark Brittingham
-lanjutkan - setelah 4 bulan upaya "sigung bekerja" mereka mempresentasikan tim dengan .... kertas transfer mereka ke departemen lain - dan NO kode. Anggota tim lainnya harus mengambil bagian.
Mark Brittingham
1
Namun, intinya: Saya sangat menyukai pengamatan Anda bahwa pengetahuan khusus tentang pembuatan kode bukan jaminan kemampuan untuk membuat perangkat lunak yang berfungsi yang memenuhi kebutuhan pelanggan.
Mark Brittingham
34

Siapakah Jon Skeet?

Steven A. Lowe
sumber
11
Atau lebih baik: Apakah Anda Jon Skeet? ;-)
splattne
ini sebenarnya pertanyaan yang bagus untuk posisi C #. Menimbang bahwa Jon Skeet sekarang memiliki pencarian stackoverflow / google untuk C # related. Jika Anda tidak tahu siapa dia sekarang, Anda adalah Jon Skeet atau Anda tidak sedang pemrograman dalam C #.
lubos hasko
2
Tidak ada pelanggaran untuk Jon Skeet - tapi saya pikir Rick Strahl cenderung muncul dengan jawaban yang lebih sering untuk jenis masalah yang saya lari ke ..
Andrew Theken
1
@ [Andrew Theken]: Saya akan memainkan persentase satu itu ;-) google untuk "Rick Strahl" menghasilkan 38.500 hit, "jon skeet" menghasilkan 144.000. Plus, Rick Strahl tidak memposting di SO AFAIK.
Steven A. Lowe
1
keduanya hebat dalam apa yang mereka lakukan ... keuntungan kita.
GR7
33

Pertanyaan bagus yang pernah saya tanyakan adalah

  • Apa yang menurut Anda bagus tentang .NET?
  • Apa yang menurut Anda buruk tentang .NET?

Akan menarik untuk melihat apa yang akan muncul dengan calon dan Anda pasti akan belajar sedikit tentang bagaimana ia menggunakan kerangka kerja.

qui
sumber
18

Saya akan selalu mencari soft skill sendiri - tidak ada pun yang dimaksudkan. Desain OO yang sangat bagus, pengembangan yang digerakkan oleh tes, latar belakang bahasa multi (pemrograman) yang bagus dan semua kecerdasan umum (dan menyelesaikan semua hal, kurasa!).

Pengembang yang cerdas seharusnya tidak mengalami kesulitan mempelajari teknologi individual yang Anda perlu mereka ketahui bahkan jika mereka belum pernah melihatnya - jadi saya tidak akan terlalu khawatir tentang pertanyaan spesifik seputar WCF / kerangka kerja kompak dan sejenisnya.

Saya ingin mereka menulis beberapa kode - cara terbaik untuk mengetahui apa yang mereka ketahui dan bagaimana cara kerjanya. Siapa pun dapat mengingat jawaban untuk 'Apa perbedaan antara tipe referensi dan tipe nilai?'

Jennifer
sumber
2
Spot on. Mengajukan pertanyaan hafalan berarti mencari masalah. Perusahaan tempat saya bekerja mengajukan pertanyaan teknisi lama, tetapi sebagian besar: Saya punya masalah ini, ini papan tulis, beri tahu saya bagaimana Anda akan menyelesaikannya. Menakutkan tetapi efektif.
Chris Brooks
4
... tetapi jika Anda tidak menyelesaikannya seperti yang diharapkan pewawancara, Anda gagal.
gbjbaanb
1
@ gbjbaanb terkadang. Tetapi jika itu masalahnya Anda mungkin tidak ingin bekerja di sana. Ingat, Anda juga sedang mewawancarai perusahaan. Saya tahu beberapa perusahaan yang gagal dalam wawancara!
Tony Ennis
13

Secara jujur?

"Apa itu. NET?"

Jika mereka dapat memberi Anda jawaban yang jelas mengenai apa. kenal baik sekali.

Faktanya adalah, banyak orang tidak benar-benar tahu apa itu. NET. Bahkan mereka yang menulis program untuk itu.

Erik Funkenbusch
sumber
11

Tidak ada, sungguh. Mungkin ada pertanyaan yang sangat sederhana yang orang-orang terpintar di dunia tidak tahu jawabannya. Bukan karena mereka sulit, tetapi hanya karena mereka belum menemukannya. Anda harus melihat seluruh paket dan keterampilan pengembang, bukan apakah mereka dapat menjawab pertanyaan sewenang-wenang.

Jika pertanyaannya cukup mudah dijawab dalam satu atau dua kalimat pendek, cukup mudah untuk memberi tahu seseorang yang tidak tahu. Anda harus mencari pemahaman mereka tentang konsep dan kemampuan penalaran, bukan kemampuan mereka untuk menjawab pertanyaan "setiap pengembang NET. Harus mampu menjawab."

Gene Roberts
sumber
10

Ketahui perbedaan antara tipe referensi dan nilai.

Ketahuilah bahwa acara disimpan sebagai referensi keras (mis. Ingat untuk membatalkan pendaftaran acara atau aplikasi akan membocorkan memori).

String tidak berubah.

Brian Rasmussen
sumber
6

Martin Fowler lebih memilih keterampilan desain daripada pengetahuan platform . Di sisi lain, Anda dapat mengajukan pertanyaan yang akan menunjukkan pengetahuan tentang pola desain dan platform .NET seperti ini:

  • Menamai pola dan prinsip desain yang Anda ketahui dan bagaimana mereka digunakan dalam .NET Framework?
Dzmitry Huba
sumber
4

Saya sarankan bertanya tentang blog yang mereka baca secara teratur dan proyek pemrograman pribadi yang telah mereka kerjakan karena ini akan menunjukkan keinginan untuk belajar dan hasrat untuk pemrograman.

Nicholas
sumber
3

Berikut adalah beberapa yang saya gunakan untuk memfilter programmer yang melamar pekerjaan sebagai programmer C #:

Apa perbedaan antara tipe referensi dan tipe nilai?

Jelaskan antarmuka IDisposable, yang membangun bahasa C # membutuhkannya dan bagaimana Anda akan mengimplementasikannya.

Pengecualian mana yang akan Anda lemparkan jika null dilewatkan sebagai argumen ke metode yang memiliki kontrak yang tidak mengizinkan null untuk parameter itu?

Mike Scott
sumber
Kode saya biasanya akan melempar NullReferenceException.
Joshua
5
@ Yosua, ArgumentNullException Anda gagal.
Nicolas Dorier
3

"Manakah dari ASP: kontrol apa pun yang akan Anda gunakan dalam produksi dan mengapa?"

Itu akan memberi tahu Anda dengan cepat apakah subjek Anda pernah benar-benar membangun dan mempertahankan proyek besar cukup lama untuk dibakar oleh DataGrids dan LinkButtons, atau apakah dia masih dalam fase Drag / Drop "mengajar diri sendiri dalam 21 hari".

(jawabannya adalah asp: Repeater, asp: PlaceHolder, asp: Literal, dan asp: Content)

Jason Kester
sumber
2

Apa itu utas?

Apa itu GC?

Pelit
sumber
2

Ini adalah sedikit pertanyaan variabel, dan bukan yang benar-benar harus Anda jawab sekarang, tetapi yang harus Anda jawab saat yang tepat:

"Apa yang ditawarkan oleh .NET framework untuk menyelesaikan tugas X?"

Atau lebih khusus:

"Apakah kerangka .NET menyertakan objek yang melakukan X?"

Sebagai contoh, saya baru-baru ini menghabiskan beberapa jam mengembangkan objek yang dioptimalkan untuk menyimpan array Boolean dan beroperasi di atasnya, seperti melakukan pengumpulan dengan BUKAN, ATAU, XOR, DAN, tetapkan semua nilai, dll. t sampai setelah saya selesai menulis semua tes unit saya dan mengubahnya untuk kinerja terbaik yang mungkin saya menyadari objek "BoolArray" saya sudah ada dalam kerangka .NET dengan nama "BitArray".

Ini bisa menjadi jawaban yang sulit karena sering kali jawaban terbaik tentang objek / pembantu yang digunakan adalah yang tidak Anda ketahui atau pahami sepenuhnya. Betapa indahnya dunia .NET jika semua orang benar-benar tahu tentang StringBuilder yang sederhana, alat dasar yang dapat meningkatkan kinerja jumlah yang signifikan.

Spodi
sumber
2

Saya akan menyarankan beberapa pertanyaan fokus pada pemahaman konsep pemrograman menggunakan dotnet like

Apa perbedaan antara lingkungan yang dikelola dan yang tidak dikelola? Pro dan kontra GC Pro dan kontra JIT Jika kita perlu mengembangkan aplikasi X, bisakah kita menggunakan dotnet? Mengapa? (ini akan mengidentifikasi bagaimana dia melihat dotnet)

Saya juga menyarankan untuk menulis metode kecil dan memintanya untuk menulis ulang dengan kinerja yang lebih baik menggunakan kelas dotnet yang lebih baik atau cara standar. Juga menulis metode yang tidak benar (dalam hal apa pun) logis atau apa pun dan memintanya untuk memperbaikinya.

Ahmed Said
sumber
2

Saya penggemar berikut ini selain beberapa pertanyaan yang telah disebutkan:

  • Apa itu delegasi?
  • Apa domain aplikasi?
  • Kapan Anda akan menggunakan kata kunci kunci?
  • Apakah thread standar perpustakaan koleksi generik koleksi aman?
  • Apa itu metode ekstensi?
  • Apa perbedaan antara XmlDocument dan XmlReader?
  • Bagaimana Anda membaca dalam pengaturan konfigurasi dari file konfigurasi aplikasi?
segy
sumber
2

Ini menarik, dan dengan risiko mendapatkan suara ini karena menurut pendapat saya, karena saya terlahir tuli, ditanyai pertanyaan seperti itu akan membutuhkan lebih banyak usaha untuk mengomunikasikan pikiran saya di pihak saya secara pribadi.

Terus terang, saya benar-benar tidak akan membaca terlalu banyak pertanyaan yang khas, karena paradigma yang mendasarinya adalah ' Seberapa baik Anda dapat menyuarakan pikiran dan pemahaman Anda? ', itulah yang benar-benar dicari pewawancara. Berkomunikasi selalu merupakan kelemahan terbesar saya karena cara saya dan bisa frustrasi dengan mudah.

Akan ideal untuk memiliki pengetahuan dan menjadi tipe tahu-itu-semua, tetapi sayangnya, ada beberapa hal yang saya tidak tahu, tetapi tidak perlu takut jika Anda benar-benar tidak tahu jawabannya dan mengakuinya daripada gertak sambal. melaluinya. Jika seorang pewawancara bertanya kepada saya pertanyaan seperti di atas, bahwa saya tidak akan yakin atau salah mengerti / salah menafsirkan pertanyaan, saya akan mengatakannya di muka, yang secara pribadi bisa memalukan, tetapi telah belajar untuk mengatasinya.

Anda akan terkejut pada berapa banyak yang benar-benar akan wafel dan menggertaknya di mana pada akhir hari tertangkap dengan 'celana bawah' mereka berbicara secara metaforis.

2 sen saya, Salam, Tom.

t0mm13b
sumber
2

Beberapa lagi:

  1. Kelas parsial. Dan keterbatasannya?
  2. Kelas tertutup
  3. Bagaimana pelokalan dapat dilakukan di .NET?
  4. Konektivitas basis data
  5. Berbagai file konfigurasi
  6. Delegasi vs acara
  7. Akses dll yang tidak dikelola
  8. Refleksi
  9. Kelas generik
  10. Terpanas di .NET 3.5
  11. Kerangka pengujian unit yang telah Anda gunakan.
RameshVel
sumber
2

Saya tidak akan mengajukan pertanyaan "tahu sesuatu dari buku teks", tetapi lebih baik menanyakan hal-hal seperti:

  • Apa yang dilakukan foreach loop di plain C #? (Mengharapkan dia untuk menulis loop iterator.)
  • Apa itu singleton?
  • Biarkan dia mem-parsing sebuah String ke Datetime (mengharapkan dia untuk menggunakan TryParse alih-alih mencoba / menangkap)
  • Menerapkan pola tunggal, strategi dan perintah
  • Biarkan dia / dia Refactor sepotong kode untuk pengujian. Mengharapkannya untuk mengabstraksi layanan eksternal dari Unit yang sedang diuji dan mengimplementasikan Uji-ganda layanannya sendiri (tidak menyediakan kerangka kerja mengejek)

Ini tidak 100% pasti, tergantung pada orang yang saya tanyakan:

  • biarkan dia menjaga metode dari input nol (berharap dia menggunakan banyak pengembalian untuk mengurangi bersarang)
  • bagaimana cara kerja penginisialisasi objek (Mengharapkan dia untuk menulis tugas thread-safe)

Saya juga akan bertanya kepadanya bagaimana dia mempelajari barang-barangnya dan apa yang dia baca (blog, buku apa).

Tigrain
sumber
1

Beberapa lagi:

Apa keterbatasan pengumpulan sampah?

Tahu tentang finalizer dan IDisposable.

Waspadai kumpulan utas dan kapan menggunakannya.

Jika Anda melakukan aplikasi GUI - ketahuilah bahwa Windows GUI adalah utas tunggal.

Gunakan foreach (Saya melihat banyak orang melakukan MoveNext dll.)

Brian Rasmussen
sumber
1
Saya tidak tahu, jadi saya mencari tahu keterbatasan pengumpulan sampah .
MSpeed
1

Saya pikir itu bukan hanya pertanyaan, saya tahu beberapa orang yang brilian ketika Anda mewawancarai mereka, tetapi begitu mereka mencapai hal yang sebenarnya, mereka terlalu perfeksionis. Saya akan mengatakan bahwa mereka gagal untuk mengkode tugas dengan menyedihkan.

Saya pernah diwawancarai dan saya agak menyukai pendekatan di mana majikan pertama memberi saya kuesioner teknis untuk diisi dalam 30 menit. Jika seseorang berhasil maka dia akan dipanggil untuk wawancara 1 jam yang meliputi Pertanyaan Penilaian Kepribadian dan pencarian karakter ditambah jargon teknis.

Kemudian saya diminta untuk mengembangkan aplikasi web tiga halaman dalam waktu 6 jam. Kendala yang diberlakukan dalam aplikasi secara cerdas mencakup aspek utama pengembangan aplikasi seperti ERD kecil, Desain Layerd, Konsistensi UI, mengontrol masalah khusus seperti menggunakan tombol Radio di GridView dan Mengambil dan menampilkan jenis gambar dari DB pada halaman web, satu pengembangan algoritma, keamanan, Enkripsi, Hashing, Representasi dan manipulasi data.

Kemudian hari berikutnya mereka diikuti oleh diskusi 30 menit tentang aplikasi yang dikembangkan yang meliputi area bottleneck kinerja dan perbaikan pada desain dan algoritma yang digunakan. Dan tes opsional 1 jam untuk meningkatkan algoritme Anda yang dikembangkan pada langkah sebelumnya dengan kondisi tertentu.

Jadi butuh waktu yang cukup lama tetapi dengan cara ini Anda dapat memastikan bahwa orang yang Anda pekerjakan tahu setidaknya konsep-konsep yang penting untuk menjadi pengembang yang baik.

S M Kamran
sumber
0

Saya lebih suka memberinya masalah dan memintanya untuk menyelesaikannya menggunakan fitur .net yang Anda tahu dan mengapa menurut Anda itu solusi terbaik.

Ini akan memecahkan hampir semua kemampuan kandidat dalam hal keterampilan teknis, analitis dan pemecahan masalah bersama dengan pendekatannya untuk memecahkan masalah.

JPReddy
sumber