Старшее интервью LINQ вопросы [закрыто]

16

Я готовлю раздел LINQ в вопросах интервью для старших программистов. Какие самые интересные вопросы в LINQ включить? И почему?

mBotros
источник

Ответы:

28

Некоторые вещи, которые вы можете спросить, будут похожи.

  • Почему используется varключевое слово и когда это единственный способ получить результат запроса?
  • Что такое отложенное исполнение?
  • Объясните синтаксис выражения запроса, свободный синтаксис, смешанные запросы.
  • Что такое интерпретируемые запросы?
  • Использование IQueryableи IEnumerableинтерфейсы.
  • Использование let и intoключевых слов, и как они помогают в создании прогрессивных запросов, но при этом сохраняют отложенное выполнение
  • Что такое деревья выражений?


Обновить:

Подробные ответы смотрите в этом приятном сообщении от Алексея

Shekhar_Pro
источник
8
Великолепные вопросы. У меня может возникнуть соблазн привести примеры кода и сказать «что это делает?» поскольку я не совсем уверен, что вам нужно знать, что означает термин «Свободный синтаксис», и понимать его.
хммм, а если они заранее отыщут эти темы в Google и запомнят это, как этот подход скажет вам, что на самом деле они могут использовать любой реальный мир LINQ?
Темная ночь
тогда, как сказал выше BTyler ... Вы можете дополнить приведенные выше вопросы примерами кода.
Shekhar_Pro
1
Этот парень написал в блоге о решениях всех этих вопросов: blog4work.com/?tag=/LINQ
Ник Ларсен
Только что увидел пост,
отличная
13

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

Дэвид Нил
источник
6

Вы можете начать с вопроса о том, какие языковые функции, представленные в C # 3, необходимы для поддержки LINQ. Понимает ли кандидат, что для включения LINQ потребовались такие функции, как ключевое слово var, а также анонимные типы, лямбда-выражения и методы расширения?

Стив
источник
Для моего собственного любопытства, зачем нужны анонимные типы? Они могут быть использованы для выбора результатов для удобства, но вы могли бы с тем же успехом определять свои собственные классы с именованными свойствами, не так ли?
Rup
@Rup | Это просто вопрос удобства и синтаксического сахара ... вы, конечно, можете создавать хорошо определенные классы (в любом случае компилятор сделает это за вас за кулисами). но при использовании запросов LINQ вам немедленно нужен тип для содержания результатов ... теперь не представляется полезным продолжать создавать классы для каждого типа, и это может привести к увеличению объема кода и его затруднению в случае изменения набора результатов позже.
Shekhar_Pro
Это не правильно. Для проекций linq-Sql требуются анонимные типы, например, для выбора только определенных столбцов из таблицы / объекта.
Джониба
6

Как насчет некоторых вопросов кодирования, таких как:

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

Вопросы из учебников хороши (например, зачем использовать var), но чтобы действительно узнать, понимают ли они, просто заставьте их писать код.

Стив
источник
4

Если вы ищете вопрос, на который вы получите «интересные» ответы, вы можете спросить их, почему они считают, что большинство примеров linq присваиваются с использованием ключевого слова «var» в LHS ... правильного ответа нет, и вы, вероятно, могли бы получить некоторое представление о типе человека, из которого они говорят.

Майки хогарт
источник
3

Спросите их о деревьях выражения. Как linq преобразуется в sql на сервере базы данных, разница между методами расширения linq и запросами linq

Зависит от того, что вы пытаетесь от них получить.


источник
1
  • В каких ситуациях вы будете использовать First и когда использовать FirstOrDefault?

  • какую проблему решает LINQ?

  • что происходит, когда вы заключаете запрос в .ToList?

Tangurena
источник
позволяет отложенное выполнение.
Linquize
уменьшить вероятность использования цикла for / foreach для улучшения читабельности
linquize
0

Попросите их создать небольшой движок правил, используя Func [] rules {}. Каждое правило должно быть истинным, массив заменяет регистр или оператор if.

Я только начал на linq и lambdas, но думаю, что это хороший тест для решения проблем и грамотности linq.

В дополнение к более квалифицированным предложениям здесь.

Ричард
источник