ru
Feedback
Библиотека собеса по C# | вопросы с собеседований

Библиотека собеса по C# | вопросы с собеседований

Открыть в Telegram

Вопросы с собеседований по C# и ответы на них. По рекламе: @proglib_adv Учиться у нас: https://clc.to/QRJIVw Для обратной связи: @proglibrary_feeedback_bot Наши каналы: https://t.me/proglibrary/9197

Больше
5 641
Подписчики
-124 часа
+27 дней
+930 день
Архив постов
Когда выбирать struct/record struct вместо class? Для маленьких, неизменяемых и часто копируемых значений (≤ ~16–32 байт), где важна локальность и отсутствие аллокаций. Нужны структурное равенство/with — берите record struct. Если объект крупный/мутабельный/долго живёт — используйте class. 🔹 Курс «Программирование на языке Python» 🔹 Получить консультацию менеджера 🔹 Сайт Академии 🔹 Сайт Proglib Библиотека собеса по С#

Как правильно реализовать освобождение ресурсов в IAsyncDisposable? Короткий ответ: Реализуйте шаблон с охраной от повторного вызова: DisposeAsync() вызывает приватный DisposeAsyncCore() и синхронный Dispose(false), закрывает IAsyncDisposable ресурсы через await using, остальные — в Dispose. Используйте AsyncLazy/флаг disposed, прокидывайте CancellationToken только там, где это безопасно, и учитывайте, что await using всегда вызывает именно DisposeAsync(). 🔹 Курс «Программирование на языке Python» 🔹 Получить консультацию менеджера 🔹 Сайт Академии 🔹 Сайт Proglib Библиотека собеса по С#

В .NET у вас есть высоконагруженный сервис, активно использующий async/await. При профилировании вы видите, что создаётся слишком много задач и растёт нагрузка на ThreadPool. Какие приёмы оптимизации вы можете применить? Использовать ValueTask вместо Task, если операции часто завершаются синхронно; ограничивать параллелизм через SemaphoreSlim или Channel; избегать избыточного async там, где можно обойтись синхронным вызовом; применять пул объектов (ArrayPool, ObjectPool) для снижения аллокаций. 🤌 Бонусы для подписчиков:Скидка 40% на все курсы АкадемииРозыгрыш Apple MacBookБесплатный тест на знание математики Библиотека собеса по С#

🤖 Раньше в AI мог попасть любой, кто осилил пару туториалов. Теперь нужны те, кто может объяснить: → почему эта архитектура
🤖 Раньше в AI мог попасть любой, кто осилил пару туториалов. Теперь нужны те, кто может объяснить: → почему эта архитектура сработает, а та — нет; → что происходит внутри модели, когда она не сходится; → как найти решение, а не перебирать гиперпараметры наугад. Все эти навыки требуют понимания того, как и почему работают модели. А это чистая математика. 🔥 Proglib Academy запускает курс «Математика для разработки AI-моделей». Ведут эксперты из SberAI, ВШЭ, Т-Банк, Wildberries. 📝 Что внутри? → 2 месяца живых занятий с возможностью задавать вопросы напрямую. → Практика на Python. Не теория в вакууме, а применение. → 3 домашних задания + финальный проект с детальным разбором. ⏰ Старт 4 декабря ⌛ Только до конца ноября: → Скидка 40%; → Курс «Школьная математика» в подарок; → Тест на определение уровня математики. 🎄 Сделай себе подарок на Новый год

Опишите свой опыт реализации сетевого многопользовательского режима в Unity, включая проблемы с задержками и синхронизацией. Пример ответа: "Мой опыт работы с сетевым многопользовательским режимом в Unity включает использование Mirror и Netcode Unity для GameObjects. Я реализовал такие функции, как синхронизация движений игроков, создание и обработка обновлений состояния игры. Распространенной проблемой является снижение задержки. Я решил эту проблему с помощью таких методов, как прогнозирование на стороне клиента и серверное согласование, чтобы игра казалась отзывчивой, несмотря на задержки в сети. Для синхронизации я использовал компоненты NetworkTransform и пользовательские реализации NetworkVariable, выбирая правильный подход на основе частоты обновления данных и важности. Также распространены проблемы синхронизации, такие как конфликты в действиях игроков. Я решил их с помощью авторитетной серверной логики, гарантируя, что сервер проверяет и применяет правила игры. Я также работал с различными сетевыми топологиями, включая клиент-сервер и одноранговую сеть, понимая их компромиссы с точки зрения масштабируемости и сложности. Например, обработка владения объектом и обеспечение согласованного состояния между клиентами, когда объекты могут быть подобраны или изменены разными игроками, требует тщательного проектирования и надежной обработки ошибок." 🤌 Бонусы для подписчиков:Скидка 40% на все курсы АкадемииРозыгрыш Apple MacBookБесплатный тест на знание математики Библиотека собеса по С#

