Українська
Контрольні питання
Питання для самоперевірки та підготовки до іспиту, згруповані за темами курсу.
Тема 1. Python, PyCharm і Git
- Що таке мова Python? Поясніть роботу інтерпретатора CPython: байт-код, віртуальна машина, динамічна типізація.
- Як створити та запустити проєкт Python у JetBrains PyCharm? Як налаштувати інтерпретатор проєкту?
- Що таке віртуальні середовища? Як їх створювати та активувати (venv)?
- Як встановлювати пакети за допомогою pip та uv? Що таке PyPI і файл requirements.txt?
- Що таке система керування версіями Git? Поясніть поняття репозиторію, коміту, гілки та основні команди Git.
- Як працювати з репозиторієм Git у PyCharm? Які файли проєкту Python слід додавати до .gitignore?
Тема 2. Типи, операції, керування
- Які вбудовані типи даних має мова Python? Поясніть поняття змінних як посилань на об’єкти.
- Порівняйте змінні (mutable) та незмінні (immutable) типи даних. Наведіть приклади.
- Які операції підтримує мова Python? Поясніть цілочисельне ділення, піднесення до степеня та операцію присвоєння у виразі :=.
- Як виконувати консольне введення за допомогою input та виведення за допомогою print? Як перетворювати типи даних?
- Поясніть умовний оператор if-elif-else, цикли for і while та функцію range.
- Що таке структурне зіставлення зі зразком (match-case)? Наведіть приклади.
Тема 3. Функції
- Поясніть оголошення функцій у Python, повернення значень та рядки документації.
- Поясніть види параметрів функцій: позиційні, іменовані, параметри за замовчуванням, *args і **kwargs.
- Чому не слід використовувати змінні об’єкти як значення параметрів за замовчуванням?
- Поясніть області видимості змінних за правилом LEGB та ключові слова global і nonlocal.
- Що таке рекурсія? Які обмеження глибини рекурсії має Python?
- Що таке анотації типів? Поясніть анотації параметрів, значень, що повертаються, та тип None. Як обчислюються анотації у Python 3.14 і чому вони не перевіряють значення під час виконання?
Тема 4. Винятки та налагодження
- Поясніть ієрархію вбудованих винятків Python: BaseException, Exception та їхні нащадки.
- Поясніть роботу блоків try, except, else та finally. Коли у Python 3.14 можна записати кілька типів винятків без дужок і чому для зв’язування через as дужки потрібні?
- Як згенерувати виняток (raise) та створити власний клас винятку? Що таке ланцюжок винятків?
- Що таке групи винятків (ExceptionGroup) і конструкція except*?
- Що таке менеджери контексту та оператор with?
- Які засоби налагодження надає PyCharm? Для чого використовують модулі logging і pdb?
Тема 5. Вбудовані колекції
- Поясніть основні операції зі списками: індексування, зрізи, додавання та видалення елементів, сортування.
- Порівняйте списки та кортежі. Що таке розпакування кортежів?
- Поясніть множини (set, frozenset) та операції над ними.
- Поясніть словники: створення, доступ до елементів, методи get, items, update.
- Що таке генератори списків, множин і словників (comprehensions)?
- Поясніть колекції модуля collections: namedtuple, deque, Counter, defaultdict.
- Порівняйте складність основних операцій зі списками, множинами та словниками.
Тема 6. Рядки та регулярні вирази
- Поясніть основні методи роботи з рядками: пошук, заміна, розбиття, об’єднання.
- Що таке f-рядки? Поясніть форматування чисел і дат у f-рядках.
- Що таке шаблонні рядки (t-strings) Python 3.14 і чим вони відрізняються від f-рядків? Яку відповідальність має обробник текстових підстановок?
- Поясніть кодування рядків, типи str і bytes та перетворення між ними.
- Поясніть основні функції модуля re: match, fullmatch, search, findall, finditer, sub, split. Чому для перевірки всього введення використовують fullmatch?
- Що таке групи та іменовані групи в регулярних виразах? Як скомпілювати регулярний вираз?
Тема 7. Генератори та декоратори
- Що таке ітеровані об’єкти та ітератори? Поясніть протокол ітерації (iter, next).
- Що таке генератори та оператор yield? Порівняйте генератори зі списками.
- Що таке вирази-генератори? Коли їх доцільно використовувати?
- Поясніть корисні функції модуля itertools.
- Що таке лямбда-функції? Поясніть функції map, filter, sorted з параметром key.
- Що таке замикання? Поясніть функції вищого порядку та модуль functools.
- Що таке декоратори? Як створити декоратор із параметрами та зберегти метадані функції (functools.wraps)?
Тема 8. Класи та об’єкти
- Поясніть оголошення класу, створення об’єкта та ініціалізатор __init__.
- Порівняйте атрибути екземпляра та атрибути класу.
- Порівняйте методи екземпляра, методи класу (@classmethod) та статичні методи (@staticmethod).
- Що таке властивості (@property)? Як створити сетер властивості?
- Як реалізується інкапсуляція в Python: угоди про імена з одним і двома символами підкреслення?
- Для чого використовують атрибут __slots__?
Тема 9. Наслідування та протоколи
- Що таке наслідування? Поясніть перевизначення методів і функцію super.
- Що таке множинне наслідування та порядок розв’язання методів (MRO)?
- Що таке поліморфізм і качина типізація в Python?
- Що таке абстрактні класи? Поясніть модуль abc та декоратор @abstractmethod.
- Що таке протоколи (typing.Protocol) і структурна типізація?
- Порівняйте абстрактні класи та протоколи. Коли слід використовувати кожен із них?
- Що таке класи-домішки (mixins)? Порівняйте наслідування та композицію.
Тема 10. Спеціальні методи, dataclass
- Що таке спеціальні методи? Поясніть методи __str__ і __repr__.
- Як перевантажити арифметичні операції та операції порівняння для власного класу?
- Які спеціальні методи реалізують протоколи контейнера (__len__, __getitem__, __contains__, __iter__)?
- Що таке методи __eq__ і __hash__? Як вони пов’язані між собою?
- Що таке класи даних (@dataclass)? Поясніть параметри frozen, order та field.
- Що таке переліки (Enum, IntEnum, StrEnum) та функція auto?
Тема 11. Модулі, файли, pytest
- Що таке модулі та пакети в Python? Поясніть імпорт, файл __init__.py та перевірку __name__.
- Як читати та записувати текстові й двійкові файли? Для чого використовують оператор with?
- Які можливості надає модуль pathlib для роботи з шляхами, файлами та каталогами?
- Як серіалізувати та десеріалізувати дані у форматі JSON за допомогою модуля json?
- Як читати та записувати файли CSV за допомогою модуля csv?
- Як писати модульні тести за допомогою pytest: функції тестів, assert, фікстури, параметризація?
Тема 12. Бази даних, SQL, SQLAlchemy
- Що таке таблиця, первинний ключ і зовнішній ключ у реляційній базі даних?
- Як створити таблицю та виконати операції INSERT, SELECT, UPDATE і DELETE?
- Як виконати параметризований запит через sqlite3 і чому не слід підставляти введені дані в SQL через f-рядок?
- Що таке транзакція? Поясніть commit і rollback.
- Як ORM пов’язує клас Python з таблицею? Поясніть DeclarativeBase, Mapped та
mapped_columnу SQLAlchemy. - Для чого потрібні Engine і Session? Як зберегти об’єкт та прочитати його через select?
Тема 13. NumPy, pandas, Matplotlib
- Чим масив NumPy відрізняється від списку Python? Що означають shape та dtype?
- Що таке векторизовані обчислення? Як виконати поелементні операції над масивами?
- Як знайти мінімум, максимум, середнє та стандартне відхилення даних?
- Що таке Series і DataFrame? Як завантажити CSV та вибрати рядки за умовою?
- Як виявляти пропущені значення та групувати дані засобами pandas?
- Коли доцільні лінійний графік, діаграма розсіювання та стовпчикова діаграма?
- Як створити Figure та Axes у Matplotlib, підписати осі, додати легенду і зберегти графік?
Тема 14. Графічні застосунки PySide6
- Що таке бібліотека PySide6 і фреймворк Qt? Опишіть структуру найпростішого застосунку (QApplication, головне вікно, цикл подій).
- Які основні віджети PySide6 ви знаєте? Поясніть їхні загальні властивості.
- Поясніть менеджери компонування PySide6: QVBoxLayout, QHBoxLayout, QGridLayout, QFormLayout.
- Що таке сигнали та слоти? Як з’єднати сигнал віджета з обробником?
- Як створити головне вікно QMainWindow із меню, панеллю інструментів і рядком стану?
- Як проєктувати інтерфейс у Qt Designer та завантажувати файли .ui у застосунок?
Тема 15. Model/View і бази даних
- Опишіть архітектуру Model/View у Qt: моделі, подання та делегати.
- Як відобразити табличні дані в QTableView за допомогою власної QAbstractTableModel? Чим вона відрізняється від QAbstractListModel?
- Як використовувати стандартні діалогові вікна (QMessageBox, QFileDialog) та створювати власні діалоги (QDialog)?
- Як працювати з базою даних у застосунку PySide6 через модуль QtSql або шар SQLAlchemy?
- Як застосувати QSortFilterProxyModel для сортування й фільтрації? Чому індекс проксі потрібно перетворювати перед зміною вихідної моделі?
- Як перевіряти коректність введених користувачем даних у формах PySide6?
Тема 16. Пакування та типізація
- Як описати проєкт Python у файлі pyproject.toml? Поясніть залежності та точки входу.
- Як зібрати wheel і перевірити його встановлення в чистому середовищі? Чим локальне передавання відрізняється від публікації в реєстрі?
- Як створити виконуваний файл застосунку PySide6 за допомогою PyInstaller?
- Що таке узагальнені типи в Python? Поясніть синтаксис параметрів типу класів і функцій та псевдоніми типів (type).
- Що таке статичний аналіз коду? Як перевіряти типи за допомогою mypy?
- Для чого використовують лінтер і форматувальник Ruff та стандарт оформлення коду PEP 8?