Библиотека собеса по C# | вопросы с собеседований
5.45K subscribers
261 photos
6 videos
1 file
471 links
Вопросы с собеседований по C# и ответы на них.

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

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

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

Наши каналы: https://t.iss.one/proglibrary/9197
Download Telegram
📊 Задача с собеседования

Имеются данные о продажах за последние 12 месяцев. Требуется оценить наличие линейной зависимости между количеством заключённых сделок и объёмом выручки, а также построить прогноз выручки при достижении 150 сделок.


Если не понимаете с какой стороны подступиться к задаче, то пора подтянуть математику.

🎓 Именно этому посвящен курс экспресс-курс «Математика для Data Science» от Proglib Academy:

— работа с векторами и матрицами;
— линейная регрессия и метод наименьших квадратов;
— вероятности, распределения, статистика;
— и многое другое.

Старт: 4 декабря
🔥 Скидка: 40% до конца ноября

👉 Подключиться к курсу
Как реализовать оптимистическую конкуренцию в EF Core, чтобы избежать потерь обновлений?

Добавьте конкурентный токен (rowversion/[Timestamp]), включите отслеживание и ловите DbUpdateConcurrencyException. При конфликте — стратегию «клиент/сервер побеждает» или мердж полей, затем повтор. Для массовых апдейтов используйте ExecuteUpdate с токеном в WHERE.

Библиотека собеса по С#
1
Как корректно освобождать ресурсы в DI, если требуется асинхронный dispose?

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

Библиотека собеса по С#
Как тестировать код, зависящий от времени/таймеров, без Thread.Sleep и флаки?

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

Библиотека собеса по С#
🔥1
Как задавать отмену и таймауты в async-цепочке без ловушек?

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

Библиотека собеса по С#
Как безопасно использовать IMemoryCache под нагрузкой, не съев всю память?

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

Библиотека собеса по С#
Media is too big
VIEW IN TELEGRAM
🔥 Закрой пробелы в математике за 8 недель

Валишься на вопросах про математику на собесах?

Proglib Academy запускает курс «Математика для Data Science», чтобы помочь тебе получить вакансию мечты!

🔎 Тебя ждут:

→ топовые эксперты, один из них на видео — Мария Тихонова. Мария — кандидат компьютерных наук, руководитель исследовательского направления SberAI, доцент факультета компьютерных наук и преподаватель НИУ ВШЭ;
→ живые вебинары, на которых можно задать вопросы спикерам;
→ доступ к материалам в записи, если не успели на лекцию и чат;
→ 3 задания с практикой на Python и финальный проект с подробной обратной связью от экспертов курса;
→ актуальные знания: программа разработана в ноябре 2025г;
→ программа без воды — 2 месяца только самого нужного для старта.

👉 Пройди короткий тест и узнай свой уровень математики.

Приятные бонусы:

🎁 скидка 40% до 30 ноября;
🎁 оплати до конца ноября → курс «Школьная математика» в подарок.

🔗 Подробнее о курсе
1
Как корректно работать с транзакциями в EF Core в async-коде?

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

Библиотека собеса по С#
2
Как версионировать контракты REST/gRPC без ломки клиентов?

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

🔹 Курс «Программирование на языке Python»

🔹 Получить консультацию менеджера
🔹 Сайт Академии 🔹 Сайт Proglib

Библиотека собеса по С#
🤔4
Как сделать устойчивый gRPC streaming-клиент с автопереподключением и контролем потока?

Стримьте через IAsyncEnumerable/WriteAsync в цикле с CancellationToken; при ошибках — экспоненциальный бэкофф с джиттером, лимит ретраев и детект переноса лидера. Включите keepalive/ping, ограничьте конкуренцию записей (SemaphoreSlim), соблюдайте backpressure (await на ResponseStream.MoveNext/WriteOptions), идемпотентно возобновляйте с последнего оффсета.

🔹 Курс «Программирование на языке Python»

🔹 Получить консультацию менеджера
🔹 Сайт Академии 🔹 Сайт Proglib

Библиотека собеса по С#
Как принимать большие загрузки в ASP.NET Core без переполнения памяти и с backpressure?

Стримьте — читайте Request.BodyReader/Body чанками прямо в хранилище, не буферизуйте в память/ReadToEnd. Проверьте/ограничьте размер (Kestrel limits/Content-Length/счётчик байт), применяйте CancellationToken, вычисляйте хеш/сканируйте «на лету», пишите во временный файл с атомарным переименованием. Лимитируйте параллелизм (SemaphoreSlim/очередь), отключите/настройте форм-парсер (multipart — через потоковый MultipartReader), валидируйте тип/мими-тип до сохранения.

