Підрозділ 1.Q
Питання для самоконтролю
Питання для самоконтролю — Розділ 1. Вступ 1.1. Роль платформи 1. Що таке C і що таке .NET? Чи є це одне й те саме? Поясніть, чому мову програмування і платформу важливо розрізняти. 2. Які три кроки проходить к
Питання для самоконтролю — Розділ 1. Вступ
1.1. Роль платформи
Що таке C# і що таке .NET? Чи є це одне й те саме? Поясніть, чому мову програмування і платформу важливо розрізняти.
Які три кроки проходить код C# від вихідного файлу до виконання на процесорі? Опишіть кожен крок і назвіть його результат.
Клас
Console— це частина синтаксису C# чи частина стандартної бібліотеки .NET? Обґрунтуйте свою відповідь.Поясніть, що таке три рівні розуміння коду: синтаксис мови, стандартна бібліотека і власна архітектура програми. Наведіть по одному прикладу для кожного рівня.
Чому CIL-збірка, скомпільована на Windows, може виконуватися на Linux без перекомпіляції? Яка частина .NET забезпечує цю можливість?
Порівняйте керування пам'яттю в C# і в C++. Що робить GC і чому наявність GC не означає, що про ресурси взагалі не треба думати?
На .NET можна розробляти програми різних типів: консольні, вебзастосунки, мобільні. Чому у навчальному курсі починають саме з консольних застосунків?
Виконайте в уяві такий код і поясніть, що відбудеться:
GC.Collect(); Console.WriteLine("Готово");Чи потрібно викликати
GC.Collect()у звичайному коді? Обґрунтуйте.
1.2. .NET Framework та сучасний .NET
Що таке .NET Framework і чим він відрізняється від сучасного .NET? Назвіть як мінімум три принципові відмінності.
Яка подія у 2020 році об'єднала .NET Core і .NET Framework у єдину платформу? Що змінилося після цього злиття?
Чому для нових проєктів не рекомендується обирати .NET Framework, навіть якщо він підтримується й досі?
Поясніть різницю між LTS і STS-версіями .NET. Яку версію варто обирати для навчального курсу і чому?
Чим відрізняється .NET SDK від .NET Runtime? Що потрібно встановити, щоб розробляти програми, і що потрібно для запуску готової програми?
Які команди .NET CLI використовуються для: перевірки встановленої версії SDK, перегляду всіх SDK, створення і запуску консольного проєкту? Запишіть команди правильно.
Порівняйте .NET Framework і сучасний .NET за критеріями: підтримувані операційні системи, відкритість вихідного коду, темп розвитку, рекомендація для нових проєктів.
Що станеться, якщо програма, написана на .NET Framework 4.8, буде скомпільована й запущена на машині з Linux, де встановлений лише сучасний .NET 10? Поясніть чому.
1.3. Керований та некерований код
Що таке керований код і що таке некерований код? Що відрізняє їх виконання на рівні середовища?
Які служби автоматично надає CLR коду, написаному на C#? Перелічіть щонайменше чотири і коротко поясніть кожну.
Порівняйте C# і C++ за способом роботи з пам'яттю. Що відбувається в C#, коли об'єкт стає недосяжним? Що потрібно зробити програмісту в C++?
Чи означає «некерований код» поганий або небезпечний код? Наведіть три сфери, де некерований код є необхідним і обґрунтованим вибором.
Що таке P/Invoke? В яких сценаріях керований C#-код потребує виклику нативних бібліотек? Чому це «відповідальна зона»?
Що таке
unsafe-код у C#? Поясніть, чим він відрізняється від звичайного керованого коду і коли його варто застосовувати.Розгляньте наступний псевдокод на C++:
Patient* p = new Patient("Ivan", 45); // ... використання ... // програміст забув написати delete p;Що станеться в C++? Чому така сама проблема неможлива в C#?
Заповніть таблицю порівняння керованого та некерованого коду за такими критеріями: контроль виконання, керування пам'яттю, безпека типів, типові сфери застосування.
1.4. JIT-компіляція
Що таке CIL (Common Intermediate Language)? Чому CIL — не машинний код, але програма все одно виконується швидко?
Поясніть різницю між двома кроками перетворення коду C# до машинного коду: що відбувається під час розробки і що — під час виконання?
Що відбувається, коли метод у .NET-програмі викликається вперше? А коли він викликається вдруге? Чому це важливо для продуктивності?
Чому JIT не компілює всю програму одразу при запуску? Яка перевага такого підходу?
Що таке метадані збірки і яку роль вони відіграють? Наведіть приклад того, що стає можливим завдяки метаданим і чого немає в C/C++ за замовчуванням.
Порівняйте JIT і AOT компіляцію: у чому суть кожного підходу, які сценарії підходять для JIT, а які — для AOT?
Що таке NativeAOT і яким є результат публікації у цьому режимі? Назвіть два обмеження NativeAOT і поясніть, чому вони виникають.
Заповніть таблицю порівняння: JIT vs NativeAOT за критеріями — час старту, обсяг пам'яті, підтримка рефлексії, кросплатформовість артефакту.