Wywiad dla seniorów Pytania LINQ [zamknięte]

16

Przygotowuję sekcję LINQ w pytaniach do wywiadu dla starszych programistów. Jakie są najciekawsze pytania w LINQ? I dlaczego?

mBotros
źródło

Odpowiedzi:

28

Niektóre z rzeczy, o które możesz zapytać, byłyby.

  • Dlaczego varsłowo kluczowe jest używane i kiedy jest to jedyny sposób na uzyskanie wyniku zapytania?
  • Co to jest odroczenie wykonania?
  • Wyjaśnij składnię wyrażeń zapytań, płynną składnię, zapytania mieszane.
  • Co to są interpretowane zapytania?
  • Zastosowanie IQueryablei IEnumerableinterfejsy.
  • Zastosowanie let i intosłowo kluczowe oraz sposób, w jaki pomagają w tworzeniu zapytań progresywnych, ale nadal zachowują odroczoną realizację
  • Co to są drzewa wyrażeń?


Aktualizacja:

Aby uzyskać szczegółowe odpowiedzi, zobacz ten miły post autorstwa Oleksii

Shekhar_Pro
źródło
8
Świetne pytania. Kusi mnie, by podać przykłady kodu i powiedzieć „co to robi?” ponieważ nie jestem do końca przekonany, że musisz wiedzieć, czym jest termin „płynna składnia” i go rozumieć.
hmmm, a jeśli Google wcześniej omawiają te tematy i zapamiętują je, w jaki sposób to podejście mówi ci, że mogą oni faktycznie wykonać LINQ w prawdziwym świecie?
Darknight
potem, jak powiedział powyżej BTyler ... możesz uzupełnić powyższe pytania przykładowymi kodami.
Shekhar_Pro
1
Ten facet napisał na blogu o rozwiązaniu wszystkich tych pytań: blog4work.com/?tag=/LINQ
Nick Larsen
Właśnie zobaczyłem post, fajna robota :)
Shekhar_Pro
13

Poproś, aby podać przykłady czasach kiedy mają tendencję do nie używać LINQ i dlaczego, chociaż byłoby to możliwe (i ReSharper podnieceniu Sugeruje).

David Neale
źródło
6

Możesz zacząć od pytania, jakie funkcje językowe wprowadzone w C # 3 są potrzebne do obsługi LINQ. Czy kandydat rozumie, w jaki sposób funkcje takie jak słowo kluczowe var, anonimowe typy, wyrażenia lambda i metody rozszerzenia były potrzebne do włączenia LINQ?

Steve
źródło
Dla własnej ciekawości, dlaczego potrzebne są anonimowe typy? Można je wykorzystać do wygodnego wybierania wyników, ale równie dobrze można zdefiniować własne klasy o nazwanych właściwościach, prawda?
Rup
@Rup | To tylko kwestia wygody i cukru syntaktycznego. Możesz oczywiście stworzyć dobrze zdefiniowane klasy (w każdym razie kompilator robi to za tobą). ale podczas korzystania z zapytań LINQ od razu potrzebujesz typu zawierającego wyniki ... teraz nie wydaje się produktywne, aby nadal tworzyć klasy dla każdego typu, a to może prowadzić do większej ilości kodu i trudne do utrzymania, jeśli zestaw wyników zmieni się później.
Shekhar_Pro
To nie jest poprawne Anonimowe typy są wymagane w przypadku projekcji linq-to-Sql, na przykład w celu wybrania tylko niektórych kolumn z tabeli / encji.
joniba
6

Co powiesz na niektóre pytania kodujące, takie jak:

  • Podaj kod inny niż LINQ, który lepiej byłoby wykonać w LINQ, i poproś go o przetłumaczenie.
  • Daj im trochę LINQ i pozwól im się rozwikłać i ponownie napisać w zwykłym C # (jeszcze lepiej, znajdź przykład, w którym wersja inna niż LINQ jest lepsza lub łatwiejsza do zrozumienia)
  • Poproś ich, aby rozwiązali jakiś problem i pokazali z / bez LINQ i poprosili o wyjaśnienie, co jest lepsze i dlaczego.

Pytania z podręczników są w porządku (np. Po co korzystać var), ale aby naprawdę dowiedzieć się, czy rozumieją, po prostu poproś ich o napisanie kodu.

Steve
źródło
4

Jeśli szukasz pytania, na które uzyskasz „interesujące” odpowiedzi, możesz zapytać, dlaczego według nich większość przykładów linq przypisuje za pomocą słowa kluczowego „var” na LHS ... nie ma właściwej odpowiedzi i prawdopodobnie możesz uzyskać wiedzę na temat rodzaju osoby, z której pochodzą.

Mikey Hogarth
źródło
3

Zapytaj ich o drzewa ekspresji. Jak linq przekształca się w sql na serwerze bazy danych, różnica między metodami rozszerzenia linq a zapytaniami linq

Zależy, co próbujesz z nich wydostać.


źródło
1
  • jakie są sytuacje, w których użyłbyś First i kiedy użyć FirstOrDefault?

  • jaki problem rozwiązuje LINQ?

  • co się stanie, gdy otoczysz zapytanie .ToList?

Tangurena
źródło
umożliwia odroczenie wykonania.
linquize
zmniejsz szansę na użycie pętli for / foreach w celu poprawy czytelności
linquize
0

Poproś, aby zbudowali mały silnik reguł, używając zasad Func [] {}. Każda reguła musi być prawdziwa, tablica zastępuje wielkość liter lub instrukcje if.

Właśnie zacząłem od linq i lambdas, ale myślę, że to niezły test rozwiązywania problemów i znajomości linq.

Oprócz bardziej wykwalifikowanych sugestii tutaj.

Richard
źródło