Кратко опишите жизненный цикл потока в C#.
✍🏻 Состояние Unstarted (New): новый экземпляр класса Thread инициализирован и не запущен.
✍🏻 Состояние Runnable: вызывается метод Start(), и поток готов к запуску.
✍🏻 Выполняется: поток был выбран планировщиком для запуска.
✍🏻 Не готов к запуску: иногда его называют WaitSleepJoin, поток переходит в это состояние, когда мы вызываем Wait() или Sleep(), а также когда он вызывает Join() в другом потоке.
✍🏻 Состояние Dead: поток завершил свою задачу или был вызван метод Abort(); это последний этап жизненного цикла потока.
Библиотека задач по 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#
👾 — Заменить все async/await на синхронные вызовы, чтобы уменьшить количество Task
👍 — Использовать ValueTask там, где результат часто доступен синхронно
🥰 — Принудительно вызывать GC.Collect() после каждой пачки запросов
⚡️ — Запускать асинхронные методы через Task.Run, чтобы вынести их в пул потоков
Библиотека задач по C#
👍10
ПОСЛЕДНИЙ ДЕНЬ❗
КУРСЫ ПОДОРОЖАЮТ ЗАВТРА‼️
— ML за 34к вместо 44к + Python в подарок
— Математика → второй доступ в подарок
— Ранний доступ к AI-агентам с 15 сентября
— И МОЖНО УСПЕТЬ КУПИТЬ ВСЁ ДО ПОДОРОЖАНИЯ
👉 Proglib Academy
КУРСЫ ПОДОРОЖАЮТ ЗАВТРА‼️
— ML за 34к вместо 44к + Python в подарок
— Математика → второй доступ в подарок
— Ранний доступ к AI-агентам с 15 сентября
— И МОЖНО УСПЕТЬ КУПИТЬ ВСЁ ДО ПОДОРОЖАНИЯ
👉 Proglib Academy
В .NET Core приложении под нагрузкой профилирование показало большое количество выделений памяти при работе со строками. Какой способ наиболее правильный для уменьшения давления на GC?
👾 — Использовать оператор + для конкатенации строк, так как компилятор сам оптимизирует
👍 — Применять StringBuilder для конкатенации и Span<char>/Memory<char> для подстрок без копирования
🥰 — Переписать весь код на dynamic, чтобы уменьшить количество классов
⚡️ — Принудительно вызывать GC.Collect() после больших операций
Библиотека задач по C#
👾 — Использовать оператор + для конкатенации строк, так как компилятор сам оптимизирует
👍 — Применять StringBuilder для конкатенации и Span<char>/Memory<char> для подстрок без копирования
🥰 — Переписать весь код на dynamic, чтобы уменьшить количество классов
⚡️ — Принудительно вызывать GC.Collect() после больших операций
Библиотека задач по C#
👍18
Какой из перечисленных типов НЕ является типом коллекции C#?
👾 — ArrayList
👍 — Словарь
🥰 — Список
⚡️ — Кортеж
Библиотека задач по 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. Машину времени одолжили у дяди Миши
Но мы их вернули на последний день 🤔
До 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#
👾 — Всегда заменять Task на Thread, чтобы избежать аллокаций
👍 — Использовать ValueTask там, где результат часто доступен синхронно
🥰 — Оборачивать каждый метод в Task.Run, чтобы распределить нагрузку на пул потоков
⚡️ — Принудительно вызывать GC.Collect() после завершения асинхронных операций
Библиотека задач по C#
👍13
😎 Сколько баллов набрали вы?
Голосуйте, какой у вас уровень разработчика:
😁 — 5-12 баллов (стажер)
👍 — 13-25 баллов (джуниор)
⚡️ — 26-40 баллов (джуниор+)
👏 — 41-60 баллов (миддл)
🔥 — 61-80 баллов (миддл+)
🎉 — 81-100 баллов (сеньор)
🤩 — 100+ баллов (тимлид)
Но вот в чем прикол — опытный разработчик набирает баллы не случайными косяками, а осознанными решениями.
👉 Научим, как быстро прокачаться от стажера до сеньора
Голосуйте, какой у вас уровень разработчика:
😁 — 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#
👾 — Хранить массивы в static переменной, чтобы GC их не удалял
👍 — Использовать ArrayPool<T>.Shared для аренды и возврата массивов
🥰 — Создавать новые массивы на каждый запрос, чтобы избежать race conditions
⚡️ — Принудительно вызывать GC.Collect() после каждой партии запросов
Библиотека задач по C#
👍11
🎮 КВЕСТОВАЯ ЛИНИЯ: «Путь Data Scientist'а»
⮕ Твой стартовый набор искателя данных:
⚡️ АКТИВЕН ВРЕМЕННЫЙ БАФФ: «Щедрость наставника»
Эффект: –30% к цене полного набора ДСника
Было: 121.800 ₽ → Стало: 84.900 ₽
☞ Что ждет тебя в этом квесте
📎 Забрать бафф
Рассрочки: 3 мес | 6 мес | 12 мес
⮕ Твой стартовый набор искателя данных:
Python — твое легендарное оружие (урон по багам +∞)
Математика — твой базовый интеллект (влияет на понимание алгоритмов)
Машинное обучение — твое дерево навыков (открывает новые способности)
⚡️ АКТИВЕН ВРЕМЕННЫЙ БАФФ: «Щедрость наставника»
Эффект: –30% к цене полного набора ДСника
Было: 121.800 ₽ → Стало: 84.900 ₽
☞ Что ждет тебя в этом квесте
— Получение артефактов: портфолио проектов и сертификаты— Прокачка от новичка до Senior Data Scientist— Босс-файты с реальными задачами из индустрии— Доступ к гильдии единомышленников
📎 Забрать бафф
Рассрочки: 3 мес | 6 мес | 12 мес
Чем отличаются друг от друга классы String и StringBuilder?
Объект класса String представляет собой неизменяемую строку.
Когда выполняется какой-нибудь метод класса String, система создает новый объект в памяти с выделением ему достаточного места.
Объект класса StringBuilder представляет собой динамическую строку.
При создании строки StringBuilder выделяет памяти больше, чем необходимо этой строке, а при добавлении к ней каких-либо элементов строка не пересоздается заново.
В том случае если выделенной памяти не будет хватать для добавления новых элементов, то емкость объекта будет увеличена.
Библиотека задач по C#
Объект класса String представляет собой неизменяемую строку.
Когда выполняется какой-нибудь метод класса String, система создает новый объект в памяти с выделением ему достаточного места.
Объект класса StringBuilder представляет собой динамическую строку.
При создании строки StringBuilder выделяет памяти больше, чем необходимо этой строке, а при добавлении к ней каких-либо элементов строка не пересоздается заново.
В том случае если выделенной памяти не будет хватать для добавления новых элементов, то емкость объекта будет увеличена.
Библиотека задач по C#
👍1
⚡️ Будь как этот гений с картинки — предлагай свои условия работодателю, а не наоборот!
Кто нужен?
Но если вы пока джун — я бы предложил:
- Full-time контракт: 180к/мес после курса + опцион на карьеру в топ-компаниях
- Либо фикс за проект: стань ML-инженером за 39к вместо 44к с промокодом LASTCALL
🔗 Старт 9 сентября
Кто нужен?
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#
👾 — Увеличить размер heap в настройках CLR
👍 — Снизить количество аллокаций, используя Span<T>, пулы объектов (ArrayPool<T>, ObjectPool<T>) и минимизацию временных коллекций
🥰 — Принудительно вызывать GC.Collect() после каждого запроса
⚡️ — Перевести все классы в struct, чтобы они хранились на стеке
Библиотека задач по C#
👍9
Какое из следующих утверждений верно относительно конструкторов в C#?
👾 — Они могут иметь возвращаемый тип
👍 — Они вызываются при создании объекта
🥰 — Они могут быть приватными
⚡️ — Второй вариант и третий
Библиотека задач по C#
👾 — Они могут иметь возвращаемый тип
👍 — Они вызываются при создании объекта
🥰 — Они могут быть приватными
⚡️ — Второй вариант и третий
Библиотека задач по C#
⚡25👍2
В C# есть ключевое слово async/await. Какое утверждение наиболее корректно описывает их использование?
👾 — async делает метод многопоточным автоматически
👍 — async позволяет использовать await, который освобождает поток до завершения задачи
🥰 — await блокирует поток, пока задача не завершится
⚡️ — async гарантирует, что метод всегда выполнится быстрее
Библиотека задач по C#
👾 — async делает метод многопоточным автоматически
👍 — async позволяет использовать await, который освобождает поток до завершения задачи
🥰 — await блокирует поток, пока задача не завершится
⚡️ — async гарантирует, что метод всегда выполнится быстрее
Библиотека задач по C#
👍38❤1😢1
В C# чем отличается struct от class?
👾 — Разницы нет, это взаимозаменяемые типы
👍 — struct — value type (хранится в стеке), class — reference type (в куче)
🥰 — struct можно наследовать от другого struct, а class — нет
⚡️ — class быстрее, чем struct, всегда
Библиотека задач по C#
👾 — Разницы нет, это взаимозаменяемые типы
👍 — struct — value type (хранится в стеке), class — reference type (в куче)
🥰 — struct можно наследовать от другого struct, а class — нет
⚡️ — class быстрее, чем struct, всегда
Библиотека задач по C#
👍45🔥1