Питання LINQ для інтерв'ю для старших [закрито]


16

Я готую розділ LINQ в питаннях інтерв'ю для старших програмістів. Які найцікавіші питання LINQ слід включити? І чому?

Відповіді:


28

Деякі речі, про які ви можете запитати, виглядають як.

  • Чому використовується varключове слово і коли це єдиний спосіб отримати результат запиту?
  • Що таке відкладене виконання?
  • Поясніть синтаксис виразів запитів, вільний синтаксис, змішані запити.
  • Що таке інтерпретовані запити?
  • Використання IQueryableта IEnumerableінтерфейси.
  • Використання let та intoключові слова та те, як вони допомагають у виконанні прогресивних запитів, але все ще зберігають відкладене виконання
  • Що таке виразні дерева?


Оновлення:

Для детальної відповіді побачити цей хороший пост по Олексію


8
Чудові питання. Мені може сподобатися навести приклади коду і сказати "що це робить?" тому що я не повністю переконаний, що вам потрібно знати, що таке термін «Синійний синтаксис», щоб його використовувати та розуміти.

хммм, І якщо вони переглядають ці теми перед рукою і запам'ятовують її, то як цей підхід говорить вам, що вони насправді можуть робити будь-який реальний світ LINQ?
Темна ніч

то, як BTyler сказав вище ... ви можете доповнювати вищезазначені питання зразками коду.
Shekhar_Pro

1
Цей хлопець розмовляв про рішення всіх цих питань: blog4work.com/?tag=/LINQ
Нік Ларсен

Щойно побачив пост, приємна робота :)
Shekhar_Pro

13

Попросіть їх навести приклади часів, коли вони прагнуть не використовувати LINQ і чому, хоча це було б можливо (і ReSharper із захопленням пропонує це).


6

Можна почати, але запитати, які мовні функції, запроваджені в C # 3, потрібні для підтримки LINQ. Чи розуміє кандидат, як потрібні такі функції, як ключове слово var, а також анонімні типи, лямбда-вирази та методи розширення для включення LINQ?


Для моєї власної цікавості, чому потрібні анонімні типи? Вони можуть бути використані для вибору результатів як зручності, але ви можете однаково добре визначити власні класи з названими властивостями, чи не так?
Rup

@Rup | Це лише питання зручності та синтаксичного цукру. Ви, звичайно, можете створити чітко визначені класи (у будь-якому випадку компілятор робить це для вас поза сценою). але, використовуючи LINQ-запити, вам миттєво потрібен тип, щоб містити результати ... тепер це не здається продуктивним для продовження створення класів для кожного типу, і це може призвести до появи більшого коду і важко підтримувати, якщо набір результатів зміниться пізніше.
Shekhar_Pro

Це не правильно. Анонімні типи потрібні для проекцій linq-Sql, наприклад, для вибору лише певних стовпців із таблиці / сутності.
joniba

6

Як щодо питань кодування, наприклад:

  • Дайте тоді не-LINQ код, який краще зробити в LINQ, і змусьте їх перекласти його.
  • Дайте їм декілька LINQ і змусьте їх розгадувати та переписати на звичайному C # (ще краще, знайдіть приклад, коли нелінійну версію краще чи легше зрозуміти)
  • Попросіть їх вирішити якусь проблему і показати з / без LINQ і запропонувати їм пояснити, що краще, і чому.

Питання з текстовими книгами чудово (наприклад, для чого користуватися var), але щоб дійсно з'ясувати, чи розуміють вони, просто змусять їх написати код.


4

Якщо ви шукаєте запитання, на яке ви отримаєте "цікаві" відповіді, ви можете запитати їх, чому вони думають, що більшість прикладів linq призначають за допомогою ключового слова "var" на LHS ... правильної відповіді немає, і ви, ймовірно, могли б зрозуміти тип людини, з якої вони говорять.


3

Запитайте їх про дерева виразів. Як linq перетворюється на sql на сервері баз даних, різниця між методами розширення linq та запитами linq

Залежить, що ви намагаєтеся вийти з них.


1
  • які ситуації ви б використовували First і коли використовувати FirstOrDefault?

  • яку проблему вирішує LINQ?

  • що відбувається, коли ви загортаєте запит у .ToList?


дозволяє відкласти виконання.
зв’язати

знизити ймовірність використання циклу for / foreach для поліпшення читабельності
зв’язати

0

Попросіть їх побудувати механізм невеликих правил, використовуючи правила Func [] {}. Кожне правило має бути істинним, масив, що замінює випадок case або if.

Я щойно почав працювати з linq та lambdas, але вважаю, що це приємний тест на вирішення проблем та грамотність у linq.

На додаток до більш кваліфікованих пропозицій тут.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.