Languages

Программирование на языке Kotlin. Романов В.Ю.

Программирование на языке Kotlin. Романов В.Ю.

Вопросы к экзамену 2022 года

  1. Точки входа в программу.
    Переменные только для чтения.
    Выведение типа переменной.
    Изменяемые переменные.
    Переменные (свойства) верхнего уровня.
  2. Функции.
    Вывод типа значения функции.
    Умалчиваемые аргументы функции.
    Именованные аргументы функций.
    Функции с переменным числом параметров.
    Функции-расширения.
    Свойства-расширения для чтения и записи.
    Инфиксные функции.
    Функции-операторы.
  3. Пакеты. Импорты.
    КЛАССЫ.
    Классы данных.
    Классы-перечисления.
    Запечатанные классы.
    Объекты “Одиночки”, Объекты-компаньены, Объекты-выражения.
    Интерфейсы.
  4. Циклы, Оператор in.
    Диапазоны (ranges).
    Использование числовых диапазонов в циклах.
    Использование диапазонов в условном выражении.
    Выбирающее предложение when.
    Условное выражение if.
    ИСКЛЮЧЕНИЯ.
    Порождение исключения.
    Перехват исключения.
    Исключения как выражения.
  5. Перегрузка операторов.
    Унарные префиксные операторы.
    Арифметические операции.
    Операторы сравнений.
    Оператор in.
    Оператор доступа по индексу.
    Оператор вызова.
    Присвоения с накоплением.
  6. Объявление интерфейсов.
    Наследование интерфейсов.
    Реализация интерфейсов.
    Реализация свойств интерфейсов.
  7. Модификаторы класса abstract open final sealed.
    Модификаторы видимости public, internal, protected, private.
    Основной и вторичные конструкторы класса.
    Свойства класса, реализация свойств интерфейсов.
    Свойства с поздней инциализацией.
    Внутренние и вложенные классы.
    Универсальные методы классов.
  8. Иерархия типов языка Kotlin.
    Поддержка значения null.
    Оператор безопасного вызова ?.
    Оператор Элвис ?:
    Проверка на null c помощью оператора !!
    Безопасное приведение типов: оператор as?
    Функция let.
    Свойства с отложенной инициализацией.
    Расширение типов поддерживающих значение null.
    Типы и подтипы, классы и подклассы.
    Изменяемые и неизменяемые коллекции.
  9. Обобщенные типы(Generic).
    Параметризованные типы.
    Параметризованные классы.
    Параметризованные интерфейсы.
    Параметризованные функции.
    Функции с параметризованным получателем.
    Ограничение типовых параметров - класс.
    Ограничение типовых параметров - интерфейс.
    Несколько ограничений типовых параметров.
    Обобщенные типы во время выполнения.
    Проверка и приведение для обобщенных типов.
    Обобщенные типы во встраиваемых функциях во время выполнения.
    Типы и подтипы.
    Вариантность и ковариантность типов (variance).
  10. Анонимная функция в Kotlin.
    Функциональный тип.
    Псевдоним функционального типа.
    Лямбда -выражение.
    Лямбда-выражение для вызова функции.
    Лямбда-выражение как последний параметр функции.
    Лямбда-выражение как ссылка на функцию.
    Лямбда в функциях filter, map, forEach.
    Интерфейсы Iterable и Iterator.
    Функции с предикатами all, any, count и find.
    Группирование элементов коллекции.
  11. Функция, анонимная функция, лямбда.
    Функция-расширение, анонимная функция-расширение, лямбда с получателем.
    Функциональный тип с получателем.
    Лямбда-выражение с получателем.
    Стандартная функция with.
    Стандартная функция apply.
    Стандартная функция let.
    Стандартная функция run.
    Объявление функциональных интерфейсов в Kotlin 1.4
  12. Виды коллекций. Изменяемые и не изменяемые.
    Итераторы и итерирумые.
    Изменяемая коллекция.
    Виды коллекций. List (Список).
    Изменяемый список.
    Виды коллекций. Set (Множество)..
    Виды коллекций. Map (Карта).
    Конструирование множеств.
    Конструирование списков.
    Конструирование карт.
    Итераторы над коллекциями.
  13. Преобразования коллекций. Mapping.
    Преобразования карт. Mapping.
    Преобразования коллекций. Zipping.
    Преобразования коллекций. Association.
    Преобразования коллекций. Flattening.
    Фильтация коллекций. predicate.
    Фильтация коллекций. Partitioning.
    Фильтация коллекций. Testing predicates.
    Операторы + и - для работы с коллекцияами.
    Групирование. groupBy.
    Восстановление частей коллекции. Slice.
    Восстановление частей коллекции. take & drop.
  14. Получение элемента. По позиции.
    Получение случайного элемента.
    Проверка существования элемента.
    Упорядочение коллекции.
    Собственный порядок коллекции.
    Обратный порядок коллекции.
    Случайный порядок коллекции..
    Агрегатные операции. min, sum, average.
    Агрегатные операции. maxBy, maxWith.
    Функции fold и reduce.
    Функции foldIndexed и foldRightIndexed.
    Изменения в коллекции. Добавление.
    Изменения в коллекции. Удаление
  15. Списки. Доступ по индексу.
    Линейный поиск
    Двоичный поиск в сортированных списках.
    Двоичный поиск с компаратором.
    Двоичный поиск с функцией сравнения.
    Добавление и обновление.
    Удаление.
    Сортировка.
  16. Множества. Функции union, intersect и subtract.
    Карты. Получение ключей и значений.
    Фильтрация (1).
    Операции + и -.
    Добавление и обновление.
    Удаление.
  17. Последовательности (Sequence)
    Отличие коллекций и последовательностей.
    Порядок обработки элементов в коллекции.
    Порядок обработки элементов в последовательности.
    Последовательность. Промежуточная и завершающая операции.
    Конструирование последовательностей из элементов и итерируемых.
    Конструирование последовательностей из функций.
  18. Делегирование класса.
    Переопределение члена интерфейса, реализованного делегированием.
    Доступ к реализациям членов интерфейса.
    Делегирование свойств.
    Сигнатура делегата.
    Действия делегата.
    Ленивые свойства.
    Обозреваемые свойства.
    Хранение свойств в ассоциативном списке.
  19. Внутренний DSL
    Синтаксические особености языка Kotlin для создания DSL.
    Функция-расширение.
    Инфиксный вызов функции.
    Перегрузка операторов.
    Соглашение о методе get/set.
    Лямбда -выражение вне круглых скобок.
    Псевдонимы типа.
    Мульти-декларации.
    HTML - построитель.
    JSON - построитель.
  20. Совместное использование языков Kotlin и Java.
    Вызов кода Java из Kotlin.
    Геттеры и сеттеры.
    Экранирование идентификаторов Java.
    Нулевые ссылки из Java.
    Аннотации допустимости null значений.
    Родовые типы Javaв Kotlin.
    Массивы Java в Kotlin.
    Методы Java с переменным числом параметров.
  21. Совместное использование языков Kotlin и Java.
    Вызов кода Kotlin из Java.
    Свойства.
    Функции уровня пакета.
    Смена имени генерируемого Java класса.
    Поля экземпляра
    Статические поля.
    Статические методы.
  22. Kotlin на платформе JavaScript.
    Использование DSL для формирования HTML страницы.
    Взаимодействие программы на Kotlin с Document Object Model(DOM)
    Модификация содержимого, атрибутов и стилей тегов.
    Обработка событий от мыши и клавиатуры.