
Memory Management & GC
Garbage Collection, покоління, фіналізація, IDisposable, оператор using, витоки пам'яті, профілювання
1Що таке Garbage Collector (GC) у .NET?
Що таке Garbage Collector (GC) у .NET?
Відповідь
Garbage Collector — це автоматичний механізм керування пам'яттю, який звільняє невикористовувані об'єкти на managed heap. Він працює автоматично у фоновому режимі для запобігання витокам пам'яті, на відміну від C/C++, де пам'ять потрібно звільняти вручну. GC аналізує посилання на об'єкти й збирає ті, що більше недоступні з roots застосунку.
2Які три покоління Garbage Collector у .NET?
Які три покоління Garbage Collector у .NET?
Відповідь
GC .NET використовує три покоління: Gen0 (молоді, короткоживучі об'єкти, збираються часто), Gen1 (об'єкти середнього часу життя, буферна зона між Gen0 і Gen2) та Gen2 (довгоживучі об'єкти, збираються рідко, бо це витратно). Ця система поколінь оптимізує продуктивність, спершу збираючи короткоживучі об'єкти (Gen0), які становлять 80-90% об'єктів, і уникаючи частого сканування постійних об'єктів (Gen2).
3Що таке Large Object Heap (LOH) у .NET?
Що таке Large Object Heap (LOH) у .NET?
Відповідь
Large Object Heap — це окремий простір пам'яті для об'єктів розміром 85 KB або більше, який логічно належить до Gen2. На відміну від стандартного heap, який регулярно ущільнюється (compaction), LOH за замовчуванням НЕ ущільнюється, щоб уникнути витрат на копіювання великих об'єктів. Це може спричинити фрагментацію пам'яті. Починаючи з .NET 4.5.1, ущільнення LOH можна ввімкнути вручну за допомогою GCSettings.LargeObjectHeapCompactionMode.
Яка роль патерну IDisposable у .NET?
Що робить оператор using у C#?
+19 питань зі співбесід
Інші теми співбесід .NET
Основи C#
LINQ & Delegates
Основи мови C#
Основи ASP.NET Core
Життєвий цикл запиту в ASP.NET Core
Configuration & Settings
Життєвий цикл застосунку
Dependency Injection
Entity Framework Core
Minimal APIs
Розробка Web API
Async в ASP.NET Core
Authentication & Authorization
HttpClient & Networking
Серіалізація JSON
Entity Framework Core просунутий
Розширені можливості C#
Clean Architecture
Logging, Monitoring & Observability
Модульне тестування та xUnit
Інтеграційні тести
Docker & Containerization
Керування пакетами NuGet
Реактивне програмування
Async/await і патерни
.NET Design Patterns
Оптимізація продуктивності
Безпека та Best Practices
SignalR і реальний час
Архітектура мікросервісів
Опануй .NET для наступної співбесіди
Отримай доступ до всіх питань, flashcards, технічних тестів, вправ code review та симуляторів співбесід.
Почни безкоштовно