Перейти к основному содержимому

Вопросы на собеседование .NET и C#

Разработчику Архитектору

Популярный список вопросов для .NET-разработчиков собран в статье 150+ вопросов по .NET (ITVDN) — перевод подборки DOU. Ниже — где в энциклопедии искать ответы и краткие формулировки по темам, которые часто задают на интервью, но размазаны по нескольким главам.

Сводка версий C#, .NET и LTS — Версии C# и .NET — справочная таблица.

Общая подготовка к интервью: техническое собеседование, корректные вопросы. Расширенный Q&A по C# — в лаборатории вопросов.

Как использовать шпаргалку эффективно

Таблицы ниже работают лучше всего вместе с практикой — после каждого блока вопросов закрепляйте материал в коде — небольшой API, консольная утилита, тесты и SQL-запросы. Так ответы становятся уверенными и предметными.


Как пользоваться

  1. Найдите уровень (Junior / Middle / Senior) и тему.
  2. Перейдите по ссылке на учебную статью — там развёрнутый ответ.
  3. Если в таблице стоит "ниже" — краткий ответ есть в этом файле.

Формула сильного ответа на интервью

Для большинства технических вопросов хорошо работает структура из трёх шагов:

  1. Определение — что это и зачем применяется.
  2. Практика — где вы использовали это в проекте.
  3. Ограничения — какие риски и компромиссы есть у подхода.

Пример для async/await: это модель неблокирующего I/O в .NET; использовал в API для внешних HTTP-вызовов и БД; избегаю Result/Wait и слежу за отменой через CancellationToken.


Junior — общее и смежные темы

ВопросГде в энциклопедии
1–4ООП, наследование, лямбды, рекурсияООП в C#, ООП, лямбды
5Многопоточность, классыАсинхронность и потоки, Thread
6–7JSON, RESTСериализация, сеть, как работают сайты
8SPAВеб и API, фронтенд-контекст
9GoF-паттерныПаттерны проектирования
10GET и POSTHTTP
11DockerКонтейнеризация
12Unit и интеграционные тестыТестирование, интеграционные тесты ASP.NET

Junior — платформа .NET и C#

ВопросГде в энциклопедии
13–15Exception, try/catch/finally, call stackИсключения, иерархия, стек вызовов
16ASP.NETASP.NET, платформа .NET
17Типы Action filtersASP.NET MVC pipeline (раздел ниже)
18Web ServiceВеб-сервисы (ASMX, WCF, REST)
19–20CLR, GC (базово)Платформа .NET, архитектура .NET
Версии C# / .NET / LTSтаблица версий, история
21–22Delegate и ActionДелегаты
23LINQLINQ, справочник LINQ
24namespaceПространства имён
25–35Типы, nullable, boxing, коллекции, yieldТипы, стек/куча, коллекции, yield
36–44Классы, struct, const/readonly, new/overrideООП, преобразования
45–47async/await и потокиАсинхронность, Task и async/await, Thread
48–50SQL, JOINОсновы БД, SQL
51–53Unit-тестыРазработка и отладка

Типы фильтров ASP.NET Core (вопрос 17)

В MVC цепочка фильтров: AuthorizationResourceActionExceptionResult (и зеркальные стадии "After"). Атрибуты — [Authorize], [ValidateAntiForgeryToken], [ServiceFilter], кэширование результата и т.д.

В Minimal API аналог — endpoint filters (IEndpointFilter). Подробнее: ASP.NET, справочник ASP.NET.


| 61 | IaaS / PaaS / SaaS | Облака |

ВопросГде в энциклопедии
54–55HTTP-запрос в браузере, HTTPSСайты и HTTP, безопасность, JWT
56SOLIDПроектирование
57СериализацияСериализация
59DIВнедрение зависимостей
60Cohesion / couplingАрхитектура
61IaaS / PaaS / SaaSОблака
63–65Паттерны, Singleton, StrategyПаттерны, Strategy в C#, Factory в C#, Command в C#, Observer в C#
66–69Распределённые системы, идемпотентностьИнтеграция
70async и параллелизмАсинхронность, Task и async/await, Thread
71Неперехватываемые исключенияИсключения
72.NET Standard и Core BCLАрхитектура .NET (раздел .NET Standard)
73LINQ отложенное/немедленноеLINQ, справочник LINQ
74–75ConfigureServices, Transient/ScopedDI, ASP.NET
76–78Kestrel, MVC pipeline, кэш APIASP.NET, справочник
79–82Стек/куча, GC, using, LOHСтек и куча, GC, ресурсы
83–109Generics, рефлексия, коллекции, IEnumerable/IQueryableGenerics, рефлексия, коллекции, LINQ
110–118БД, EFSQL, ORM, EF Core — первая программа, ADO.NET / Dapper
119–121ConfigureAwait, потоки 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–130AOP/FP, слабая связность, performance, cross-cuttingООП, производительность, паттерны
131–133CPU/IO-bound, маршалинг, async подробноАсинхронность, Task и async/await, Thread, справочник C#
134lock и structАсинхронность, справочник
135–136Expression Tree, GC поколенияМетаданные, GC
137–140Трассировка API, секреты, CI/CD, CORSASP.NET, конфигурация, DevOps
141–147Generics, immutable, IEnumerable, StackGenerics, коллекции, итераторы, Iterator / yield
148–156БДБазы данных
157–164Микросервисы, очередиИнтеграция, Resilience
165–168AzureОблака

Маршалинг (вопрос 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Аргументы, стандарты, тон общения

Общая подготовка — техническое собеседование, вопросы работодателю.

Шпаргалка Senior

Перед финальным этапом повторите поколения GC, async internals, lifetimes DI, N+1 в EF, saga/outbox, observability (логи, метрики, трейсы). Карта статей — маршрут от Junior к Senior.


Практические задания из статьи

Алгоритмические задачи (калькулятор, простые числа, FizzBuzz, рефакторинг кода) закрываются разделами синтаксисуправляющие конструкции, ООП, LINQ. Задачи по SQL и распределённым транзакциям — в SQL и интеграции.


Основа по протоколу

Базовый разбор HTTP и HTTPS находится в отдельной статье — HTTP как основа веб-интеграций.