Українська
Контрольні питання
Питання для самоперевірки та підготовки до іспиту, згруповані за темами курсу.
Тема 1. Java і перша програма
- Що таке платформа Java? Поясніть призначення JVM, JRE та JDK.
- Поясніть процес компіляції та виконання програми мовою Java: байт-код, завантажувач класів, JIT-компіляція.
- Опишіть структуру програми мовою Java: клас, метод main, пакети, імпорт.
- Як створити, запустити та налагодити проєкт Java в IntelliJ IDEA? Які інструменти JDK (javac, java, jshell) ви знаєте?
- Що таке система керування версіями Git? Поясніть поняття репозиторію, коміту, гілки та основні команди Git.
- Як працювати з репозиторієм Git в IntelliJ IDEA? Які файли проєкту Java слід додавати до .gitignore?
Тема 2. Типи, операції, керування
- Які примітивні типи даних має мова Java? Наведіть їхні розміри та діапазони значень.
- Порівняйте примітивні та посилальні типи. Що таке класи-обгортки, автоупакування та авторозпакування?
- Поясніть неявне та явне перетворення типів і виведення типу локальної змінної (var).
- Які операції підтримує мова Java? Поясніть пріоритет операцій та цілочисельне ділення.
- Як виконувати консольне введення за допомогою класу Scanner та форматоване виведення за допомогою printf?
- Опишіть керувальні конструкції Java: if, оператор і вираз switch, цикли for, while, do-while та for-each.
Тема 3. Методи, масиви, рядки
- Поясніть оголошення методів, передавання параметрів за значенням та перевантаження методів.
- Що таке методи зі змінною кількістю аргументів (varargs) та рекурсивні методи?
- Як оголосити, створити та ініціалізувати одновимірні й багатовимірні масиви? Які методи надає клас Arrays?
- Чому об’єкти класу String незмінні? Що таке пул рядків і як правильно порівнювати рядки?
- Порівняйте класи String, StringBuilder та StringBuffer.
- Що таке текстові блоки та методи форматування рядків (formatted, String.format)?
Тема 4. Винятки та налагодження
- Опишіть ієрархію винятків Java: Throwable, Error, Exception, RuntimeException.
- Порівняйте перевірювані (checked) та неперевірювані (unchecked) винятки.
- Поясніть роботу блоків try, catch, finally та багатоблочний catch.
- Що таке конструкція try-with-resources та інтерфейс AutoCloseable?
- Як створити власний клас винятку? Що таке ланцюжок винятків?
- Які засоби налагодження надає IntelliJ IDEA: точки зупинки, покрокове виконання, обчислення виразів?
Тема 5. Класи та об’єкти
- Що таке клас і об’єкт? Як створюється об’єкт і де він розміщується в пам’яті?
- Поясніть конструктори, їх перевантаження та виклик this(…).
- Що таке інкапсуляція? Поясніть модифікатори доступу public, protected, private та доступ у межах пакета.
- Що таке статичні поля, методи та блоки ініціалізації? Для чого використовують ключове слово final?
- Що таке пакети в Java? Як вони пов’язані зі структурою каталогів проєкту?
- Як працює збирач сміття в JVM? Що таке недосяжні об’єкти?
- Що таке незмінні (immutable) класи і як їх створювати?
Тема 6. Наслідування та поліморфізм
- Що таке наслідування? Поясніть ключові слова extends і super.
- Що таке поліморфізм? Поясніть перевизначення методів та анотацію @Override.
- Порівняйте перевантаження та перевизначення методів.
- Які методи визначає клас Object? Навіщо перевизначати equals, hashCode і toString?
- Поясніть висхідне та низхідне перетворення типів і операцію instanceof.
- Для чого використовують final-класи та final-методи?
Тема 7. Абстрактні класи, інтерфейси
- Що таке абстрактний клас і абстрактний метод?
- Що таке інтерфейс? Поясніть методи за замовчуванням, статичні та приватні методи інтерфейсів.
- Порівняйте абстрактні класи та інтерфейси. Коли слід використовувати кожен із них?
- Поясніть види вкладених класів: статичні вкладені, внутрішні, локальні та анонімні.
- Для чого використовують анонімні класи? Порівняйте їх із лямбда-виразами.
- Поясніть стандартні інтерфейси Comparable та Comparator.
Тема 8. Записи, enum і sealed-класи
- Що таке записи (records)? Які методи компілятор генерує для запису автоматично?
- Що таке переліки (enum)? Як додати до переліку поля, конструктори та методи?
- Що таке запечатані (sealed) класи та інтерфейси? Поясніть ключові слова permits та non-sealed.
- Поясніть зіставлення зі зразком для instanceof та в конструкції switch.
- Що таке шаблони записів (record patterns) і деконструкція записів?
- Як запечатані ієрархії допомагають перевіряти повноту розгалужень switch?
Тема 9. Узагальнення (generics)
- Що таке узагальнення (generics)? Які переваги дають узагальнені класи та методи?
- Поясніть оголошення узагальнених класів, інтерфейсів і методів.
- Що таке обмежені параметри типу (extends)?
- Поясніть символи підстановки ?, ? extends T і ? super T та принцип PECS.
- Що таке стирання типів (type erasure)? Які обмеження воно накладає на узагальнення?
- Що таке «сирі» типи (raw types) і чому їх слід уникати?
Тема 10. Колекції
- Опишіть ієрархію інтерфейсів Java Collections Framework: Collection, List, Set, Queue, Map.
- Порівняйте реалізації списків ArrayList та LinkedList.
- Порівняйте реалізації множин HashSet, LinkedHashSet і TreeSet.
- Порівняйте реалізації словників HashMap, LinkedHashMap і TreeMap. Як працює HashMap?
- Поясніть черги та деки: Queue, Deque, ArrayDeque, PriorityQueue.
- Як обходити колекції за допомогою ітератора та циклу for-each? Що таке ConcurrentModificationException?
- Порівняйте незмінні колекції (List.of, Map.of) та змінні колекції. Які методи надає клас Collections?
Тема 11. Лямбди та Stream API
- Що таке лямбда-вирази? Поясніть їхній синтаксис і захоплення змінних.
- Що таке функціональні інтерфейси? Поясніть інтерфейси Function, Predicate, Consumer і Supplier.
- Що таке посилання на методи? Наведіть приклади їх видів.
- Що таке Stream API? Порівняйте проміжні та термінальні операції потоків.
- Поясніть операції потоків filter, map, flatMap, sorted, reduce та collect.
- Як групувати та агрегувати дані за допомогою класу Collectors (groupingBy, joining, toMap)?
- Що таке клас Optional і для чого його використовують?
Тема 12. Файли, NIO.2, серіалізація
- Порівняйте байтові та символьні потоки введення-виведення Java.
- Як читати та записувати текстові файли за допомогою BufferedReader і BufferedWriter?
- Які можливості надає NIO.2: класи Path, Paths і Files?
- Як переглядати вміст каталогів та обробляти файли за допомогою методів Files.walk і Files.lines?
- Що таке серіалізація об’єктів? Поясніть інтерфейс Serializable та ключове слово transient.
- Які ризики безпеки має стандартна серіалізація Java? Які альтернативні формати серіалізації (JSON) ви знаєте?
Тема 13. Модулі, Maven, Gradle, JUnit
- Що таке модульна система Java (JPMS)? Поясніть файл module-info.java, директиви requires та exports.
- Що таке система збирання Maven? Поясніть файл pom.xml, залежності та життєвий цикл збирання.
- Що таке система збирання Gradle? Порівняйте Gradle і Maven.
- Що таке модульне тестування? Поясніть анотації JUnit 6 (@Test, @BeforeEach, @ParameterizedTest).
- Поясніть методи класу Assertions та перевірку винятків у тестах JUnit.
- Як запускати тести в IntelliJ IDEA та з Maven або Gradle? Що таке покриття коду тестами?
Тема 14. Бази даних і JDBC
- Поясніть основні поняття реляційних баз даних та мови SQL: таблиці, ключі, зв’язки, оператори SELECT, INSERT, UPDATE, DELETE.
- Як створити базу даних PostgreSQL та працювати з нею в JetBrains DataGrip?
- Що таке JDBC? Опишіть інтерфейси Connection, Statement, PreparedStatement і ResultSet.
- Як підключити драйвер PostgreSQL JDBC до проєкту та встановити з’єднання з базою даних?
- Чому слід використовувати PreparedStatement? Як він захищає від SQL-ін’єкцій?
- Як виконувати транзакції в JDBC (setAutoCommit, commit, rollback)?
- Що таке пул з’єднань? Як реалізувати шаблон DAO для доступу до даних?
Тема 15. Графічні застосунки JavaFX
- Опишіть архітектуру застосунку JavaFX: класи Application, Stage і Scene, граф сцени.
- Які основні елементи керування JavaFX ви знаєте? Поясніть їхні загальні властивості.
- Поясніть панелі компонування JavaFX: VBox, HBox, BorderPane, GridPane, StackPane.
- Як обробляти події в JavaFX? Поясніть обробники подій та лямбда-вирази.
- Що таке FXML та Scene Builder? Як зв’язати FXML-розмітку з класом контролера?
- Як оформлювати інтерфейс JavaFX за допомогою CSS?
Тема 16. MVC і прив’язка даних
- Опишіть архітектуру MVC та її реалізацію в застосунках JavaFX.
- Що таке властивості JavaFX (Property)? Поясніть односторонню та двосторонню прив’язку даних.
- Що таке ObservableList? Як відображати дані в елементах TableView і ListView?
- Як виконувати тривалі операції у фоновому потоці за допомогою Task, не блокуючи інтерфейс JavaFX?
- Як організувати доступ до бази даних із застосунку JavaFX через шар DAO?
- Як зібрати та розповсюдити застосунок JavaFX (jlink, jpackage)?