Библиотека задач по C# | тесты, код, задания
5.26K subscribers
407 photos
2 videos
335 links
Задачи и тесты по C# для тренировки и обучения.

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

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

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

Наши каналы: https://t.iss.one/proglibrary/9197
Download Telegram
Кратко опишите жизненный цикл потока в C#.

✍🏻 Состояние Unstarted (New): новый экземпляр класса Thread инициализирован и не запущен.
✍🏻 Состояние Runnable: вызывается метод Start(), и поток готов к запуску.
✍🏻 Выполняется: поток был выбран планировщиком для запуска.
✍🏻 Не готов к запуску: иногда его называют WaitSleepJoin, поток переходит в это состояние, когда мы вызываем Wait() или Sleep(), а также когда он вызывает Join() в другом потоке.
✍🏻 Состояние Dead: поток завершил свою задачу или был вызван метод Abort(); это последний этап жизненного цикла потока.

Библиотека задач по C#
В .NET Core приложении вы обрабатываете большое количество асинхронных запросов к внешнему API. При профилировании видно, что создаётся слишком много объектов Task, и нагрузка на GC возрастает. Какой подход поможет оптимизировать ситуацию?

👾 — Заменить все async/await на синхронные вызовы, чтобы уменьшить количество Task
👍 — Использовать ValueTask там, где результат часто доступен синхронно
🥰 — Принудительно вызывать GC.Collect() после каждой пачки запросов
⚡️ — Запускать асинхронные методы через Task.Run, чтобы вынести их в пул потоков

Библиотека задач по C#
👍10
ПОСЛЕДНИЙ ДЕНЬ
КУРСЫ ПОДОРОЖАЮТ ЗАВТРА‼️

ML за 34к вместо 44к + Python в подарок
Математика → второй доступ в подарок
— Ранний доступ к AI-агентам с 15 сентября
— И МОЖНО УСПЕТЬ КУПИТЬ ВСЁ ДО ПОДОРОЖАНИЯ

👉 Proglib Academy
В .NET Core приложении под нагрузкой профилирование показало большое количество выделений памяти при работе со строками. Какой способ наиболее правильный для уменьшения давления на GC?

👾 — Использовать оператор + для конкатенации строк, так как компилятор сам оптимизирует
👍 — Применять StringBuilder для конкатенации и Span<char>/Memory<char> для подстрок без копирования
🥰 — Переписать весь код на dynamic, чтобы уменьшить количество классов
⚡️ — Принудительно вызывать GC.Collect() после больших операций

Библиотека задач по C#
👍18
Какой из перечисленных типов НЕ является типом коллекции C#?

👾 — ArrayList
👍 — Словарь
🥰 — Список
⚡️ — Кортеж

Библиотека задач по C#
38👍1🤔1👾1
Переворачиваем календарь — а там скидки, которые уже закончились.

Но мы их вернули на последний день 🤔

До 00:00 третьего сентября (цены как до 1 сентября):

▪️ Математика для Data Science — 35.199 ₽ вместо 44.900 ₽
▪️ Алгоритмы и структуры данных — 31.669 ₽ вместо 39.900 ₽
▪️ Основы IT — 14.994 ₽ вместо 19.900 ₽
▪️ Архитектуры и шаблоны — 24.890 ₽ вместо 32.900 ₽
▪️ Python — 24.990 ₽ вместо 32.900 ₽
▪️ ML для Data Science — 34.000 ₽ вместо 44. 000 ₽
▪️ AI-агенты — 49.000 ₽ вместо 59.000 ₽

👉 Хватаем скидки из прошлого

P.S. Машину времени одолжили у дяди Миши
1
В .NET Core сервисе под нагрузкой заметили, что методы, возвращающие Task, часто создают лишние аллокации и нагружают GC. Какой подход наиболее правильный для оптимизации?

👾 — Всегда заменять Task на Thread, чтобы избежать аллокаций
👍 — Использовать ValueTask там, где результат часто доступен синхронно
🥰 — Оборачивать каждый метод в Task.Run, чтобы распределить нагрузку на пул потоков
⚡️ — Принудительно вызывать GC.Collect() после завершения асинхронных операций

Библиотека задач по C#
👍13
😎 Сколько баллов набрали вы?

Голосуйте, какой у вас уровень разработчика:

😁 — 5-12 баллов (стажер)
👍 — 13-25 баллов (джуниор)
⚡️ — 26-40 баллов (джуниор+)
👏 — 41-60 баллов (миддл)
🔥 — 61-80 баллов (миддл+)
🎉 — 81-100 баллов (сеньор)
🤩 — 100+ баллов (тимлид)

