Библиотека задач по C# | тесты, код, задания
5.02K subscribers
450 photos
4 videos
593 links
Задачи и тесты по C# для тренировки и обучения.

По рекламе: @proglib_adv

Учиться у нас: https://proglib.io/w/05448a24

Для обратной связи: @proglibrary_feeedback_bot

Наши каналы: https://t.me/proglibrary/9197
Download Telegram
Где возможна скрытая аллокация (boxing) при foreach?

👾 — По List<int>
👍 — По IEnumerable<int> поверх List<int>
🥰 — По массиву int[]
⚡️ — В обычном for

🐸Библиотека задач по C#
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#
👍22
Какое свойство массива используется для получения общего количества элементов в C#?

👾 — Len
👍 — Length
🥰 — Elements
⚡️ — MaxLen

Библиотека задач по C#
👍37🥱3👾1
Сколько типов модификаторов доступа в C#?

👾 — 2
👍 — 3
🥰 — 4
⚡️ — 5

Библиотека задач по C#
🥰2211
Нужно запланировать периодическую асинхронную задачу в 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#
Please open Telegram to view this post
VIEW IN TELEGRAM
🥰12
Почему lock(this) — антипаттерн?

👾 — Блокирует сборщик мусора
👍 — Публичный монитор: внешний код может тоже его захватить → риск дедлоков; используйте приватный объект (private readonly object _gate = new();)
🥰 — Потому что this не является ссылочным типом
⚡️ — Потому что lock — это всегда spinlock без ожидания

Библиотека задач по C#
👍23🥰2🤩1
В ASP.NET Core под нагрузкой растут таймауты и длина очереди ThreadPool. В коде встречается вызов внешнего HTTP так:
var resp = httpClient.SendAsync(req).Result; // блокировка

Какой подход правильный?

👾 — Обернуть вызов в Task.Run(...)
👍 — Увеличить ThreadPool.SetMinThreads(...)
🥰 — Сделать весь путь асинхронным: await httpClient.SendAsync(req, ct) и дальше — только async/await без .Result/.Wait()
⚡️ — Добавить ConfigureAwait(false) к текущему коду

🐸Библиотека задач по C#
Please open Telegram to view this post
VIEW IN TELEGRAM
🥰35
Выберите исключения, генерируемые методом GetReponse(), определенным WebRequest

👾 — WebException
👍 — InvalidOperationException
🥰 — ProtocolViolationException
⚡️ — Все вышеперечисленное

Библиотека задач по C#
6
Нужно задавать разные таймауты на каждый HTTP-запрос при использовании IHttpClientFactory, не ломая длительные стриминговые ответы и не влияя на глобальный HttpClient.Timeout. Какой подход корректный?

👾 — Перед каждым вызовом менять HttpClient.Timeout
👍 — Оставить HttpClient.Timeout по умолчанию и передавать в SendAsync свой CancellationToken из CancellationTokenSource с CancelAfter(...)
🥰 — Оборачивать вызов в Task.Run и ждать Wait(timeout)
⚡️ — Настроить ServicePointManager с глобальным таймаутом

🐸Библиотека задач по C#
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11👏1
Почему приватный виртуальный метод нельзя переопределить в C#?

Потому что приватные виртуальные методы недоступны за пределами класс
а.

Библиотека задач по C#
Что такое упаковка и распаковка?

Пример: «Преобразование типа значения в ссылочный тип называется «упаковкой». Явное преобразование того же ссылочного типа, который создается путем упаковки обратно в тип значения, называется «распаковкой».

Библиотека задач по C#
1
У вас есть сервис на .NET, обрабатывающий большое количество параллельных запросов к базе данных. При нагрузочном тестировании вы замечаете, что количество потоков резко растёт, а производительность падает. Какой подход будет наиболее правильным для оптимизации?

👾 — Использовать Task.Run вокруг всех вызовов к базе, чтобы явно распараллелить операции
👍 — Применить асинхронный доступ к базе данных (async/await) с использованием I/O-bound операций
🥰 — Увеличить ThreadPool.SetMinThreads, чтобы обрабатывать больше потоков одновременно
⚡️ — Переписать сервис на синхронный код, чтобы избежать overhead от async/await

Библиотека задач по C#
👍221🥰1
Что выведет код?

👾 — Caught invalid operation
👍 — Invalid operation
🥰 — Error
⚡️ — Ничего из вышеперечисленного

Библиотека задач по C#
👾651🥰1
Атрибуты ______ могут использоваться для проверки данных в MVC ASP.NET

👾 — DataAnnotations
👍 — Fluent API
🥰 — DataModel
⚡️ — HtmlHelper

Библиотека задач по C#
Please open Telegram to view this post
VIEW IN TELEGRAM
👾361
В чем разница между Convert.ToString() и ToString()?

👾 — Convert.ToString() обрабатывает значения null, а ToString() — нет
👍 — ToString() выводит данные в соответствии с предоставленным форматом
🥰 — Convert.ToString() обрабатывает только значения null
⚡️ — ToString() обрабатывает значения null, а Convert.ToString() — нет

🐸Библиотека задач по C#
Please open Telegram to view this post
VIEW IN TELEGRAM
👾28
В высоконагруженном .NET сервисе вы часто работаете со строками: конкатенация, парсинг, подстроки. Профилирование показывает большое количество аллокаций и нагрузку на GC. Какой подход будет наиболее правильным для оптимизации?

👾 — Использовать обычный оператор + для конкатенации строк — компилятор сам оптимизирует
👍 — Применить 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#
Please open Telegram to view this post
VIEW IN TELEGRAM
👾3
Какой из следующих синтаксисов поддерживает LINQ?

👾 — Синтаксис запросов
👍 — Синтаксис методов
🥰 — И тот, и тот

Библиотека задач по C#
🥰35😢1
Какой встроенный компонент необходим для воспроизведения аудиофайлов в Unity?

👾 — Audio Manager
👍 — Sound Manager
🥰 — Audio Source
⚡️ — Audio Clip

Библиотека задач по C#
🥰7💯1
Что бросит await Task.WhenAll(tasks) при ошибках?

👾 — Всегда AggregateException, даже при одной ошибке
— При одной ошибке — саму эту ошибку; при нескольких — AggregateException (все доступны в t.Exception.InnerExceptions)
👍 — Никогда не бросает, просто возвращает результаты успешных задач
🥰 — Отменяет остальные задачи при первом падении

🔹 Курс «Программирование на языке Python»
🔹 Получить консультацию менеджера
🔹 Сайт Академии 🔹 Сайт Proglib

Библиотека задач по C#
16👾4😁1