Українська
Контрольні питання
Питання для самоперевірки та підготовки до іспиту, згруповані за темами курсу.
Тема 1. .NET і структура програми
- Що таке платформа .NET? Поясніть призначення загальномовного середовища виконання CLR, бібліотеки базових класів BCL та проміжної мови CIL.
- Поясніть процес компіляції та виконання програми мовою C# від вихідного коду до машинного коду. Що таке JIT-компіляція?
- Які можливості надає .NET 10 SDK? Наведіть основні команди dotnet CLI для створення, збирання та запуску проєкту.
- Опишіть структуру рішення (solution) і проєкту в Microsoft Visual Studio 2026. Яке призначення файлу проєкту .csproj?
- Що таке NuGet? Як додати пакет до проєкту засобами Visual Studio та dotnet CLI?
- Опишіть структуру програми мовою C#. Що таке оператори верхнього рівня (top-level statements) і метод Main?
- Що таке простори імен? Поясніть призначення директив using, global using та неявних директив using.
Тема 2. Типи, змінні, операції
- Які вбудовані типи даних має мова C#? Наведіть їхні діапазони значень і відповідні типи .NET (System.Int32, System.Double тощо).
- У чому різниця між типами-значеннями та посилальними типами? Як вони розміщуються в пам’яті (стек і керована купа)?
- Поясніть неявну типізацію змінних за допомогою var. Які обмеження вона має?
- Що таке типи, які допускають значення null (nullable types)? Поясніть операції ?., ?? та ??=.
- Поясніть явне та неявне перетворення типів, методи Convert, Parse і TryParse. Що таке упакування (boxing) і розпакування (unboxing)?
- Які операції підтримує мова C#? Поясніть пріоритет операцій, цілочисельне ділення та контроль переповнення (checked, unchecked).
Тема 3. Розгалуження та цикли
- Поясніть роботу умовного оператора if-else та тернарної операції ?:.
- Опишіть оператор switch та вираз switch (switch expression). Наведіть приклади зіставлення зі зразком (pattern matching).
- Порівняйте цикли for, while та do-while. У яких випадках доцільно використовувати кожен із них?
- Як працює цикл foreach? Які об’єкти можна перебирати за його допомогою?
- Поясніть призначення операторів break, continue та return. Наведіть приклади їх використання у вкладених циклах.
Тема 4. Масиви та рядки
- Як оголосити, створити та ініціалізувати одновимірний масив? Які значення мають елементи масиву за замовчуванням?
- Порівняйте багатовимірні (прямокутні) та зубчасті (jagged) масиви. Наведіть приклади.
- Які методи класу System.Array використовують для сортування, пошуку та копіювання масивів?
- Чому рядки типу string є незмінними (immutable)? Які наслідки це має для продуктивності програми?
- Які методи класу String використовують для пошуку, порівняння, розбиття та форматування рядків? Поясніть інтерполяцію рядків.
- Для чого призначений клас StringBuilder? Порівняйте його використання з конкатенацією рядків.
Тема 5. Методи, параметри, рекурсія
- Опишіть синтаксис оголошення методу. Що таке сигнатура методу?
- Поясніть способи передавання параметрів у методи: за значенням, за посиланням (ref), вихідні (out) та вхідні (in) параметри.
- Що таке параметри за замовчуванням, іменовані аргументи та масив параметрів params?
- Що таке перевантаження методів? За якими ознаками компілятор обирає потрібний метод?
- Що таке рекурсія? Наведіть приклад рекурсивного методу та поясніть, коли виникає виняток StackOverflowException.
- Що таке члени-вирази (expression-bodied members) та локальні функції?
Тема 6. Налагодження та винятки
- Які засоби налагодження надає Microsoft Visual Studio 2026? Поясніть точки зупинки, покрокове виконання, вікна Locals, Watch і Call Stack.
- Що таке виняткова ситуація? Поясніть роботу блоків try, catch та finally.
- Опишіть ієрархію класів винятків .NET. Наведіть приклади стандартних винятків (ArgumentException, NullReferenceException, InvalidOperationException тощо).
- Як створити власний клас винятку? Поясніть різницю між throw та throw ex.
- Що таке фільтри винятків (catch when)? Як правильно обробляти кілька типів винятків?
- Поясніть призначення оператора using та інтерфейсу IDisposable для звільнення ресурсів.
Тема 7. Класи та об’єкти
- Що таке клас і об’єкт? Як створюється об’єкт за допомогою операції new і де він розміщується в пам’яті?
- Порівняйте поля та властивості класу. Що таке автоматичні властивості та властивості лише для ініціалізації (init)?
- Які види конструкторів існують у мові C#? Поясніть конструктор за замовчуванням, перевантаження конструкторів і виклик this(…).
- Що таке ініціалізатори об’єктів? Порівняйте їх із використанням конструкторів.
- Що таке первинні конструктори (primary constructors) та обов’язкові властивості (required)?
- Як працює збирач сміття (garbage collector) у .NET? Для чого призначений фіналізатор?
Тема 8. Інкапсуляція та статичні члени
- Що таке інкапсуляція? Як вона реалізується в мові C#?
- Поясніть модифікатори доступу public, private, protected, internal, protected internal та private protected.
- Що таке статичні поля, методи та конструктори? Чим статичний клас відрізняється від звичайного?
- Порівняйте константи (const) та поля лише для читання (readonly).
- Що таке часткові (partial) та вкладені класи? У яких випадках їх використовують?
Тема 9. Наслідування та поліморфізм
- Що таке наслідування? Поясніть синтаксис наслідування та виклик конструктора базового класу (base).
- Що таке поліморфізм? Поясніть віртуальні методи (virtual) та їх перевизначення (override).
- Чим відрізняється перевизначення методу (override) від його приховування (new)?
- Для чого використовують модифікатор sealed для класів і методів?
- Які методи успадковують усі класи від System.Object? Навіщо перевизначати методи ToString, Equals та GetHashCode?
- Поясніть висхідне та низхідне перетворення типів в ієрархії класів, операції is, as та зіставлення типу зі зразком.
Тема 10. Абстрактні класи, інтерфейси
- Що таке абстрактний клас і абстрактний метод? Коли доцільно їх використовувати?
- Що таке інтерфейс? Порівняйте абстрактні класи та інтерфейси.
- Поясніть реалізацію класом кількох інтерфейсів та явну реалізацію інтерфейсу.
- Що таке методи інтерфейсу з реалізацією за замовчуванням (default interface methods)?
- Поясніть призначення стандартних інтерфейсів IComparable<T>, IComparer<T>, IEquatable<T> та ICloneable.
Тема 11. Структури, записи, кортежі
- Що таке структура (struct)? Порівняйте структури та класи.
- Що таке записи (record, record struct)? Поясніть порівняння записів за значенням і вираз with.
- Що таке перелічення (enum)? Як використовують атрибут [Flags] і побітові операції з переліченнями?
- Що таке кортежі (ValueTuple)? Поясніть іменовані елементи кортежу та деконструкцію.
- Порівняйте способи повернення кількох значень із методу: вихідні параметри, кортежі та записи.
Тема 12. Операції та індексатори
- Як перевантажити операції для власного класу? Які операції можна перевантажувати і яких правил при цьому слід дотримуватися?
- Як перевантажити операції == та != і узгодити їх із методами Equals і GetHashCode?
- Поясніть операції перетворення типів implicit та explicit, визначені користувачем.
- Що таке індексатор? Наведіть приклад класу з індексатором.
- Що таке методи розширення (extension methods)? Які вимоги до їх оголошення?
Тема 13. Узагальнення та колекції
- Що таке узагальнення (generics)? Які переваги дають узагальнені класи та методи порівняно з використанням типу object?
- Поясніть обмеження параметрів типу узагальнень (where T : class, struct, new(), базовий клас, інтерфейс).
- Опишіть основні колекції простору імен System.Collections.Generic: List<T>, Dictionary<TKey, TValue>, HashSet<T>, Queue<T> та Stack<T>.
- Порівняйте масиви, List<T> та LinkedList<T> за швидкодією основних операцій.
- Поясніть роль інтерфейсів IEnumerable<T> та IEnumerator<T>. Як створити ітератор за допомогою yield return?
- Що таке коваріантність і контраваріантність узагальнених інтерфейсів і делегатів (out, in)?
Тема 14. Делегати, лямбди, події
- Що таке делегат? Як оголосити делегат, створити його екземпляр і викликати метод через делегат?
- Поясніть стандартні узагальнені делегати Func, Action та Predicate.
- Що таке анонімні методи та лямбда-вирази? Що таке замикання (closure)?
- Що таке багатоадресні (multicast) делегати? Як додати метод до списку виклику та видалити його?
- Що таке події (event)? Поясніть стандартний шаблон подій .NET із делегатом EventHandler<TEventArgs>.
Тема 15. LINQ
- Що таке LINQ? Порівняйте синтаксис запитів (query syntax) та синтаксис методів (method syntax).
- Поясніть операції фільтрації, проєкції та сортування LINQ: Where, Select, OrderBy, ThenBy.
- Поясніть операції групування та з’єднання LINQ: GroupBy, Join і GroupJoin.
- Які агрегатні операції LINQ ви знаєте (Count, Sum, Average, Min, Max, Aggregate)?
- Що таке відкладене виконання (deferred execution) запитів LINQ? Які методи спричиняють негайне виконання запиту?
- Поясніть операції розбиття та операції над множинами LINQ: Take, Skip, Distinct, Union, Intersect, Except. Що таке анонімні типи?
Тема 16. Файли, потоки та JSON
- Які класи простору імен System.IO використовують для роботи з файлами та каталогами (File, FileInfo, Directory, Path)?
- Що таке потік (Stream)? Поясніть роботу з текстовими файлами за допомогою класів StreamReader і StreamWriter.
- Порівняйте текстові та двійкові файли. Як працюють класи FileStream, BinaryReader і BinaryWriter?
- Що таке серіалізація? Поясніть серіалізацію та десеріалізацію об’єктів у формат JSON за допомогою класу JsonSerializer бібліотеки System.Text.Json.
- Як налаштувати серіалізацію JSON за допомогою JsonSerializerOptions та атрибутів [JsonPropertyName] і [JsonIgnore]? Як асинхронно читати та записувати файли (async, await)?
Тема 17. SOLID і шаблони проєктування
- Поясніть принципи SOLID. Наведіть приклад порушення принципу єдиної відповідальності та спосіб його усунення.
- Поясніть принцип відкритості/закритості та принцип підстановки Лісков на прикладах ієрархій класів.
- Поясніть принцип розділення інтерфейсів і принцип інверсії залежностей. Що таке впровадження залежностей (dependency injection)?
- Що таке шаблони проєктування? Опишіть породжувальні шаблони Одинак (Singleton) і Фабричний метод (Factory Method).
- Опишіть поведінкові шаблони Стратегія (Strategy) і Спостерігач (Observer) та їх реалізацію засобами мови C#.
Тема 18. Тестування та рефакторинг
- Що таке модульне тестування? Поясніть структуру модульного тесту за шаблоном Arrange–Act–Assert.
- Як створити проєкт модульних тестів xUnit у Visual Studio 2026? Поясніть атрибути [Fact] і [Theory] та методи класу Assert.
- Як запускати та аналізувати тести у вікні Test Explorer? Що таке покриття коду тестами?
- Що таке тестові дублери (заглушки, mock-об’єкти)? Для чого використовують бібліотеку Moq?
- Що таке рефакторинг? Наведіть приклади прийомів рефакторингу (виділення методу, перейменування, заміна умовного оператора поліморфізмом) та засоби рефакторингу Visual Studio 2026.