На странице собраны вопросы по .NET — от проверки базовых принципов до практического применения и архитектурных решений. В подборке чаще встречаются темы: backend, database, memory management.
Паттерн IDisposable в .NET предназначен для управления неуправляемыми ресурсами. Метод Dispose() позволяет пользователю явно освободить занятые ресурсы. Dispose можно вызвать вручную либо автоматически с помощью…
Поколения (generations) и условия запуска сборщика мусора Поколения — это подход к управлению памятью, при котором объекты распределяются по продолжительности жизни: на молодое (new), старое (old) и, в некоторых…
Как часто применяете принцип инверсии зависимостей и абстракции? фундамент чистой архитектуры и SOLID-принципов использую постоянно, чтобы обеспечивать гибкость и тестируемость строю инверсию зависимостей на основе…
Классическая проблема IEnumerable при отложенном выполнении в LINQ Контекст: LINQ, IEnumerable и deferred execution IEnumerable описывает последовательность, элементы которой вычисляются отложенно (deferred execution)…
Варианты времени жизни объекта в DI-контейнере Контекст: управление жизненным циклом объектов в DI (Dependency Injection) Singleton: единственный экземпляр существует на протяжении всего жизненного цикла приложения…
Инструменты и методы профилирования производительности Инструменты: профилировщики CPU (perf, VTune, Chrome DevTools), профилировщики памяти (Valgrind, Heap Profiler), APM-системы (New Relic, Datadog) Методы: сэмплинг…
Коллекции в .NET: назначение разных типов Массив имеет фиксированный размер, обеспечивает быстрый доступ по индексу и служит базовой структурой данных. List<T> представляет собой динамический массив, который при…
Основные методы синхронного взаимодействия между сервисами HTTP/REST API — наиболее распространённый протокол обмена, отличающийся простотой реализации и масштабирования gRPC — двоичный протокол поверх HTTP/2,…
Минусы обработки ошибок с помощью .NET Exception Исключения требуют значительных ресурсов CPU и памяти Частое применение исключений может ухудшать производительность Поток выполнения (flow control) становится сложнее…
Основные проблемы финализатора (деструктора) момент вызова непредсказуем, поскольку его определяет GC длительное выполнение финализатора способно задержать сборку мусора при работе с другими ресурсами возможны дедлоки…
Singleton: оставляет один экземпляр класса, что удобно для конфигурации и логирования Factory Method: создаёт объекты без жёсткой связи с конкретными классами и упрощает расширение Observer: организует подписку на…
Поколения управляемой кучи .NET и продвижение объектов между ними В управляемой куче .NET предусмотрены три поколения: Gen 0, Gen 1 и Gen 2 Gen 0 предназначено для недавно созданных объектов и очищается быстро и часто…