Как минимизировать оверхед рефлексии в горячем пути? Кэшируйте MethodInfo/ConstructorInfo, заранее создавайте делегаты (CreateDelegate), избегайте Invoke в цикле. По возможности используйте source generators/выражения (Expression.Compile() один раз) или ручной код; для JSON — System.Text.Json source-gen. Не выполняйте рефлексию на каждом запросе. 🔹 Курс «Программирование на языке Python» 🔹 Получить консультацию менеджера 🔹 Сайт Академии 🔹 Сайт Proglib Библиотека собеса по С#

🎄 С Нового года начну учиться — знакомо? А потом январь — освоюсь после праздников, февраль — доделаю текущие дела... Не отк
🎄 С Нового года начну учиться — знакомо? А потом январь — освоюсь после праздников, февраль — доделаю текущие дела... Не откладывай на следующий год то, что можно начать уже в этом. 🗓️ 4 декабря стартует экспресс-курс «Математика для Data Science»— всё, что нужно для уверенных ответов на собесах: → 2 месяца без воды; → обновлённая программа (ноябрь 2025); → живые вебинары с экспертами; → записи всех занятий; → практика на Python + финальный проект с фидбэком. Формат: 2 месяца интенсива и к началу следующего года ты готов к собесам. Пока другие будут собираться с мыслями после НГ, ты уже будешь на полпути к офферу мечты. 🎁 Только до 30 ноября: → скидка 40% на курс; → курс «Базовая математика» в подарок; → бесплатный тест уровня математики. 👉🏻 Хочешь на курс → пиши менеджеру

Как избежать утечек памяти из-за событий, таймеров и долгоживущих подписок? Делайте явный жизненный цикл (IDisposable/IAsyncDisposable) и отписку в Dispose, используйте слабые подписки/WeakReference для долгоживущих паблишеров, не держите лямбды на крупные замыкания, таймеры — с using/Dispose, у BackgroundService корректно обрабатывайте отмену и завершение, в DI избегайте singleton-подписок на scoped-объекты. 🔹 Курс «Программирование на языке Python» 🔹 Получить консультацию менеджера 🔹 Сайт Академии 🔹 Сайт Proglib Библиотека собеса по С#

Опишите разницу между оператором равенства (==) и методом Equals() в C#? Оператор == и метод Equals() сравнивают два элемента данных типа значения или элемента данных ссылочного типа. Оператор равенства (==) является оператором сравнения, а метод Equals() сравнивает содержимое строки. Оператор == сравнивает ссылочную идентичность, тогда как метод Equals() сравнивает только содержимое. 🔹 Курс «Программирование на языке Python» 🔹 Получить консультацию менеджера 🔹 Сайт Академии 🔹 Сайт Proglib Библиотека собеса по С#

Как построить обработку сообщений с «at-least-once» без дублей? Делайте обработчик идемпотентным: храните inbox/dedup-таблицу по message-id в одной транзакции с побочным эффектом (outbox/inbox pattern), ретраи — с джиттером и лимитами, «ядовитые» — в DLQ. Ограничивайте параллелизм и, при необходимости, объединяйте по ключу (SemaphoreSlim/Channel). 🔹 Курс «Программирование на языке Python» 🔹 Получить консультацию менеджера 🔹 Сайт Академии 🔹 Сайт Proglib Библиотека собеса по С#

Как принимать большие загрузки в ASP.NET Core без переполнения памяти и с backpressure? Стримьте — читайте Request.BodyReader/Body чанками прямо в хранилище, не буферизуйте в память/ReadToEnd. Проверьте/ограничьте размер (Kestrel limits/Content-Length/счётчик байт), применяйте CancellationToken, вычисляйте хеш/сканируйте «на лету», пишите во временный файл с атомарным переименованием. Лимитируйте параллелизм (SemaphoreSlim/очередь), отключите/настройте форм-парсер (multipart — через потоковый MultipartReader), валидируйте тип/мими-тип до сохранения. 🔹 Курс «Программирование на языке Python» 🔹 Получить консультацию менеджера 🔹 Сайт Академии 🔹 Сайт Proglib Библиотека собеса по С#

Как сделать устойчивый gRPC streaming-клиент с автопереподключением и контролем потока? Стримьте через IAsyncEnumerable/WriteAsync в цикле с CancellationToken; при ошибках — экспоненциальный бэкофф с джиттером, лимит ретраев и детект переноса лидера. Включите keepalive/ping, ограничьте конкуренцию записей (SemaphoreSlim), соблюдайте backpressure (await на ResponseStream.MoveNext/WriteOptions), идемпотентно возобновляйте с последнего оффсета. 🔹 Курс «Программирование на языке Python» 🔹 Получить консультацию менеджера 🔹 Сайт Академии 🔹 Сайт Proglib Библиотека собеса по С#

