Вопросы на собеседование .NET и C#
Популярный список вопросов для .NET-разработчиков собран в статье 150+ вопросов по .NET (ITVDN) — перевод подборки DOU. Ниже — где в энциклопедии искать ответы и краткие формулировки по темам, которые часто задают на интервью, но размазаны по нескольким главам.
Сводка версий C#, .NET и LTS — Версии C# и .NET — справочная таблица.
Общая подготовка к интервью: техническое собеседование, корректные вопросы. Расширенный Q&A по C# — в лаборатории вопросов.
Таблицы ниже работают лучше всего вместе с практикой — после каждого блока вопросов закрепляйте материал в коде — небольшой API, консольная утилита, тесты и SQL-запросы. Так ответы становятся уверенными и предметными.
Как пользоваться
- Найдите уровень (Junior / Middle / Senior) и тему.
- Перейдите по ссылке на учебную статью — там развёрнутый ответ.
- Если в таблице стоит "ниже" — краткий ответ есть в этом файле.
Формула сильного ответа на интервью
Для большинства технических вопросов хорошо работает структура из трёх шагов:
- Определение — что это и зачем применяется.
- Практика — где вы использовали это в проекте.
- Ограничения — какие риски и компромиссы есть у подхода.
Пример для async/await: это модель неблокирующего I/O в .NET; использовал в API для внешних HTTP-вызовов и БД; избегаю Result/Wait и слежу за отменой через CancellationToken.
Junior — общее и смежные темы
| № | Вопрос | Где в энциклопедии |
|---|---|---|
| 1–4 | ООП, наследование, лямбды, рекурсия | ООП в C#, ООП, лямбды |
| 5 | Многопоточность, классы | Асинхронность и потоки, Thread |
| 6–7 | JSON, REST | Сериализация, сеть, как работают сайты |
| 8 | SPA | Веб и API, фронтенд-контекст |
| 9 | GoF-паттерны | Паттерны проектирования |
| 10 | GET и POST | HTTP |
| 11 | Docker | Контейнеризация |
| 12 | Unit и интеграционные тесты | Тестирование, интеграционные тесты ASP.NET |
Junior — платформа .NET и C#
| № | Вопрос | Где в энциклопедии |
|---|---|---|
| 13–15 | Exception, try/catch/finally, call stack | Исключения, иерархия, стек вызовов |
| 16 | ASP.NET | ASP.NET, платформа .NET |
| 17 | Типы Action filters | ASP.NET MVC pipeline (раздел ниже) |
| 18 | Web Service | Веб-сервисы (ASMX, WCF, REST) |
| 19–20 | CLR, GC (базово) | Платформа .NET, архитектура .NET |
| — | Версии C# / .NET / LTS | таблица версий, история |
| 21–22 | Delegate и Action | Делегаты |
| 23 | LINQ | LINQ, справочник LINQ |
| 24 | namespace | Пространства имён |
| 25–35 | Типы, nullable, boxing, коллекции, yield | Типы, стек/куча, коллекции, yield |
| 36–44 | Классы, struct, const/readonly, new/override | ООП, преобразования |
| 45–47 | async/await и потоки | Асинхронность, Task и async/await, Thread |
| 48–50 | SQL, JOIN | Основы БД, SQL |
| 51–53 | Unit-тесты | Разработка и отладка |
Типы фильтров ASP.NET Core (вопрос 17)
В MVC цепочка фильтров: Authorization → Resource → Action → Exception → Result (и зеркальные стадии "After"). Атрибуты — [Authorize], [ValidateAntiForgeryToken], [ServiceFilter], кэширование результата и т.д.
В Minimal API аналог — endpoint filters (IEndpointFilter). Подробнее: ASP.NET, справочник ASP.NET.
| 61 | IaaS / PaaS / SaaS | Облака |
| № | Вопрос | Где в энциклопедии |
|---|---|---|
| 54–55 | HTTP-запрос в браузере, HTTPS | Сайты и HTTP, безопасность, JWT |
| 56 | SOLID | Проектирование |
| 57 | Сериализация | Сериализация |
| 59 | DI | Внедрение зависимостей |
| 60 | Cohesion / coupling | Архитектура |
| 61 | IaaS / PaaS / SaaS | Облака |
| 63–65 | Паттерны, Singleton, Strategy | Паттерны, Strategy в C#, Factory в C#, Command в C#, Observer в C# |
| 66–69 | Распределённые системы, идемпотентность | Интеграция |
| 70 | async и параллелизм | Асинхронность, Task и async/await, Thread |
| 71 | Неперехватываемые исключения | Исключения |
| 72 | .NET Standard и Core BCL | Архитектура .NET (раздел .NET Standard) |
| 73 | LINQ отложенное/немедленное | LINQ, справочник LINQ |
| 74–75 | ConfigureServices, Transient/Scoped | DI, ASP.NET |
| 76–78 | Kestrel, MVC pipeline, кэш API | ASP.NET, справочник |
| 79–82 | Стек/куча, GC, using, LOH | Стек и куча, GC, ресурсы |
| 83–109 | Generics, рефлексия, коллекции, IEnumerable/IQueryable | Generics, рефлексия, коллекции, LINQ |
| 110–118 | БД, EF | SQL, ORM, EF Core — первая программа, ADO.NET / Dapper |
| 119–121 | ConfigureAwait, потоки HTTP, ThreadPool | Асинхронность, Task и async/await, Thread |
.NET Standard и BCL (вопрос 72)
- .NET Standard — спецификация общего API для библиотек (совместимость Framework / Core / Xamarin). Не среда выполнения.
- BCL (Base Class Library) — реализация
System.*в конкретной платформе (.NET Framework, .NET 8/10, …).
Сейчас новые библиотеки обычно целятся в net8.0 / net10.0, а не в netstandard2.0. Подробнее: архитектура .NET.
| 141–147 | Generics, immutable, IEnumerable, Stack | Generics, коллекции, итераторы, Iterator / yield |
| № | Вопрос | Где в энциклопедии |
|---|---|---|
| 122–130 | AOP/FP, слабая связность, performance, cross-cutting | ООП, производительность, паттерны |
| 131–133 | CPU/IO-bound, маршалинг, async подробно | Асинхронность, Task и async/await, Thread, справочник C# |
| 134 | lock и struct | Асинхронность, справочник |
| 135–136 | Expression Tree, GC поколения | Метаданные, GC |
| 137–140 | Трассировка API, секреты, CI/CD, CORS | ASP.NET, конфигурация, DevOps |
| 141–147 | Generics, immutable, IEnumerable, Stack | Generics, коллекции, итераторы, Iterator / yield |
| 148–156 | БД | Базы данных |
| 157–164 | Микросервисы, очереди | Интеграция, Resilience |
| 165–168 | Azure | Облака |
Маршалинг (вопрос 132)
Маршалинг — преобразование данных при переходе между управляемым кодом (CLR) и неуправляемым (Win32 API, COM, нативные DLL) — копирование строк, выравнивание структур, соглашения о вызовах. В .NET — P/Invoke (DllImport), COM Interop, атрибут [MarshalAs]. См. справочник C#, производительность и нативные ресурсы.
lock и структуры (вопрос 134)
lock принимает ссылочный объект-синхронизатор. Значимый тип в lock вызовет boxing (аллокация в куче на каждый вход в блок) — технически компилируется, но для hot path это плохая практика. Используйте lock на object, Mutex или SemaphoreSlim, либо безлоковные структуры.
Почему у GC три поколения (вопрос 136)
Эвристика generational GC: большинство объектов умирают молодыми. Gen 0/1 собираются часто и дёшево; Gen 2 — редко, для долгоживущих. Больше поколений даёт убывающую отдачу при росте сложности учёта; меньше — хуже разделение "молодых" и "старых". Подробнее: сборщик мусора.
Чек-лист по разделу C#
Перед собеседованием пройдите чек-лист C# и чек-лист .NET.
План подготовки на 7 дней
- День 1 — типы, память,
struct/class, исключения. - День 2 — коллекции, LINQ, generics.
- День 3 — async/await, потоки, ThreadPool.
- День 4 — ASP.NET Core, middleware, DI, маршрутизация.
- День 5 — EF Core, SQL, транзакции, индексы.
- День 6 — тестирование, Docker, CI/CD, безопасность.
- День 7 — повтор вслух, пробное собеседование, поведенческие вопросы.
Полный маршрут по уровням — 475. Выбор стека под тип проекта — 476.
Поведенческие вопросы (soft skills)
На Middle и Senior часто спрашивают про опыт работы в команде, помимо вопросов по CLR и LINQ. Удобная схема ответа — STAR:
- S (Situation) — контекст, команда, продукт.
- T (Task) — ваша задача и зона ответственности.
- A (Action) — что сделали лично, какие инструменты.
- R (Result) — измеримый итог или урок.
| Тема | Пример вопроса | На что смотрит интервьюер |
|---|---|---|
| Конфликт в команде | Разногласие по техническому решению | Факты, компромисс, итог для продукта |
| Дедлайн | Не успели в срок | Приоритизация, связь с PM, что отложили |
| Ошибка в prod | Сложный инцидент | Диагностика, постмортем, изменения в процессе |
| Менторство | Помощь джуну | Конкретные шаги, результат для человека |
| Обучение | Новый стек | План, pet-проект, сроки |
| Code review | Спорный PR | Аргументы, стандарты, тон общения |
Общая подготовка — техническое собеседование, вопросы работодателю.
Перед финальным этапом повторите поколения GC, async internals, lifetimes DI, N+1 в EF, saga/outbox, observability (логи, метрики, трейсы). Карта статей — маршрут от Junior к Senior.
Практические задания из статьи
Алгоритмические задачи (калькулятор, простые числа, FizzBuzz, рефакторинг кода) закрываются разделами синтаксис–управляющие конструкции, ООП, LINQ. Задачи по SQL и распределённым транзакциям — в SQL и интеграции.
Базовый разбор HTTP и HTTPS находится в отдельной статье — HTTP как основа веб-интеграций.