Kıdemli Röportaj LINQ soruları [kapalı]


16

Kıdemli programcılar için mülakat sorularında bir LINQ bölümü hazırlıyorum. LINQ'da dahil edilmesi gereken en ilginç sorular nelerdir? Ve neden?

Yanıtlar:


28

Sorabileceğiniz bazı şeyler şöyle olurdu.

  • varAnahtar kelime neden kullanılır ve sorgu sonucu almanın tek yolu ne zaman olur?
  • Ertelenmiş İcra Nedir?
  • Sorgu İfadesi sözdizimini, Akıcı Sözdizimini, Karma Sorguları açıklar.
  • Yorumlanan Sorgular nedir?
  • Kullanımı IQueryableve IEnumerablearayüzleri.
  • let Ve intoanahtar kelimelerinin kullanımı ve Aşamalı sorguların yapılmasına nasıl yardımcı olduklarını, ancak yine de Ertelenmiş yürütmeyi sürdürdükleri
  • İfade Ağaçları nedir?


Güncelleme:

Detaylı cevapları için bu bkz güzel yazı tarafından Oleksii


8
Harika sorular. Kod örnekleri vermek ve "bu ne yapar?" Demek cazip olabilir çünkü Akıcı Sözdizimi teriminin bunu kullanması ve anlaması gerektiğini bilmeniz gerektiğine tamamen ikna olmadım.

hmmm, Ve eğer bu konuları elden önce Google'da tutarlar ve ezberlerlerse, bu yaklaşım size gerçek dünya LINQ'larını yapabildiklerini nasıl söyler?
Darknight

BTyler'in yukarıda söylediği gibi ... yukarıdaki soruları kod örnekleri ile tamamlayabilirsiniz.
Shekhar_Pro

1
Bu adam tüm bu soruların çözümleri hakkında blog yazdı: blog4work.com/?tag=/LINQ
Nick Larsen

Sadece yazı gördüm, güzel iş :)
Shekhar_Pro

13

Onlar eğiliminde olacaktır zamanlarda örnekler vermek isteyin değil LINQ ve neden kullanmak mümkün olacaktır (ve ReSharper heyecanla onu da anlaşılacağı) olsa bile,.


6

Başlayabilirsiniz, ancak LINQ'yu desteklemek için C # 3'te tanıtılan dil özelliklerinin gerekli olup olmadığını sormak. Aday, LINQ'yu etkinleştirmek için var anahtar sözcüğü, anonim türler, lambda ifadeleri ve genişletme yöntemleri gibi özelliklerin nasıl gerekli olduğunu anlıyor mu?


Kendi merakım için anonim türler neden gereklidir? Seçme sonuçları için kolaylık olarak kullanılabilirler, ancak kendi sınıflarınızı adlandırılmış özelliklerle eşit derecede iyi tanımlayabilirsiniz değil mi?
Rup

@Rup | Bu sadece bir kolaylık meselesi ve sözdizimsel bir şeker .. tabii ki iyi tanımlanmış sınıflar oluşturabilirsiniz (neyse derleyici bunu sizin için sahne arkasında yapar). ancak LINQ sorgularını kullanırken sonuçları içeren bir türe anında ihtiyacınız vardır ... şimdi bu, her tür için sınıf oluşturmaya devam etmek için verimli görünmüyor ve bu, sonuç kümesi daha sonra değişirse daha fazla koda ve bakımının yapılmasına neden olabilir.
Shekhar_Pro

Bu doğru değil. Linq-Sql projeksiyonları için anonim tipler gereklidir, örneğin bir tablodan / objeden sadece belirli sütunları seçmek için.
joniba

6

Bazı kodlama sorularına ne dersiniz:

  • Daha sonra LINQ'da daha iyi yapılacak olan LINQ olmayan kodu verin ve bunları çevirmelerini sağlayın.
  • Onlara biraz LINQ verin ve çözülmesini ve düz C # ile yeniden yazmasını sağlayın (daha iyisi, LINQ olmayan sürümün daha iyi veya daha kolay anlaşıldığı bir örnek bulun)
  • Onlardan bir sorunu çözmelerini ve LINQ ile / LINQ olmadan göstermelerini isteyin ve hangisinin daha iyi ve neden olduğunu açıklamalarını isteyin.

Ders kitabı soruları iyidir (örn. Neden kullanılır var), ancak anladıklarını anlamak için sadece kod yazmalarını sağlayın.


4

"İlginç" yanıtlar alacağınız bir soru arıyorsanız, onlara çoğu linq örneğinin neden LHS'deki "var" anahtar sözcüğünü kullanarak atandığını düşündüklerini sorabilirsiniz ... doğru cevap yok ve muhtemelen söyledikleri kişiden ne tür biri olduğunu anlayabilirler.


3

Onlara ifade ağaçları hakkında soru sorun. Linq'in veritabanı sunucusunda sql'ye nasıl dönüştüğü linq uzantısı yöntemleri ve linq sorgusu arasındaki fark

Onlardan ne almaya çalıştığınıza bağlıdır.


1
  • First'i ve ne zaman FirstOrDefault'u kullanacağınız durumlar nelerdir?

  • LINQ hangi problemi çözüyor?

  • .ToList içinde sorguyu sardığınızda ne olur?


ertelenmiş yürütmeye izin verir.
linquize

okunabilirliği artırmak için / foreach döngüsü kullanma şansını azaltın
9:07

0

Onlardan Func [] kurallarını {} kullanarak küçük bir kural motoru oluşturmalarını isteyin. Her kural true, dizi yerine case veya if ifadeleri olmalıdır.

Linq ve lambdas'a yeni başladım ama bunun problem çözme ve linq okuryazarlığı için güzel bir test olduğunu anladım.

Burada daha nitelikli önerilere ek olarak.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.