Но вот в чем прикол — опытный разработчик набирает баллы не случайными косяками, а осознанными решениями.

👉 Научим, как быстро прокачаться от стажера до сеньора
🤩4👏1
В .NET Core приложении под нагрузкой замечены частые аллокации при работе с большими массивами, что вызывает давление на GC. Какой подход наиболее правильный?

👾 — Хранить массивы в static переменной, чтобы GC их не удалял
👍 — Использовать ArrayPool<T>.Shared для аренды и возврата массивов
🥰 — Создавать новые массивы на каждый запрос, чтобы избежать race conditions
⚡️ — Принудительно вызывать GC.Collect() после каждой партии запросов

Библиотека задач по C#
👍11
🎮 КВЕСТОВАЯ ЛИНИЯ: «Путь Data Scientist'а»

⮕ Твой стартовый набор искателя данных:
Python — твое легендарное оружие (урон по багам +∞)
Математика — твой базовый интеллект (влияет на понимание алгоритмов)
Машинное обучение — твое дерево навыков (открывает новые способности)


⚡️ АКТИВЕН ВРЕМЕННЫЙ БАФФ: «Щедрость наставника»

Эффект: –30% к цене полного набора ДСника
Было: 121.800 ₽ → Стало: 84.900 ₽

☞ Что ждет тебя в этом квесте

— Получение артефактов: портфолио проектов и сертификаты— Прокачка от новичка до Senior Data Scientist— Босс-файты с реальными задачами из индустрии— Доступ к гильдии единомышленников


📎 Забрать бафф
Рассрочки: 3 мес | 6 мес | 12 мес
Чем отличаются друг от друга классы String и StringBuilder?

Объект класса String представляет собой неизменяемую строку.
Когда выполняется какой-нибудь метод класса String, система создает новый объект в памяти с выделением ему достаточного места.

Объект класса StringBuilder представляет собой динамическую строку.
При создании строки StringBuilder выделяет памяти больше, чем необходимо этой строке, а при добавлении к ней каких-либо элементов строка не пересоздается заново.
В том случае если выделенной памяти не будет хватать для добавления новых элементов, то емкость объекта будет увеличена.


Библиотека задач по C#
👍1
⚡️ Будь как этот гений с картинки — предлагай свои условия работодателю, а не наоборот!

Кто нужен?

Senior ML-Engineer с опытом работы более 6 месяцев в FAANG компаниях. Требование: разработать кросс-платформенное приложение-трекер зарплат с AI-распознаванием вакансий по резюме.


Но если вы пока джун — я бы предложил:

- Full-time контракт: 180к/мес после курса + опцион на карьеру в топ-компаниях

- Либо фикс за проект: стань ML-инженером за 39к вместо 44к с промокодом LASTCALL

🔗 Старт 9 сентября
В .NET Core приложении вы заметили частые паузы из-за работы GC. Профилирование показывает большое количество короткоживущих объектов, создаваемых внутри горячих методов. Какой подход наиболее правильный для оптимизации?

👾 — Увеличить размер heap в настройках CLR
👍 — Снизить количество аллокаций, используя Span<T>, пулы объектов (ArrayPool<T>, ObjectPool<T>) и минимизацию временных коллекций
🥰 — Принудительно вызывать GC.Collect() после каждого запроса
⚡️ — Перевести все классы в struct, чтобы они хранились на стеке

Библиотека задач по C#
👍9
Какое из следующих утверждений верно относительно конструкторов в C#?

👾 — Они могут иметь возвращаемый тип
👍 — Они вызываются при создании объекта
🥰 — Они могут быть приватными
⚡️ — Второй вариант и третий

Библиотека задач по C#
25👍2
В C# есть ключевое слово async/await. Какое утверждение наиболее корректно описывает их использование?

👾 — async делает метод многопоточным автоматически
👍 — async позволяет использовать await, который освобождает поток до завершения задачи
🥰 — await блокирует поток, пока задача не завершится
⚡️ — async гарантирует, что метод всегда выполнится быстрее

Библиотека задач по C#
👍381😢1
В C# чем отличается struct от class?

👾 — Разницы нет, это взаимозаменяемые типы
👍 — struct — value type (хранится в стеке), class — reference type (в куче)
🥰 — struct можно наследовать от другого struct, а class — нет
⚡️ — class быстрее, чем struct, всегда

Библиотека задач по C#
👍45🔥1