Где возможна скрытая аллокация (boxing) при foreach?
👾 — По List<int>
👍 — По IEnumerable<int> поверх List<int>
🥰 — По массиву int[]
⚡️ — В обычном for
🐸 Библиотека задач по C#
👾 — По List<int>
👍 — По IEnumerable<int> поверх List<int>
🥰 — По массиву int[]
Please open Telegram to view this post
VIEW IN TELEGRAM
👍21🌚1
Почему Task.Result/.Wait() могут «вешать» UI/ASP.NET classic?
👾 — Потому что Task требует STA-поток
👍 — Из-за захвата SynchronizationContext: продолжение ждёт UI-поток, который блокирует синхронное ожидание
🥰 — Потому что GC останавливает мир на ожидании
⚡️ — Потому что Result всегда делает бесконечный spinwait
Библиотека задач по C#
👾 — Потому что Task требует STA-поток
👍 — Из-за захвата SynchronizationContext: продолжение ждёт UI-поток, который блокирует синхронное ожидание
🥰 — Потому что GC останавливает мир на ожидании
⚡️ — Потому что Result всегда делает бесконечный spinwait
Библиотека задач по C#
👍22
Какое свойство массива используется для получения общего количества элементов в C#?
👾 — Len
👍 — Length
🥰 — Elements
⚡️ — MaxLen
Библиотека задач по C#
👾 — Len
👍 — Length
🥰 — Elements
⚡️ — MaxLen
Библиотека задач по C#
👍37🥱3👾1
🥰22⚡11
Нужно запланировать периодическую асинхронную задачу в ASP.NET Core (каждую минуту), чтобы не было overlap, корректно обрабатывалась отмена на shutdown и не было async void ловушек. Что выбрать?
👾 — System.Timers.Timer с async void обработчиком
👍 — Бесконечный цикл с await Task.Delay(60000) без CancellationToken
🥰 — PeriodicTimer и await timer.WaitForNextTickAsync(ct); выполнение шага завершать перед следующей итерацией
⚡️ — Фоновый поток с Thread.Sleep(60000)
🐸 Библиотека задач по C#
👾 — System.Timers.Timer с async void обработчиком
👍 — Бесконечный цикл с await Task.Delay(60000) без CancellationToken
🥰 — PeriodicTimer и await timer.WaitForNextTickAsync(ct); выполнение шага завершать перед следующей итерацией
Please open Telegram to view this post
VIEW IN TELEGRAM
🥰12
Почему lock(this) — антипаттерн?
👾 — Блокирует сборщик мусора
👍 — Публичный монитор: внешний код может тоже его захватить → риск дедлоков; используйте приватный объект (private readonly object _gate = new();)
🥰 — Потому что this не является ссылочным типом
⚡️ — Потому что lock — это всегда spinlock без ожидания
Библиотека задач по C#
👾 — Блокирует сборщик мусора
👍 — Публичный монитор: внешний код может тоже его захватить → риск дедлоков; используйте приватный объект (private readonly object _gate = new();)
🥰 — Потому что this не является ссылочным типом
⚡️ — Потому что lock — это всегда spinlock без ожидания
Библиотека задач по C#
👍23🥰2🤩1
В
Какой подход правильный?
👾 — Обернуть вызов в Task.Run(...)
👍 — Увеличить ThreadPool.SetMinThreads(...)
🥰 — Сделать весь путь асинхронным: await httpClient.SendAsync(req, ct) и дальше — только async/await без .Result/.Wait()
⚡️ — Добавить ConfigureAwait(false) к текущему коду
🐸 Библиотека задач по C#
ASP.NET Core под нагрузкой растут таймауты и длина очереди ThreadPool. В коде встречается вызов внешнего HTTP так:var resp = httpClient.SendAsync(req).Result; // блокировка
Какой подход правильный?
👾 — Обернуть вызов в Task.Run(...)
👍 — Увеличить ThreadPool.SetMinThreads(...)
🥰 — Сделать весь путь асинхронным: await httpClient.SendAsync(req, ct) и дальше — только async/await без .Result/.Wait()
Please open Telegram to view this post
VIEW IN TELEGRAM
🥰35
Выберите исключения, генерируемые методом GetReponse(), определенным WebRequest
👾 — WebException
👍 — InvalidOperationException
🥰 — ProtocolViolationException
⚡️ — Все вышеперечисленное
Библиотека задач по C#
👾 — WebException
👍 — InvalidOperationException
🥰 — ProtocolViolationException
⚡️ — Все вышеперечисленное
Библиотека задач по C#
⚡6
Нужно задавать разные таймауты на каждый HTTP-запрос при использовании IHttpClientFactory, не ломая длительные стриминговые ответы и не влияя на глобальный HttpClient.Timeout. Какой подход корректный?
👾 — Перед каждым вызовом менять HttpClient.Timeout
👍 — Оставить HttpClient.Timeout по умолчанию и передавать в SendAsync свой CancellationToken из CancellationTokenSource с CancelAfter(...)
🥰 — Оборачивать вызов в Task.Run и ждать Wait(timeout)
⚡️ — Настроить ServicePointManager с глобальным таймаутом
🐸 Библиотека задач по C#
👾 — Перед каждым вызовом менять HttpClient.Timeout
👍 — Оставить HttpClient.Timeout по умолчанию и передавать в SendAsync свой CancellationToken из CancellationTokenSource с CancelAfter(...)
🥰 — Оборачивать вызов в Task.Run и ждать Wait(timeout)
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11👏1
Почему приватный виртуальный метод нельзя переопределить в C#?
Потому что приватные виртуальные методы недоступны за пределами класс а.
Библиотека задач по C#
Потому что приватные виртуальные методы недоступны за пределами класс
Библиотека задач по C#
Что такое упаковка и распаковка?
Пример: «Преобразование типа значения в ссылочный тип называется «упаковкой». Явное преобразование того же ссылочного типа, который создается путем упаковки обратно в тип значения, называется «распаковкой».
Библиотека задач по C#
Пример: «Преобразование типа значения в ссылочный тип называется «упаковкой». Явное преобразование того же ссылочного типа, который создается путем упаковки обратно в тип значения, называется «распаковкой».
Библиотека задач по C#
❤1
У вас есть сервис на .NET, обрабатывающий большое количество параллельных запросов к базе данных. При нагрузочном тестировании вы замечаете, что количество потоков резко растёт, а производительность падает. Какой подход будет наиболее правильным для оптимизации?
👾 — Использовать Task.Run вокруг всех вызовов к базе, чтобы явно распараллелить операции
👍 — Применить асинхронный доступ к базе данных (async/await) с использованием I/O-bound операций
🥰 — Увеличить ThreadPool.SetMinThreads, чтобы обрабатывать больше потоков одновременно
⚡️ — Переписать сервис на синхронный код, чтобы избежать overhead от async/await
Библиотека задач по C#
👾 — Использовать Task.Run вокруг всех вызовов к базе, чтобы явно распараллелить операции
👍 — Применить асинхронный доступ к базе данных (async/await) с использованием I/O-bound операций
🥰 — Увеличить ThreadPool.SetMinThreads, чтобы обрабатывать больше потоков одновременно
⚡️ — Переписать сервис на синхронный код, чтобы избежать overhead от async/await
Библиотека задач по C#
👍22⚡1🥰1
Что выведет код?
👾 — Caught invalid operation
👍 — Invalid operation
🥰 — Error
⚡️ — Ничего из вышеперечисленного
Библиотека задач по C#
👾 — Caught invalid operation
👍 — Invalid operation
🥰 — Error
⚡️ — Ничего из вышеперечисленного
Библиотека задач по C#
👾65⚡1🥰1
Атрибуты ______ могут использоваться для проверки данных в MVC ASP.NET
👾 — DataAnnotations
👍 — Fluent API
🥰 — DataModel
⚡️ — HtmlHelper
Библиотека задач по C#
👾 — DataAnnotations
👍 — Fluent API
🥰 — DataModel
Библиотека задач по C#
Please open Telegram to view this post
VIEW IN TELEGRAM
👾36⚡1
В чем разница между Convert.ToString() и ToString()?
👾 — Convert.ToString() обрабатывает значения null, а ToString() — нет
👍 — ToString() выводит данные в соответствии с предоставленным форматом
🥰 — Convert.ToString() обрабатывает только значения null
⚡️ — ToString() обрабатывает значения null, а Convert.ToString() — нет
🐸 Библиотека задач по C#
👾 — Convert.ToString() обрабатывает значения null, а ToString() — нет
👍 — ToString() выводит данные в соответствии с предоставленным форматом
🥰 — Convert.ToString() обрабатывает только значения null
Please open Telegram to view this post
VIEW IN TELEGRAM
👾28
В высоконагруженном .NET сервисе вы часто работаете со строками: конкатенация, парсинг, подстроки. Профилирование показывает большое количество аллокаций и нагрузку на GC. Какой подход будет наиболее правильным для оптимизации?
👾 — Использовать обычный оператор + для конкатенации строк — компилятор сам оптимизирует
👍 — Применить StringBuilder для конкатенации и Span<T>/Memory<T> для работы с подстроками без копирования
🥰 — Перейти на dynamic, чтобы уменьшить количество перегрузок
⚡️ — Вызывать GC.Collect() вручную после больших операций со строками
Библиотека задач по C#
👾 — Использовать обычный оператор + для конкатенации строк — компилятор сам оптимизирует
👍 — Применить StringBuilder для конкатенации и Span<T>/Memory<T> для работы с подстроками без копирования
🥰 — Перейти на dynamic, чтобы уменьшить количество перегрузок
⚡️ — Вызывать GC.Collect() вручную после больших операций со строками
Библиотека задач по C#
👍39
В сцене тысячи одинаковых движущихся объектов (NPC/пропсы). Рендер стал упираться в количество draw calls. Какой подход даст наибольший выигрыш без серьёзных правок контента?
👾 — Включить GPU Instancing на материале и рисовать пачками (Graphics.DrawMeshInstanced*/URP/HDRP instancing)
👍 — Включить Static Batching для всех объектов
🥰 — Полагаться на Dynamic Batching — он объединит большинство мешей автоматически
⚡️ — Увеличить shadow distance, чтобы тени реже считались
🐸 Библиотека задач по C#
👾 — Включить GPU Instancing на материале и рисовать пачками (Graphics.DrawMeshInstanced*/URP/HDRP instancing)
👍 — Включить Static Batching для всех объектов
🥰 — Полагаться на Dynamic Batching — он объединит большинство мешей автоматически
Please open Telegram to view this post
VIEW IN TELEGRAM
👾3
Какой из следующих синтаксисов поддерживает LINQ?
👾 — Синтаксис запросов
👍 — Синтаксис методов
🥰 — И тот, и тот
Библиотека задач по C#
👾 — Синтаксис запросов
👍 — Синтаксис методов
🥰 — И тот, и тот
Библиотека задач по C#
🥰35😢1
Какой встроенный компонент необходим для воспроизведения аудиофайлов в Unity?
👾 — Audio Manager
👍 — Sound Manager
🥰 — Audio Source
⚡️ — Audio Clip
Библиотека задач по C#
👾 — Audio Manager
👍 — Sound Manager
🥰 — Audio Source
⚡️ — Audio Clip
Библиотека задач по C#
🥰7💯1
Что бросит await Task.WhenAll(tasks) при ошибках?
👾 — Всегда AggregateException, даже при одной ошибке
⚡ — При одной ошибке — саму эту ошибку; при нескольких — AggregateException (все доступны в t.Exception.InnerExceptions)
👍 — Никогда не бросает, просто возвращает результаты успешных задач
🥰 — Отменяет остальные задачи при первом падении
🔹 Курс «Программирование на языке Python»
🔹 Получить консультацию менеджера
🔹 Сайт Академии 🔹 Сайт Proglib
Библиотека задач по C#
👾 — Всегда AggregateException, даже при одной ошибке
⚡ — При одной ошибке — саму эту ошибку; при нескольких — AggregateException (все доступны в t.Exception.InnerExceptions)
👍 — Никогда не бросает, просто возвращает результаты успешных задач
🥰 — Отменяет остальные задачи при первом падении
🔹 Курс «Программирование на языке Python»
🔹 Получить консультацию менеджера
🔹 Сайт Академии 🔹 Сайт Proglib
Библиотека задач по C#
⚡16👾4😁1