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?

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


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


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?


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.


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


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


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?


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.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.