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

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

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

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

Наши каналы: https://t.me/proglibrary/9197
Download Telegram
Кажется, мы окончательно перешли от игрушек к суровому AgentOps

Приглашаем на наш обновлённый курс по разработке ИИ-агентов. Никакой воды про «будущее нейросетей», только инженерный подход.

На курсе мы:

— пошагово строим готовые системы на LangGraph, CrewAI и MCP;
— настраиваем кэширование и роутинг, чтобы бот не сожрал токены;
— разбираемся со стейтом, учимся дебажить через time-travel и прикручиваем human-in-the-loop;
— выводим RAG в прод так, чтобы безопасники не завернули архитектуру из-за 152-ФЗ.

В пекло скучные лекции про общую инфраструктуру — сразу фокусируемся на агентных фреймворках и написании кода. Занятия ведут бывалые лиды из Газпромбанка и Альфы, набившие шишки на реальных задачах.

Кстати, на днях мы пилили агента в прямом эфире, если пропустили — есть запись вебинара.


Сегодня последний день, когда можно забрать курс по старым ценам. Базовый тариф сейчас стоит 49 000 ₽ (вместо 62 990 ₽), продвинутый трек — 99 000 ₽ (вместо 124 990 ₽). Если не хочется отдавать всю сумму сразу, есть рассрочка. Торопитесь — на потоке осталось всего 5 мест!

Зафиксировать цену и перейти к сборке своих агентов
Когда уместно async void?

👾 — Для «fire-and-forget» в сервисах
👍 — Только для обработчиков событий; в остальном возвращайте Task
🥰 — Чтобы скрывать исключения из вызвавшего кода
⚡️ — Когда нужно вернуть значение синхронно

Библиотека задач по C#
👍31👾2🥰1
Зачем использовать IHttpClientFactory вместо создания нового HttpClient на каждый запрос?

👾 — Чтобы отключить DNS-кеш и ускорить повторы
👍 — Чтобы переиспользовать SocketsHttpHandler, избежать socket exhaustion и централизовать политики таймаутов/ретраев
🥰 — Чтобы все запросы шли через один и тот же IP
⚡️ — Чтобы сделать запросы синхронными и без аллокаций

Библиотека задач по C#
👍29👾1
Зачем помечать override как sealed?

👾 — Чтобы запретить вызов из другого домена
👍 — Чтобы запретить дальнейшее переопределение и дать JIT шанс де-виртуализировать/инлайнить метод
🥰 — Чтобы сделать метод static
⚡️ — Это обязательно для всех virtual в Release

Библиотека задач по C#
👍361
Что важно для ключей Dictionary<TKey, TValue> при TKey-структуре?

👾 — Переопределять только ToString()
👍 — Иммутабельность и корректные Equals/GetHashCode без зависимости от изменяемых полей
🥰 — Разрешить менять поля после вставки — хеш пересчитается автоматически
⚡️ — Достаточно реализовать IComparable<T>

Библиотека задач по C#
👍21🥰3
Начать рассказывать интервьюеру, как вы ловко дёргаете ручки API через базовый LangChain.

Звучит как отличный план, да? Нет, это мгновенный отказ.

В свежем отчёте по рынку GPU говорится, что 54% компаний стопают ИИ-внедрения тупо из-за конских затрат на инфраструктуру. На серверах более 70% стоимости — это видеокарты. Поэтому на собесах сейчас спрашивают не про красивые промпты, а про жёсткую экономику агентов.

По сути, от вас ждут понимания, как лимитировать ресурсы на лету, роутить запросы и дебажить отказы через механизм time-travel в LangGraph. Если вы до сих пор собираете ботов в ноутбуках, гляньте обновлённый курс «Разработка ИИ-агентов» — фокус там смещён с игрушечных концепций на суровый энтерпрайз.

Что требуют от мидлов и выше:

— интеграция мультиагентных систем по стандарту MCP;
— суровый AgentOps: метрики, трейсинг, защита от деградации пайплайнов;
— локальный деплой Open Source под 152-ФЗ (без этого в финтех можно даже не стучаться).

Прямо сейчас можно урвать курс с увесистой скидкой (49 000 ₽ 62 990 ₽ за базовый тариф и 99 000 ₽ 124 990 ₽ за продвинутый трек), но стоит поторопиться — на потоке осталось всего 5 мест.

👉 Подтянуть архитектуру до уровня прода
Что такое String.Length в C#?

👾 — Свойство
👍 — Метод
🥰 — Конструктор
⚡️ — Первое и второе

🐸Библиотека задач по C#
Please open Telegram to view this post
VIEW IN TELEGRAM
👾602🥱1
Как в C# реализуется паттерн «Lazy Initialization» и какие меры предосторожности необходимо предпринять для его корректного использования в многопоточных приложениях?

В C# «Lazy Initialization» реализуется с помощью класса Lazy, который обеспечивает отложенную инициализацию объекта. Для обеспечения безопасности в многопоточных приложениях, важно использовать конструктор Lazy с параметром LazyThreadSafetyMode, который контролирует доступ к объекту и обеспечивает потокобезопасную инициализацию. Это предотвращает создание нескольких экземпляров в многопоточной среде и гарантирует, что объект будет инициализирован только один раз.

🐸Библиотека задач по C#
Please open Telegram to view this post
VIEW IN TELEGRAM
2
😱 Если ваш продукт не умеет отдавать данные в формате, понятном AI-агенту, то вас просто не существует

Скрипт не будет кликать по красивым кнопкам в браузере, он уйдёт к конкуренту с нормальным API. Перестроить архитектуру под машинных клиентов — это уже не хайп, а необходимое условие сохранения конкурентоспособности.

Как адаптировать продукт и не исчезнуть из выдачи:

— интегрировать MCP и A2A-взаимодействие, чтобы агенты могли вас читать;
— научиться контролировать стоимость (лимиты, кэш, роутинг между моделями);
— настроить AgentOps: трейсинг, логирование и отлов регрессий.

Всё это ждёт вас на обновлённом курсе «Разработка AI-агентов». Мы специально сделали фокус на утилитарном инжиниринге и production-ready решениях.

Кстати, до 29 марта можно забрать курс с большой скидкой, и стоит поторопиться — мест на потоке всё меньше.

Зафиксировать цену и начать деплоить агентов без слива бюджета 👈
Что такое Boxing и Unboxing?

Упаковка представляет собой процесс неявный преобразования типа значения (хранящегося в стеке) в тип object. Когда тип значения упаковывается средой CLR, она создает оболочку значения внутри System.Object и сохраняет ее в управляемой куче.

Обратная операция распаковки осуществляется явным преобразованием object в тип значения. Если упакованный объект не соответствует требуемому типу, то выбрасывается исключение InvalidCastException.


🐸Библиотека задач по C#
Please open Telegram to view this post
VIEW IN TELEGRAM
1
Где возможна скрытая аллокация (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#