Languages

Вопросы к экзамену по курсу Романова В.Ю. "Язык программирования Java"

К экзамену 2019 года

  1. Классы языка Java и их синтаксис. Члены класса. Статические члены класса. Поля и методы класса. Главный метод приложения. Конструкторы класса. Цепочки конструкторов. Блоки инициализации. Статические поля и методы классов. Инициализация статических полей класса.
  2. Пакеты классов и интерфейсов. Импорт классов и интерфейсов из других пакетов. Разновидности видимости классов и интерфейсов. Соглашения об именовании пакетов, классов, директорий и файлов при программировании на Java.
  3. Наследование полей и методов классов в языке Java. Перекрытие наследуемых методов. Использование конструкторов наследуемых классов. Разновидности видимости членов классов. Полиморфизм. Абстрактные классы. Конечные (final) классы.
  4. Вложенность классов. Статические вложенные и внутренние классы. Доступ к статическим вложенным классам. Внутренние классы. Доступ к внутренним классам. Внутренние локальные классы. Внутренние анонимные классы.
  5. Интерфейсы языка Java. Типизация и интерфейсы. Члены интерфейсов языка Java. Наследование интерфейсов. Реализация интерфейсов классами. Назначение и использование интерфейсов при программировании на языке Java.
  6. Типы-перечисления. Поля и методы типов-перечислений. Аннотации. Объявление типа аннотации и его использование. Аннотации для компилятора.
  7. Исключения (exceptions) в языке Java. Порождение и перехват исключений. Список исключений в объявлении метода. Источники исключений. Иерархия исключений. Приоритеты при обработке исключений. Уведомления (assert) в языке Java. Использование исключений и уведомлений при программировании на Java.
  8. Стандартная библиотека коллекций языка Java. Интерфейсы, реализации и алгоритмы коллекций. Структура библиотеки коллекций. Коллекции, множества и списки. Использование реализаций интерфейсов коллекций. Карты (maps) в библиотеке коллекций. Использование различных реализаций карт. Итераторы карт и коллекций. Стандартные алгоритмы библиотеки для работы с коллекциями и массивами.
  9. Методы рефакторинга для преобразования структуры программы на языке Java. Рефакторинг типов. Рефакторинг иерархии наследования. Перемещение методов по иерархии наследования и между классами. Использование среды Eclipse для рефакторинга программы на языке Java.
  10. Родовые типы в языке Java. Назначение родовых типов. Не ковариантность родовых типов. Родовой тип wildcard. Родовые методы. Ограниченные родовые типы.
  11. Потоки байтового вывода языка Java. Назначение и возможности классов OutputStream, ByteArrayOutputStream, FileOutputStream, PipedOutputStream, FilterOutputStream, BufferedOutputStream, DataOutputStream, PrintStream. Потоки символьного вывода языка Java.
  12. Потоки ввода языка Java. Назначение и возможности классов InputStream, ByteArrayInputStream, FileInputStream, PipedInputStream, FilterInputStream, BufferedInputStream, DataInputStream. Потоки символьного ввода языка Java. Чтение данных из потока с помощью класса Scanner.
  13. Java DataBase Connectivity (JDBC) - стандарт взаимодействия Java-приложений с различными СУБД. Подключение драйверов СУБД. Выполнение SQL команд. Управление транзакциями. Использование JDBC для извлечения информации о структуре (метаданных) базы данных. Визуализация структуры базы данных.
  14. Интернационализация программ в языке Java. Файлы текстовых ресурсов. Выбор языка пользователя для выдачи текстовых сообщений.
  15. Лямбда выражения в языке Java8. Замена анонимных классов лямбда выражениями. Функциональные интерфейсы. Синтаксис Lambda-выражений. Примеры функциональных интерфейсов из пакета java.util.function.
  16. Потоки в языке Java8. Определение потоков. Отличие операций потоков от операций коллекций. Обработка данных потока в конвейере. Методы для порождения потоков. Методы для преобразования потоков в конвейере. Преобразования в конце конвейера.
  17. Модули в Java 9. Назначение модулей. Синтаксис описания модулей. Зависимость от модулей. Экспорт пакетов модуля. Открытость модуля.
  18. Механизм Reflection языка Java. Получение класса объекта в оперативной памяти. Получение класса объекта с использованием URL. Метаданные для классов. Метаданные для примитивов и массивов. Использование конструкторов класса для загрузки драйверов. Вызов методов. Доступ к полям.
  19. Назначение библиотеки Standard Widget Toolkit. Основные классы библиотеки. Класс Display. Класс Shell. Класс Composite. Класс Control. Цикл событий (event loop).
  20. Пакеты библиотеки Standard Widget Toolkit. Класс SWT. Иерархия управляющих элементов. Конструкторы и стили управляющих элементов.
  21. Класс Widget библиотеки Standard Widget Toolkit. Освобождение ресурсов графики и управляющих элементов. Класс Control. Конструктор, стили, события, характерные методы класса Control.
  22. Класс Shell. Конструктор, стили, события, характерные методы класса Shell. Класс Composite. Конструктор, стили, события, характерные методы класса Composite. Класс Canvas. Конструктор, стили, события, характерные методы класса Canvas.
  23. Структурирование интерфейса пользователя с помощью классов TabFolder и TabItem. Конструктор, стили, события, характерные методы классов TabFolder и TabItem.
  24. Рисование графических элементов с помощью класса Graphics Context (GC) библиотеки Standard Widget Toolkit. Рисование линий, фигур, изображений графических файлов, курсоров. Задание их атрибутов представления на экране.
  25. Обработка событий в библиотеке Standard Widget Toolkit. Интерфейс обработчика события PaintListener для перерисовки изображений на экране.
  26. Интерфейс обработчика клавиатуры мыши MouseListener, вращения колеса MouseWheelListener, перемещения мыши MouseMoveListener.
  27. Списки библиотеки SWT в интерфейсе пользователя. Инициализация списков. Слушатели событий. Определение выбранного элемента списка.
  28. Кнопки библиотеки SWT в интерфейсе пользователя. Радио-кнопки. Инициализация кнопок. Слушатели событий. Определение выбора пользователя.