🔹 Курс «Программирование на языке Python»

🔹 Получить консультацию менеджера
🔹 Сайт Академии 🔹 Сайт Proglib

Библиотека собеса по С#
1
Как построить обработку сообщений с «at-least-once» без дублей?

Делайте обработчик идемпотентным: храните inbox/dedup-таблицу по message-id в одной транзакции с побочным эффектом (outbox/inbox pattern), ретраи — с джиттером и лимитами, «ядовитые» — в DLQ. Ограничивайте параллелизм и, при необходимости, объединяйте по ключу (SemaphoreSlim/Channel).

🔹 Курс «Программирование на языке Python»

🔹 Получить консультацию менеджера
🔹 Сайт Академии 🔹 Сайт Proglib

Библиотека собеса по С#
🔥1
Опишите разницу между оператором равенства (==) и методом Equals() в C#?

Оператор == и метод Equals() сравнивают два элемента данных типа значения или элемента данных ссылочного типа. Оператор равенства (==) является оператором сравнения, а метод Equals() сравнивает содержимое строки. Оператор == сравнивает ссылочную идентичность, тогда как метод Equals() сравнивает только содержимое.

🔹 Курс «Программирование на языке Python»
🔹 Получить консультацию менеджера
🔹 Сайт Академии 🔹 Сайт Proglib

Библиотека собеса по С#
Как избежать утечек памяти из-за событий, таймеров и долгоживущих подписок?

Делайте явный жизненный цикл (IDisposable/IAsyncDisposable) и отписку в Dispose, используйте слабые подписки/WeakReference для долгоживущих паблишеров, не держите лямбды на крупные замыкания, таймеры — с using/Dispose, у BackgroundService корректно обрабатывайте отмену и завершение, в DI избегайте singleton-подписок на scoped-объекты.

🔹 Курс «Программирование на языке Python»
🔹 Получить консультацию менеджера
🔹 Сайт Академии 🔹 Сайт Proglib

Библиотека собеса по С#
👍2
🎄 С Нового года начну учиться — знакомо?

А потом январь — освоюсь после праздников, февраль — доделаю текущие дела... Не откладывай на следующий год то, что можно начать уже в этом.

🗓️ 4 декабря стартует экспресс-курс «Математика для Data Science»— всё, что нужно для уверенных ответов на собесах:

→ 2 месяца без воды;
→ обновлённая программа (ноябрь 2025);
→ живые вебинары с экспертами;
→ записи всех занятий;
→ практика на Python + финальный проект с фидбэком.

Формат: 2 месяца интенсива и к началу следующего года ты готов к собесам.

Пока другие будут собираться с мыслями после НГ, ты уже будешь на полпути к офферу мечты.

🎁 Только до 30 ноября:

→ скидка 40% на курс;
→ курс «Базовая математика» в подарок;
→ бесплатный тест уровня математики.

👉🏻 Хочешь на курс → пиши менеджеру
Как минимизировать оверхед рефлексии в горячем пути?

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

🔹 Курс «Программирование на языке Python»
🔹 Получить консультацию менеджера
🔹 Сайт Академии 🔹 Сайт Proglib

Библиотека собеса по С#
Опишите свой опыт реализации сетевого многопользовательского режима в Unity, включая проблемы с задержками и синхронизацией.

Пример ответа: "Мой опыт работы с сетевым многопользовательским режимом в Unity включает использование Mirror и Netcode Unity для GameObjects. Я реализовал такие функции, как синхронизация движений игроков, создание и обработка обновлений состояния игры. Распространенной проблемой является снижение задержки. Я решил эту проблему с помощью таких методов, как прогнозирование на стороне клиента и серверное согласование, чтобы игра казалась отзывчивой, несмотря на задержки в сети. Для синхронизации я использовал компоненты NetworkTransform и пользовательские реализации NetworkVariable, выбирая правильный подход на основе частоты обновления данных и важности.

Также распространены проблемы синхронизации, такие как конфликты в действиях игроков. Я решил их с помощью авторитетной серверной логики, гарантируя, что сервер проверяет и применяет правила игры. Я также работал с различными сетевыми топологиями, включая клиент-сервер и одноранговую сеть, понимая их компромиссы с точки зрения масштабируемости и сложности. Например, обработка владения объектом и обеспечение согласованного состояния между клиентами, когда объекты могут быть подобраны или изменены разными игроками, требует тщательного проектирования и надежной обработки ошибок."


🤌 Бонусы для подписчиков:
Скидка 40% на все курсы Академии
Розыгрыш Apple MacBook
Бесплатный тест на знание математики

Библиотека собеса по С#