Специализация
Python Backend Developer
Java Backend Developer
Node.js Backend Developer
Golang Backend Developer
React Frontend Developer
Выберите навыки
React
JavaScript
Git
Redux
Webpack
Сложность
1-3
4-6
7-8
9-10
Рейтинг вопросов
1
2
3
4
5
Подпишись на React Developer в телеграм
Что такое LINQ в C#?
LINQ (Language Integrated Query) — это встроенный в C# инструмент для удобного запроса данных. Он позволяет работать с коллекциями, базами данных, XML и другими источниками с использованием SQL-подобного синтаксиса.
В чём отличие сигнатур методов расширения LINQ (Where, OrderBy и т. д.) для IEnumerable<T> и IQueryable<T>?
Для IEnumerable<T> методы расширения принимают Func<T, bool> (делегат), обрабатывая элементы в памяти, а для IQueryable<T> — Expression<Func<T, bool>> (дерево выражения), которое провайдер анализирует для перевода в удалённый запрос. Остальные методы (Select, OrderBy) аналогично различаются по типу параметра, что определяет, где и как выполняется логика.
Объясните механизм deferred execution (отложенного выполнения) в LINQ на примере First() и счётчика.
Deferred execution означает, что LINQ-запрос не исполняется при его описании, а только при переборе или вызове терминального оператора (ToList(), First()). Например, var q = data.Where(x=>++counter>0); не увеличит counter пока вы не вызовете q.First() или не переберёте q, тогда counter станет 1 при первом удовлетворяющем элементе.
В чём заключается классическая проблема с IEnumerable и отложенным выполнением в LINQ?
Классическая проблема возникает, когда LINQ-запрос (который выполняется отложенно) оценивается более одного раза, особенно если источник данных или вычисления внутри запроса изменяются или являются "дорогими". Это может привести к неожиданным результатам (если данные изменились между оценками) или к серьёзным проблемам с производительностью (если сложные вычисления повторяются).
Рейтинг:
2
Сложность:
5
Рейтинг:
2
Сложность:
6
Рейтинг:
2
Сложность:
6
Рейтинг:
2
Сложность:
7