Каких вопросов по .NET ждать на собеседовании?
Автор: Aaron Cao · Обновлено

Ожидайте вопросы о среде выполнения (CLR, сборка мусора, типы значений и ссылочные типы), языке (async и await, LINQ, обобщения, записи), фреймворках (middleware и внедрение зависимостей в ASP.NET Core, EF Core), а также ситуации вроде утечки памяти в долго работающем сервисе или медленной конечной точки API. Интервьюеры оценивают ход рассуждений.
С каких вопросов о среде и языке начинается собеседование по .NET?
Интервьюеры начинают с основы фреймворка — среды выполнения. Будьте готовы объяснить, что делает Common Language Runtime: загружает сборки, выполняет JIT-компиляцию промежуточного языка и управляет памятью. Затем потребуется подробнее рассказать о сборке мусора. Цепочка уточнений предсказуема: зачем сборщик делит объекты по поколениям, из-за чего объект переходит в следующее поколение, для чего нужна куча больших объектов и зачем вообще существуют IDisposable и using, если память управляется автоматически. На последний вопрос ответьте, что они нужны для неуправляемых ресурсов, например файловых дескрипторов и подключений, которые сборщик не умеет своевременно освобождать.
- Типы значений и ссылочные типы. Где хранятся те и другие, что для них означает копирование и какова цена упаковки.
- async и await. Объясните, что ожидающая задача освобождает вызывающий поток, а не блокирует его, почему
async voidпредназначен только для обработчиков событий и какую взаимоблокировку имеют в виду, предостерегая от.Result. - LINQ. Ловушка — отложенное выполнение: запрос
IEnumerableвыполняется при перечислении, а не при создании, тогда как поставщик базы данных переводит запрос в SQL лишь для понятных ему выражений. - Обобщения, интерфейсы и записи. Ограничения, преимущества интерфейсов перед базовыми классами для тестируемости и польза равенства по значению у записей.
В каждом ответе опишите механизм и одно следствие. Интервьюеры хотят услышать, что сборка поколения ноль обходится дёшево, поскольку большинство объектов быстро становятся ненужными; просто назвать поколения без объяснения недостаточно.
Как выглядят вопросы по ASP.NET Core и EF Core?
Вы уверенно пишете контроллеры, но опасаетесь вопросов о внутренних механизмах, с которыми редко работаете. Опасение обоснованно: именно о них спрашивают при проверке знания фреймворка. Ниже они приведены в обычном порядке вместе с типичными уточнениями.
- Конвейер запросов. Middleware выполняется в порядке регистрации, а каждый компонент решает, вызывать ли следующий. Уточнение: где должна находиться аутентификация относительно авторизации и что произойдёт, если зарегистрировать их в обратном порядке?
- Сроки жизни при внедрении зависимостей. Singleton существует всё время работы приложения, scoped — в рамках одного запроса, transient создаётся при каждом разрешении. Классическая ловушка — внедрение scoped-сервиса, например контекста базы данных, в singleton; будьте готовы объяснить, почему это ошибка.
- Конфигурация и параметры. Многоуровневые источники, переопределения для окружений и шаблон options для типизированных настроек.
- EF Core. Отслеживание изменений и его отключение для запросов только на чтение, проблема N+1 и её устранение с помощью жадной загрузки или проекции, миграции и честное определение момента, когда написанный вручную запрос лучше LINQ.
- Тестирование. Как интерфейсы и контейнер DI повышают тестируемость сервиса и что провайдер в памяти способен и не способен доказать о настоящей базе данных.
Сильнейшие кандидаты связывают эти темы: scoped-контекст, разрешённый внутри singleton-фонового сервиса, — не вопрос на знание мелочей, а реальная ошибка управления памятью и корректности, которую интервьюеры уже допускали в рабочем коде. Они хотят услышать, что вы явно создадите область.
Как проходят ситуационные вопросы?
На собеседованиях для старших специалистов вам описывают симптом и наблюдают за вашим подходом. Типичный пример: backend-инженеру, претендующему на старшую должность в логистической компании, сообщают, что потребление памяти API на ASP.NET Core растёт несколько дней, пока контейнер не перезапустится. Сильный кандидат не гадает. Он спрашивает, что изменилось, ищет объекты, удерживаемые статическими кешами или долгоживущими подписками на события, проверяет scoped-сервисы, которые сохраняют singleton-сервисы, исследует рост кучи больших объектов и делает снимок памяти, прежде чем предлагать исправление. Интервьюер оценивает порядок исследования.
Другие распространённые ситуации: конечная точка работает медленно только под нагрузкой — ответ переходит от синхронных обращений к базе данных к async, исчерпанию пула подключений и кешированию; состояние гонки в общей коллекции — нужно обсудить цену конкурентных коллекций и разных вариантов блокировки; запрос должен вызвать три нижестоящих сервиса — следует объяснить обработку тайм-аутов, повторных попыток и частичных сбоев; миграция должна добавить столбец без простоя. В каждом случае назовите ограничение, выберите механизм и вслух объясните компромисс.
Подобные задачи гораздо проще, если заранее проговаривать ответы вслух и реагировать на уточнения. Для этого создан режим пробного собеседования; банки вопросов для других языков и должностей собраны в разделе вопросов по должностям и темам.
Может ли ИИ-помощник помочь с вопросами по .NET?
На разговорных этапах — да, в обозначенных пределах. Нативное настольное приложение SubcueAI для macOS и Windows захватывает системный звук и сигнал микрофона и показывает краткие подсказки в локальном оверлее. Поэтому, когда интервьюер спрашивает, почему scoped-контекст внутри singleton — это ошибка, механизм отображается на вашем экране, пока вы объясняете его своими словами. Расширение браузера поддерживает звонки во вкладках Chrome и Edge, захватывая только звук вкладки со встречей. Бот не присоединяется к звонку, а в страницу встречи ничего не внедряется; инструкции по настройке находятся на странице руководства.
Ограничения: тест с прокторингом, запись экрана, управляемый компанией ноутбук или практическое задание, где вы под наблюдением пишете код на C#, находятся вне сферы применения; помощник особенно слаб именно там, где требуется писать код. Лучше всего он помогает с приведёнными выше вопросами о среде выполнения, фреймворке и компромиссах. Сначала загрузите резюме, чтобы подсказки учитывали системы, которые вы действительно создавали; этот профиль хранится в конструкторе резюме.
Частые вопросы
Зачем сборщику мусора .NET нужны поколения?
Чем отличаются singleton, scoped и transient в ASP.NET Core?
Что в действительности делает await?
Что такое проблема N+1 в EF Core?
Может ли SubcueAI помочь во время теста по .NET с прокторингом?
Похожие вопросы
- Каких вопросов о Databricks ожидать на собеседовании?
- Каких вопросов ожидать на собеседовании инженера по качеству?
- Каких вопросов ожидать на квант-интервью?
- Каких вопросов по Snowflake ожидать на собеседовании?
- Каких вопросов ожидать на собеседовании учителя?
- Каких вопросов по Terraform ожидать на собеседовании?