OOP Course
Сьогодні

Підрозділ 1.Q

Питання для самоконтролю

Питання для самоконтролю — Розділ 1. Вступ 1.1. Роль платформи 1. Що таке C і що таке .NET? Чи є це одне й те саме? Поясніть, чому мову програмування і платформу важливо розрізняти. 2. Які три кроки проходить к

Питання для самоконтролю — Розділ 1. Вступ

1.1. Роль платформи

  1. Що таке C# і що таке .NET? Чи є це одне й те саме? Поясніть, чому мову програмування і платформу важливо розрізняти.

  2. Які три кроки проходить код C# від вихідного файлу до виконання на процесорі? Опишіть кожен крок і назвіть його результат.

  3. Клас Console — це частина синтаксису C# чи частина стандартної бібліотеки .NET? Обґрунтуйте свою відповідь.

  4. Поясніть, що таке три рівні розуміння коду: синтаксис мови, стандартна бібліотека і власна архітектура програми. Наведіть по одному прикладу для кожного рівня.

  5. Чому CIL-збірка, скомпільована на Windows, може виконуватися на Linux без перекомпіляції? Яка частина .NET забезпечує цю можливість?

  6. Порівняйте керування пам'яттю в C# і в C++. Що робить GC і чому наявність GC не означає, що про ресурси взагалі не треба думати?

  7. На .NET можна розробляти програми різних типів: консольні, вебзастосунки, мобільні. Чому у навчальному курсі починають саме з консольних застосунків?

  8. Виконайте в уяві такий код і поясніть, що відбудеться:

    GC.Collect();
    Console.WriteLine("Готово");

    Чи потрібно викликати GC.Collect() у звичайному коді? Обґрунтуйте.

1.2. .NET Framework та сучасний .NET

  1. Що таке .NET Framework і чим він відрізняється від сучасного .NET? Назвіть як мінімум три принципові відмінності.

  2. Яка подія у 2020 році об'єднала .NET Core і .NET Framework у єдину платформу? Що змінилося після цього злиття?

  3. Чому для нових проєктів не рекомендується обирати .NET Framework, навіть якщо він підтримується й досі?

  4. Поясніть різницю між LTS і STS-версіями .NET. Яку версію варто обирати для навчального курсу і чому?

  5. Чим відрізняється .NET SDK від .NET Runtime? Що потрібно встановити, щоб розробляти програми, і що потрібно для запуску готової програми?

  6. Які команди .NET CLI використовуються для: перевірки встановленої версії SDK, перегляду всіх SDK, створення і запуску консольного проєкту? Запишіть команди правильно.

  7. Порівняйте .NET Framework і сучасний .NET за критеріями: підтримувані операційні системи, відкритість вихідного коду, темп розвитку, рекомендація для нових проєктів.

  8. Що станеться, якщо програма, написана на .NET Framework 4.8, буде скомпільована й запущена на машині з Linux, де встановлений лише сучасний .NET 10? Поясніть чому.

1.3. Керований та некерований код

  1. Що таке керований код і що таке некерований код? Що відрізняє їх виконання на рівні середовища?

  2. Які служби автоматично надає CLR коду, написаному на C#? Перелічіть щонайменше чотири і коротко поясніть кожну.

  3. Порівняйте C# і C++ за способом роботи з пам'яттю. Що відбувається в C#, коли об'єкт стає недосяжним? Що потрібно зробити програмісту в C++?

  4. Чи означає «некерований код» поганий або небезпечний код? Наведіть три сфери, де некерований код є необхідним і обґрунтованим вибором.

  5. Що таке P/Invoke? В яких сценаріях керований C#-код потребує виклику нативних бібліотек? Чому це «відповідальна зона»?

  6. Що таке unsafe-код у C#? Поясніть, чим він відрізняється від звичайного керованого коду і коли його варто застосовувати.

  7. Розгляньте наступний псевдокод на C++:

    Patient* p = new Patient("Ivan", 45);
    // ... використання ...
    // програміст забув написати delete p;

    Що станеться в C++? Чому така сама проблема неможлива в C#?

  8. Заповніть таблицю порівняння керованого та некерованого коду за такими критеріями: контроль виконання, керування пам'яттю, безпека типів, типові сфери застосування.

1.4. JIT-компіляція

  1. Що таке CIL (Common Intermediate Language)? Чому CIL — не машинний код, але програма все одно виконується швидко?

  2. Поясніть різницю між двома кроками перетворення коду C# до машинного коду: що відбувається під час розробки і що — під час виконання?

  3. Що відбувається, коли метод у .NET-програмі викликається вперше? А коли він викликається вдруге? Чому це важливо для продуктивності?

  4. Чому JIT не компілює всю програму одразу при запуску? Яка перевага такого підходу?

  5. Що таке метадані збірки і яку роль вони відіграють? Наведіть приклад того, що стає можливим завдяки метаданим і чого немає в C/C++ за замовчуванням.

  6. Порівняйте JIT і AOT компіляцію: у чому суть кожного підходу, які сценарії підходять для JIT, а які — для AOT?

  7. Що таке NativeAOT і яким є результат публікації у цьому режимі? Назвіть два обмеження NativeAOT і поясніть, чому вони виникають.

  8. Заповніть таблицю порівняння: JIT vs NativeAOT за критеріями — час старту, обсяг пам'яті, підтримка рефлексії, кросплатформовість артефакту.

Розроблено Tomka Yurii · © 2026 ·