Как версионировать контракты REST/gRPC без ломки клиентов? Держите толчёрсткие прокаты: параллельно поддерживайте несколько версий и маршрутизацию (URL/заголовок Accept), добавляйте поля только как необязательные, не переименовывайте/не удаляйте сразу. В gRPC не переиспользуйте номера полей, помечайте deprecated, избегайте «ломающих» oneof-перестановок. Реализуйте tolerant readers, договоритесь о семвере и канареечном выпуске. 🔹 Курс «Программирование на языке Python» 🔹 Получить консультацию менеджера 🔹 Сайт Академии 🔹 Сайт Proglib Библиотека собеса по С#

Как корректно работать с транзакциями в EF Core в async-коде? Используйте await using var tx = await db.Database.BeginTransactionAsync(); и коммить/роллбек через await tx.CommitAsync()/RollbackAsync(). Избегайте TransactionScope без AsyncFlowOption.Enabled, держите транзакции короткими, задавайте IsolationLevel осознанно и не смешивайте несколько DbContext в одной транзакции без DTC. Библиотека собеса по С#

🔥 Закрой пробелы в математике за 8 недель Валишься на вопросах про математику на собесах? Proglib Academy запускает курс «Математика для Data Science», чтобы помочь тебе получить вакансию мечты! 🔎 Тебя ждут: → топовые эксперты, один из них на видео — Мария Тихонова. Мария — кандидат компьютерных наук, руководитель исследовательского направления SberAI, доцент факультета компьютерных наук и преподаватель НИУ ВШЭ; → живые вебинары, на которых можно задать вопросы спикерам; → доступ к материалам в записи, если не успели на лекцию и чат; → 3 задания с практикой на Python и финальный проект с подробной обратной связью от экспертов курса; → актуальные знания: программа разработана в ноябре 2025г; → программа без воды — 2 месяца только самого нужного для старта. 👉 Пройди короткий тест и узнай свой уровень математики. Приятные бонусы: 🎁 скидка 40% до 30 ноября; 🎁 оплати до конца ноября → курс «Школьная математика» в подарок. 🔗 Подробнее о курсе

Как безопасно использовать IMemoryCache под нагрузкой, не съев всю память? Включайте лимит по размеру (SizeLimit) и выставляйте SetSize для записей, задавайте Absolute/Sliding TTL, Priority и PostEvictionCallbacks, используйте single-flight вокруг загрузки, инвалидируйте через IChangeToken/linked tokens, избегайте кэширования исключений и больших объектов без пулинга. Библиотека собеса по С#

Как задавать отмену и таймауты в async-цепочке без ловушек? Прокидывайте один CancellationToken вниз по стеку; таймауты — через CancellationTokenSource.CancelAfter или Polly Timeout (без вложенных таймаутов); везде передавайте токен в I/O, ловите OperationCanceledException и завершайте работу идемпотентно. Библиотека собеса по С#

Успей зарегистрироваться на масштабный ИТ-фест от МТС 🔥 21 ноября на True Tech Champ тебя ждет насыщенный день со зрелищной битвой роботов, нетворкингом и прокачкой навыков. В программе: 📝 Доклады о ИИ-технологиях. Специалисты MWS AI, Skoltech, Яндекса и Unitree Robotics расскажут о трансформерах для управления автомобилями, работе с RAG-системами и физическими агентами. 📝 Воркшоп по работе с ИИ-агентами от канадского разработчика и автора книги AI Agents in Action Майкла Ланэма. 📝 Воркшоп по разработке игр с помощью AI плагина MWS DevTools Agent. 🛻 Шоу-битва роботов. Камеры от первого лица, профессиональные комментаторы создадут вайб больших видов спорта. На огромных экранах МТС Live Холл ты увидишь, как роботы будут проходить 3 уровня препятствий: запутанные лабиринты, офф-роад маршруты, парящие платформы — и сразятся в битве на выживание. ◻️ 20+ площадок с активностями. Попробуй родео и оседлай механического быка, пройди лазерный лабиринт, как настоящий спецагент, выведи на ринг своего робопаука и протестируй другие ИТ-челленджи. 🔴 В завершение дня — афтепати со звездным хедлайнером. Фестиваль бесплатный, он пройдет 21 ноября в Москве и онлайн. Смотри подробную программу на сайте и регистрируйся — количество мест ограничено.

Как тестировать код, зависящий от времени/таймеров, без Thread.Sleep и флаки? Абстрагируйте время через .NET 8 TimeProvider/ITimeProvider и инжектируйте FakeTimeProvider в тестах; используйте PeriodicTimer/Delay от провайдера, продвигая виртуальное время (Advance). Так вы детерминируете ожидания, убираете реальное ожидание и проверяете граничные случаи (таймауты, ретраи, дедлайны) без гонок. Библиотека собеса по С#

Как корректно освобождать ресурсы в DI, если требуется асинхронный dispose? Используйте IAsyncDisposable и асинхронные скоупы (await using var scope = provider.CreateAsyncScope()), не блокируйте DisposeAsync() синхронно. Порядок освобождения — обратный порядку регистрации; следите, чтобы зависимые сервисы не переживали свои провайдеры, и не смешивайте Dispose/DisposeAsync без нужды. Библиотека собеса по С#