C# C#  ·  25 вопросов  ·  ~70 мин  ·  ⏱ Таймер 10:00  ·  Сложный  · 

Продвинутый LINQ

Собирает более сложные задачи LINQ: собственные операторы, comparer, сортировки, буферизацию, PLINQ и границу между IEnumerable и IQueryable. Здесь нужно оценить не только результат, но и число проходов, переводимость выражения и стоимость цепочки.

Отвечено: 0 из 25
⏱ --:--
0%
💡 Инструкция: Выберите один ответ из пяти. На 25 вопросов отведено 70 минут. В заданиях с кодом учитывайте указанную конструкцию и не додумывайте отсутствующие условия. После завершения откроются общий результат, тематические шкалы и разбор каждого ответа.
Вопрос 1 из 25
Какую последовательность сформирует SelectMany из двух вложенных массивов?
C#
var nested = new[] { new[] { 1, 2 }, new[] { 3 } };
Console.WriteLine(string.Join(',', nested.SelectMany(x => x)));
Вопрос 2 из 25
Чем Select отличается от SelectMany для свойства Tags?
C#
IEnumerable<IEnumerable<string>> nested = posts.Select(p => p.Tags);
IEnumerable<string> flat = posts.SelectMany(p => p.Tags);
Вопрос 3 из 25
Как сохранить и Order, и каждый Line?
C#
var rows = orders.SelectMany(
    order => order.Lines,
    (order, line) => new { order.Id, line.ProductId, line.Quantity });
Вопрос 4 из 25
Что даст SelectMany по строкам заказа, если у одного заказа дочерняя коллекция пуста?
Вопрос 5 из 25
Как получить все слова из строк текста?
C#
var words = lines.SelectMany(line =>
    line.Split(' ', StringSplitOptions.RemoveEmptyEntries));
Вопрос 6 из 25
Как удалить дубли email без учёта регистра?
Вопрос 7 из 25
Что должен обеспечивать IEqualityComparer<T>?
Вопрос 8 из 25
В каком порядке окажутся записи с одинаковым Score?
C#
var sorted = players.OrderByDescending(p => p.Score);
Вопрос 9 из 25
Когда удобен DistinctBy(x => x.CustomerId)?
Вопрос 10 из 25
Почему comparer по CultureInfo.CurrentCulture может быть нестабилен для идентификаторов?
C#
var ids = values.OrderBy(x => x, StringComparer.Ordinal);
Вопрос 11 из 25
Что произойдёт?
C#
var items = new[] { (Id: 1, Name: "A"), (Id: 1, Name: "B") };
var map = items.ToDictionary(x => x.Id);
Вопрос 12 из 25
Чем ToLookup отличается от ToDictionary для повторяющихся ключей?
Вопрос 13 из 25
Когда ToArray предпочтительнее ToList?
Вопрос 14 из 25
Почему ранний ToList может ухудшить запрос?
C#
var result = source
    .Select(Parse)
    .ToList()
    .Where(x => x.IsRelevant);
Вопрос 15 из 25
Как защитить публичный результат от изменения вызывающим кодом?
C#
public IReadOnlyList<Item> Snapshot() => items.ToArray();
Вопрос 16 из 25
Какова типичная проблема этой цепочки при n customers и m orders?
C#
var rows = customers.Select(c =>
    (c, orders.FirstOrDefault(o => o.CustomerId == c.Id)));
Вопрос 17 из 25
Почему Any() обычно лучше Count() > 0 для общего IEnumerable?
Вопрос 18 из 25
Какой оператор обязан буферизовать весь источник перед первой выдачей?
Вопрос 19 из 25
Что не так с двумя последовательными OrderBy?
C#
var query = people
    .OrderBy(p => p.LastName)
    .OrderBy(p => p.FirstName);
Вопрос 20 из 25
Когда PLINQ может оказаться хуже последовательного LINQ?
Вопрос 21 из 25
Почему benchmark должен потребить результат запроса?
C#
[Benchmark]
public int FilterAndSum() => data.Where(Predicate).Sum();
Вопрос 22 из 25
Как поймать случайный второй проход по источнику?
Вопрос 23 из 25
Что нужно проверить у запроса IQueryable после оптимизации?
C#
var query = db.Orders
    .Where(o => o.CreatedAt >= from)
    .GroupBy(o => o.CustomerId)
    .Select(g => new { g.Key, Total = g.Sum(x => x.Total) });
Вопрос 24 из 25
Какая проверка важна для comparer?
Вопрос 25 из 25
Что полезно записывать вокруг тяжёлого LINQ-этапа?
C#
var before = source.Count;
var sw = Stopwatch.StartNew();
var result = Transform(source).ToArray();
log.LogInformation("Stage {Stage}: {Before}->{After} in {Elapsed}ms",
    "pricing", before, result.Length, sw.ElapsedMilliseconds);

Ответьте на все 25 вопросов, чтобы получить результат

🔗 Встроить тест на свой сайт (iframe) ▼

Скопируйте код и вставьте в любое место на вашем сайте:

Также доступна прямая ссылка на embed-страницу