Почему lock(this) — антипаттерн?
👾 — Блокирует сборщик мусора
👍 — Публичный монитор: внешний код может тоже его захватить → риск дедлоков; используйте приватный объект (private readonly object _gate = new();)
🥰 — Потому что this не является ссылочным типом
⚡️ — Потому что lock — это всегда spinlock без ожидания
Библиотека задач по C#
👾 — Блокирует сборщик мусора
👍 — Публичный монитор: внешний код может тоже его захватить → риск дедлоков; используйте приватный объект (private readonly object _gate = new();)
🥰 — Потому что this не является ссылочным типом
⚡️ — Потому что lock — это всегда spinlock без ожидания
Библиотека задач по C#
👍16
✨ Halloween Special — последний день магии! 👻
Успевай сегодня купить курсы со скидкой 40%!
А также участвуй в розыгрыше MacBook Pro 14 💻
После полуночи останется только тыква 🎃
🔮 Открой портал и выбери курс
Успевай сегодня купить курсы со скидкой 40%!
А также участвуй в розыгрыше MacBook Pro 14 💻
После полуночи останется только тыква 🎃
🔮 Открой портал и выбери курс
Что важно для ключей Dictionary<TKey, TValue> при TKey-структуре?
👾 — Переопределять только ToString()
👍 — Иммутабельность и корректные Equals/GetHashCode без зависимости от изменяемых полей
🥰 — Разрешить менять поля после вставки — хеш пересчитается автоматически
⚡️ — Достаточно реализовать IComparable<T>
Библиотека задач по C#
👾 — Переопределять только ToString()
👍 — Иммутабельность и корректные Equals/GetHashCode без зависимости от изменяемых полей
🥰 — Разрешить менять поля после вставки — хеш пересчитается автоматически
⚡️ — Достаточно реализовать IComparable<T>
Библиотека задач по C#
👍16👾1
👾45
Каковы отличия между Finalize и Dispose?
Dispose предоставляет явный контроль над ресурсами, которые использует объект, в то время как Finalize работает неявно и управляется сборщиком мусора.
Библиотека задач по C#
Dispose предоставляет явный контроль над ресурсами, которые использует объект, в то время как Finalize работает неявно и управляется сборщиком мусора.
Библиотека задач по C#
👍3
Зачем помечать override как sealed?
👾 — Чтобы запретить вызов из другого домена
👍 — Чтобы запретить дальнейшее переопределение и дать JIT шанс де-виртуализировать/инлайнить метод
🥰 — Чтобы сделать метод static
⚡️ — Это обязательно для всех virtual в Release
Библиотека задач по C#
👾 — Чтобы запретить вызов из другого домена
👍 — Чтобы запретить дальнейшее переопределение и дать JIT шанс де-виртуализировать/инлайнить метод
🥰 — Чтобы сделать метод static
⚡️ — Это обязательно для всех virtual в Release
Библиотека задач по C#
👍26
Почему Task.Result/.Wait() могут «вешать» UI/ASP.NET classic?
👾 — Потому что Task требует STA-поток
👍 — Из-за захвата SynchronizationContext: продолжение ждёт UI-поток, который блокирует синхронное ожидание
🥰 — Потому что GC останавливает мир на ожидании
⚡️ — Потому что Result всегда делает бесконечный spinwait
Библиотека задач по C#
👾 — Потому что Task требует STA-поток
👍 — Из-за захвата SynchronizationContext: продолжение ждёт UI-поток, который блокирует синхронное ожидание
🥰 — Потому что GC останавливает мир на ожидании
⚡️ — Потому что Result всегда делает бесконечный spinwait
Библиотека задач по C#
👍22
Что гарантирует readonly struct?
👾 — Что структура хранится только на стеке
👍 — Все поля readonly; методы не могут изменять this, компилятор предотвращает записи и избегает лишних defensive copies для in
🥰 — Автоматическую реализацию IEquatable<T>
⚡️ — Что экземпляры нельзя боксить
Библиотека задач по C#
👾 — Что структура хранится только на стеке
👍 — Все поля readonly; методы не могут изменять this, компилятор предотвращает записи и избегает лишних defensive copies для in
🥰 — Автоматическую реализацию IEquatable<T>
⚡️ — Что экземпляры нельзя боксить
Библиотека задач по C#
👍26
Что даёт record struct по сравнению с обычным struct?
👾 — Делает тип ссылочным
👍 — Генерирует структурное равенство, with-копирование и Deconstruct, оставаясь значимым типом
🥰 — Запрещает изменяемые поля
⚡️ — Автоматически реализует IDisposable
Библиотека задач по C#
👾 — Делает тип ссылочным
👍 — Генерирует структурное равенство, with-копирование и Deconstruct, оставаясь значимым типом
🥰 — Запрещает изменяемые поля
⚡️ — Автоматически реализует IDisposable
Библиотека задач по C#
🥰20👍9🌚1
Чем IQueryable<T> отличается от IEnumerable<T>?
👾 — IQueryable всегда быстрее и работает только в памяти
👍 — IQueryable строит дерево выражений для провайдера и может выполняться удалённо (БД); IEnumerable перечисляет в памяти
🥰 — Они идентичны; различий нет
⚡️ — IEnumerable поддерживает async, а IQueryable — нет
Библиотека задач по C#
👾 — IQueryable всегда быстрее и работает только в памяти
👍 — IQueryable строит дерево выражений для провайдера и может выполняться удалённо (БД); IEnumerable перечисляет в памяти
🥰 — Они идентичны; различий нет
⚡️ — IEnumerable поддерживает async, а IQueryable — нет
Библиотека задач по C#
👍45
Чем опасен Task.Factory.StartNew по сравнению с Task.Run для offload CPU?
👾 — Он всегда запускает работу в новом процессе
👍 — Наследует TaskScheduler.Current, не разворачивает вложенные задачи, часто требует опций/Unwrap; для фоновой работы предпочтителен Task.Run (ThreadPool, подходящие опции)
🥰 — Он быстрее и безопаснее во всех случаях
⚡️ — Он автоматически применяет ConfigureAwait(false)
Библиотека задач по C#
👾 — Он всегда запускает работу в новом процессе
👍 — Наследует TaskScheduler.Current, не разворачивает вложенные задачи, часто требует опций/Unwrap; для фоновой работы предпочтителен Task.Run (ThreadPool, подходящие опции)
🥰 — Он быстрее и безопаснее во всех случаях
⚡️ — Он автоматически применяет ConfigureAwait(false)
Библиотека задач по C#
👍6
🖤 ЧЕРНАЯ ПЯТНИЦА: СКИДКА 40%
Что общего между Black Friday и подготовкой к собесам? Оба случаются раз в год, и оба нельзя пропустить! 😎
🔥 Курсы со скидкой 40% до конца ноября:
🐍 Python
📐 Математика
🤖 AI
🔢 Алгоритмы и структуры
Пока другие покупают кофемашины и телевизоры, инвестируй в себя📈
Что общего между Black Friday и подготовкой к собесам? Оба случаются раз в год, и оба нельзя пропустить! 😎
🔥 Курсы со скидкой 40% до конца ноября:
🐍 Python
📐 Математика
🤖 AI
🔢 Алгоритмы и структуры
Пока другие покупают кофемашины и телевизоры, инвестируй в себя📈
Что произойдет, если попытаться присвоить значение переменной readonly вне конструктора?
👾 — Ошибка компиляции
👍 — Ошибка выполнения
🥰 — Переменная будет изменена
⚡️ — Переменная станет null
Библиотека задач по C#
👾 — Ошибка компиляции
👍 — Ошибка выполнения
🥰 — Переменная будет изменена
⚡️ — Переменная станет null
Библиотека задач по C#
👾36🥱1
Как сделать «асинхронный lock» вокруг критической секции?
👾 — lock работает через await
👍 — await semaphore.WaitAsync() с SemaphoreSlim(1, 1) и try/finally Release()
🥰 — Monitor.Enter/Exit поддерживает await
⚡️ — Interlocked гарантирует эксклюзивный доступ ко всей секции
Библиотека задач по C#
👾 — lock работает через await
👍 — await semaphore.WaitAsync() с SemaphoreSlim(1, 1) и try/finally Release()
🥰 — Monitor.Enter/Exit поддерживает await
⚡️ — Interlocked гарантирует эксклюзивный доступ ко всей секции
Библиотека задач по C#
👍21
📊 Задача с собеседования
Если не понимаете с какой стороны подступиться к задаче, то пора подтянуть математику.
🎓 Именно этому посвящен курс экспресс-курс «Математика для Data Science» от Proglib Academy:
— работа с векторами и матрицами;
— линейная регрессия и метод наименьших квадратов;
— вероятности, распределения, статистика;
— и многое другое.
⏳ Старт: 4 декабря
🔥 Скидка: 40% до конца ноября
👉 Подключиться к курсу
Имеются данные о продажах за последние 12 месяцев. Требуется оценить наличие линейной зависимости между количеством заключённых сделок и объёмом выручки, а также построить прогноз выручки при достижении 150 сделок.
Если не понимаете с какой стороны подступиться к задаче, то пора подтянуть математику.
🎓 Именно этому посвящен курс экспресс-курс «Математика для Data Science» от Proglib Academy:
— работа с векторами и матрицами;
— линейная регрессия и метод наименьших квадратов;
— вероятности, распределения, статистика;
— и многое другое.
⏳ Старт: 4 декабря
🔥 Скидка: 40% до конца ноября
👉 Подключиться к курсу
Как логировать в Microsoft.Extensions.Logging с минимумом аллокаций на горячем пути?
👾 — Интерполяция строк: $"User {id} logged in"
👍 — LoggerMessage.Define/DefineScope с кэшированными делегатами (структурированное логирование)
🥰 — Console.WriteLine — самый лёгкий вариант
⚡️ — Создавать новый EventSource на каждое сообщение
Библиотека задач по C#
👾 — Интерполяция строк: $"User {id} logged in"
👍 — LoggerMessage.Define/DefineScope с кэшированными делегатами (структурированное логирование)
🥰 — Console.WriteLine — самый лёгкий вариант
⚡️ — Создавать новый EventSource на каждое сообщение
Библиотека задач по C#
👍10👾2😢1
Чем BackgroundService отличается от IHostedService?
👾 — Предназначен только для таймеров
👍 — Это базовый класс с циклом ExecuteAsync; IHostedService — лишь интерфейс Start/Stop без цикла
🥰 — Запускается только в Debug
⚡️ — Не поддерживает отмену CancellationToken
Библиотека задач по C#
👾 — Предназначен только для таймеров
👍 — Это базовый класс с циклом ExecuteAsync; IHostedService — лишь интерфейс Start/Stop без цикла
🥰 — Запускается только в Debug
⚡️ — Не поддерживает отмену CancellationToken
Библиотека задач по C#
👍26😍1
Что верно про BackgroundService в .NET?
👾 — Это таймер, который сам перезапускает приложение при сбое
👍 — Базовый класс для IHostedService: реализуете долгоживущую работу в ExecuteAsync(CancellationToken), отмена через stoppingToken
🥰 — Запускается только по расписанию Cron
⚡️ — Обязателен в ASP.NET Core для всех контроллеров
Библиотека задач по C#
👾 — Это таймер, который сам перезапускает приложение при сбое
👍 — Базовый класс для IHostedService: реализуете долгоживущую работу в ExecuteAsync(CancellationToken), отмена через stoppingToken
🥰 — Запускается только по расписанию Cron
⚡️ — Обязателен в ASP.NET Core для всех контроллеров
Библиотека задач по C#
👍27😁3
Что вызовет await using у типа, реализующего и IDisposable, и IAsyncDisposable?
👾 — Сначала Dispose(), затем DisposeAsync()
👍 — Только DisposeAsync()
🥰 — Только Dispose()
⚡️ — Зависит от JIT, случайный выбор
Библиотека задач по C#
👾 — Сначала Dispose(), затем DisposeAsync()
👍 — Только DisposeAsync()
🥰 — Только Dispose()
⚡️ — Зависит от JIT, случайный выбор
Библиотека задач по C#
👍21