Wawancara Senior pertanyaan LINQ [ditutup]

16

Saya sedang menyiapkan bagian LINQ dalam pertanyaan wawancara untuk programmer senior. Apa pertanyaan paling menarik di LINQ untuk dimasukkan? Dan mengapa?

mBotro
sumber

Jawaban:

28

Beberapa hal yang bisa Anda tanyakan akan seperti.

  • Mengapa varkata kunci digunakan dan ketika itu adalah satu-satunya cara untuk mendapatkan hasil permintaan?
  • Apa itu Eksekusi yang Ditangguhkan?
  • Jelaskan sintaks Ekspresi Kueri, Sintaks Lancar, Kueri Campuran.
  • Apa itu Pertanyaan yang Ditafsirkan?
  • Penggunaan IQueryabledan IEnumerableantarmuka.
  • Penggunaan let dan intokata kunci, dan bagaimana mereka membantu dalam membuat pertanyaan Progresif tetapi masih tetap menunda eksekusi
  • Apa itu Pohon Ekspresi?


Memperbarui:

Untuk jawaban terperinci lihat posting bagus ini oleh Oleksii

Shekhar_Pro
sumber
8
Pertanyaan besar Saya mungkin tergoda untuk memberikan contoh kode dan mengatakan "apa fungsinya?" karena saya tidak sepenuhnya yakin bahwa Anda perlu tahu apa istilah Sintaks Lancar untuk digunakan dan memahaminya.
hmmm, Dan jika mereka Google topik-topik itu sebelumnya dan menghafalnya, bagaimana pendekatan ini memberitahu Anda bahwa mereka benar-benar dapat melakukan LINQ dunia nyata?
Darknight
kemudian seperti yang dikatakan BTyler di atas ... Anda dapat melengkapi pertanyaan di atas dengan contoh kode.
Shekhar_Pro
1
Orang ini membuat blog tentang solusi untuk semua pertanyaan ini: blog4work.com/?tag=/LINQ
Nick Larsen
Baru saja melihat pos, kerja bagus :)
Shekhar_Pro
13

Minta mereka untuk memberikan contoh saat mereka cenderung tidak menggunakan LINQ dan mengapa, meskipun itu mungkin (dan ReSharper dengan penuh semangat menyarankannya).

David Neale
sumber
6

Anda bisa mulai tetapi menanyakan fitur bahasa apa yang diperkenalkan pada C # 3 yang diperlukan untuk mendukung LINQ. Apakah kandidat memahami bagaimana fitur seperti kata kunci var serta jenis anonim, ekspresi lambda dan metode ekstensi diperlukan untuk mengaktifkan LINQ?

Steve
sumber
Untuk rasa penasaran saya sendiri, mengapa jenis anonim diperlukan? Mereka dapat digunakan untuk hasil yang dipilih sebagai kenyamanan tetapi Anda juga bisa mendefinisikan kelas Anda sendiri dengan properti yang dinamai kan?
Rup
@Rup | Ini hanya masalah kenyamanan dan gula sintaksis .. Anda tentu saja dapat membuat Kelas yang Didefinisikan Baik (bagaimanapun kompiler melakukannya untuk Anda di belakang layar). tetapi saat menggunakan kueri LINQ Anda secara instan memerlukan jenis yang berisi hasil ... sekarang ini tampaknya tidak produktif untuk terus membuat kelas untuk setiap jenis dan ini dapat menyebabkan lebih banyak kode dan sulit dipertahankan jika hasilnya mengubah kemudian.
Shekhar_Pro
Itu tidak benar. Jenis anonim diperlukan untuk proyeksi linq-ke-Sql, misalnya untuk memilih hanya kolom tertentu dari tabel / entitas.
joniba
6

Bagaimana dengan beberapa pertanyaan pengkodean, seperti:

  • Berikan kode non-LINQ yang lebih baik dilakukan di LINQ dan minta mereka menerjemahkannya.
  • Beri mereka beberapa LINQ dan buat mereka untuk menguraikan dan menulis ulang dalam polos C # (lebih baik lagi, temukan contoh di mana versi non-LINQ lebih baik atau lebih mudah dipahami)
  • Minta mereka untuk memecahkan beberapa masalah dan tunjukkan dengan / tanpa LINQ dan minta mereka menjelaskan mana yang lebih baik, dan mengapa.

Pertanyaan buku teks baik-baik saja (misalnya mengapa digunakan var), tetapi untuk benar-benar mencari tahu jika mereka mengerti hanya membuat mereka untuk menulis kode.

Steve
sumber
4

Jika Anda mencari pertanyaan yang Anda akan mendapatkan jawaban "menarik", Anda bisa bertanya kepada mereka mengapa menurut mereka sebagian besar contoh linq ditetapkan menggunakan kata kunci "var" di LHS ... tidak ada jawaban yang tepat dan Anda mungkin bisa dapatkan pemahaman tentang tipe orang dari apa yang mereka katakan.

Mikey Hogarth
sumber
3

Tanyakan kepada mereka tentang pohon ekspresi. Bagaimana linq mentransformasikannya menjadi sql pada server database perbedaan antara metode ekstensi linq dan query linq

Tergantung apa yang Anda coba untuk keluar dari mereka.


sumber
1
  • apa situasi di mana Anda akan menggunakan Pertama dan kapan harus menggunakan FirstOrDefault?

  • masalah apa yang dipecahkan LINQ?

  • apa yang terjadi ketika Anda membungkus kueri di .ToList?

Tangurena
sumber
memungkinkan eksekusi yang ditangguhkan.
linquize
mengurangi kemungkinan menggunakan for / foreach loop untuk meningkatkan keterbacaan
linquize
0

Minta mereka untuk membuat mesin aturan kecil, menggunakan aturan Func [] {}. Setiap aturan harus benar, array yang menggantikan case atau pernyataan if.

Saya baru saja mulai dengan linq dan lambdas tetapi menemukan ini adalah tes yang bagus untuk pemecahan masalah dan literasi linq.

Selain saran yang lebih berkualitas di sini.

Richard
sumber