Количество баллов N вычисляется следующим образом:
N = 45 + T + P + L, где
- T — количество правильных ответов на вопросы по теории: 1 вопрос = 1 балл (максимум 10 баллов)
- P — количество выполненных заданий по практике: 1 задание = 5 балл (максимум 15 баллов)
- L — количество заданий лабораторных работ, уже сданных в течение семестра до экзамена: 1 задание = 1 балл
- Получить номер билета — это номер задания (практики) и номер темы (теории), которые необходимо сдать
- Подготовиться (45 минут)
- Сдать практику (в форме собеседования)
- Сдать теорию (в форме собеседования)
Билет включает один вариант задания из списка ниже
- Определить принадлежит ли одна последовательность чисел другой последовательности
- Найти произведение двух матриц
- Возвести матрицу в степень
- Найти максимум среди сумм элементов диагоналей квадратной матрицы, параллельных главной диагонали
- Найти максимум среди произведений элементов диагоналей квадратной матрицы, параллельных главной диагонали
- Найти максимум среди средних значений элементов диагоналей квадратной матрицы, параллельных главной диагонали
- Найти минимум среди сумм элементов диагоналей квадратной матрицы, параллельных побочной диагонали
- Найти минимум среди произведений элементов диагоналей квадратной матрицы, параллельных побочной диагонали
- Найти минимум среди средних значений элементов диагоналей квадратной матрицы, параллельных побочной диагонали
- Упорядочить строки матрицы по суммам их элементов
- Упорядочить строки матрицы по произведениям их элементов
- Упорядочить строки матрицы по средним значениям их элементов
- Упорядочить столбцы матрицы по суммам их элементов
- Упорядочить столбцы матрицы по произведениям их элементов
- Упорядочить столбцы матрицы по средним значениям их элементов
- Вычислить количество отрицательных и положительных чисел в многомерном массиве чисел
- Найти наибольший общий делитель для последовательности чисел
Обязательные требования:
- Разработанное приложение должно обеспечивать ввод некоторых пользовательских параметров из командной строки и вывод результатов в командную строку
Порядок сдачи задания:
- Объяснить исходный код классов (понимать синтаксис и поток исполнения)
- Собрать и запустить приложение
- Продемонстрировать работу приложения
Билет включает один вариант задания из списка ниже
- Упорядочить лексемы в строке лексикографически
- Упорядочить лексемы в строке по длине
- Упорядочить лексемы в строке по их встречаемости
- Найти в строке лексему, встречающуюся наибольшее количество раз
- Найти в строке лексему, которая включает заданный символ наибольшее количество раз
- Найти в сроке лексему с наибольшим количеством согласных звуков
- Выбрать из строки все лексемы, являющиеся палиндромами
- Выбрать из строки все подстроки, заключенные внутри пар двойных кавычек с учетом экранирования
- Заменить в текстовом файле все вхождения одной строки на другую строку
- Извлечь все лексемы из текстового файла и записать их в виде списка в другой текстовый файл
- Извлечь сигнатуры методов и конструкторов из файла с исходным кодом Java
- Извлечь поля и значения инициализации из файла с исходным кодом Java
- Сравнить два заданных текстовых файла и разницу в третий текстовый файл
- Сравнить структуру двух заданных директорий и записать разницу в текстовый файл
- Найти все текстовые файлы, содержащие заданную строку, в заданной директории
- Сформировать список файлов заданной директории (включая поддиректории) и записать результат в текстовый файл
- Изменить расширение всех файлов в заданной директории (включая поддиректории) по заданному шаблону
Обязательные требования:
- Разработанное приложение должно обеспечивать ввод некоторых пользовательских параметров из командной строки и вывод результатов в командную строку
Порядок сдачи задания:
- Объяснить исходный код классов (понимать синтаксис и поток исполнения)
- Собрать и запустить приложение
- Продемонстрировать работу приложения
Билет включает общее задание
Разработать классы, представляющие взаимосвязанные сущности некоторого предмета, который вы определяете самостоятельно
Примеры предметов моделирования
Последовательность выполнения задания:
- Предложить предмет моделирования --- несколько взаимосвязанных сущностей
- Создать UML диаграмму классов, представляющих сущности предметной модели
- Разработать классы, реализующие сущности предметной модели
- Разработать демонстрационное приложение (создает и использует объекты этих классов)
Обязательные требования:
- Предметная модель должна включать по крайней мере 3 связанных между собой сущности
- Каждая сущность должна быть реализована одним открытым классом верхнего уровня
- Каждый сущностный класс должен включать поля, методы и конструкторы
- Каждое поле должно быть закрытым и сопровождаться парой методов (геттером и сеттером)
- По крайней мере в одном из классов должна быть реализована перегрузка методов или конструкторов
- По крайней мере один из классов должен наследовать другой класс с переопределением его методов
- По крайней мере один из классов должен включать статические поля или методы
- По крайней мере один из классов должен переопределять методы
toString
,equals
иhashCode
Порядок сдачи задания:
- Объяснить UML диаграмму классов предметной модели (понимать отношения наследования, ассоциации, агрегации, композиции, зависимости)
- Объяснить исходный код классов, реализующие сущности предметной модели (понимать синтаксис, конструкции, реализацию в коде принципов инкапсуляции, наследования, полиморфизма)
- Собрать и запустить демонстрационное приложение
Билет включает одну тему из списка ниже. Каждая тема содержит 10 и более вопросов, необходимо дать ответы на заданные вопросы по теме билета.
- Платформа разработки и среда исполнения
- Байт-код и JIT компиляция
- Разделители и лексемы
- Комментарии (строчные, блочные, doc)
- Блоки кода
- Переменные (объявление и инициализация)
- Main-метод
- Аргументы командной строки
- Вывод в командную строку
- Ввод символов с командной строки
- Простые типы данных и литералы
- Завершенные переменные
- Область действия локальной переменной
- Арифметические операторы и укороченные операторы присваивания
- Операторы сравнения
- Логические операторы
- Операторы присваивания
- Побитовые операторы
- Тернарный оператор
- Приведение простых типов данных
- Условная инструкция
if
- Ветвление
else if
- Множественное ветвление
switch
- Цикл
for
- Цикл
while
- Цикл
do-while
- Инструкция
break
- Инструкция
break
по метке - Инструкция
continue
- Рекурсия
- Класс (определение)
- Объявление класса
- Поля (объявление и инициализация)
- Скрытие полей (ключевое слово
this
) - Инициализаторы
- Создание объектов
- Объектные ссылки, null литерал и сборка мусора
- Обращение к полям экземпляра класса
- Вызов методов экземпляра класса
- Проверка равенства двух объектов (оператор сравнения == и метод
equals()
)
- Методы (объявление и реализация)
- Возвращаемый тип данных и инструкция
return
- Передача аргументов в метод
- Разница между передачей аргументов по значению и по ссылки
- Переменное число аргументов
- Перегрузка методов
- Конструкторы (объявление и реализация)
- Конструктор по умолчанию
- Перегрузка конструкторов
- Вызов перегруженного конструктора (ключевое слово
this
)
- Инкапсуляция
- Открытый и закрытый уровень доступа
- Статические поля
- Глобальные константы
- Внутренние классы
- Локальные классы
- Анонимные классы
- Статические методы
- Статические инициализаторы
- Разница между нестатическим и статическим контекстом
- Массив (определение)
- Объявление массивов
- Альтернативный синтаксис объявления массива
- Обращение к элементам массива
- Многомерные массивы
- Нерегулярные массивы
- Статическая инициализация массива
- Перебор элементов и длина массива
- Цикл
for-each
- Манипулирование массивами с помощью класса
Arrays
- Кодировка символов
- Неизменяемые строки типа
String
- Перебор символов и длина строки
- Методы обработки строк
- Конкатенация строк
- Токенизация строк
- Форматирование строк
- Метод
toString()
- Преобразование строк в числа
- Изменяемые строки типа
StringBuffer
иStringBuilder
- Наследование классов
- Разница между одиночным и множественным наследованием
- Вызов конструктора суперкласса
- Скрытие полей суперкласса (ключевое слово
super
) - Полиморфизм
- Переопределение методов
- Завершенные методы
- Завершенные классы
- Абстрактные методы
- Абстрактные классы
- Интерфейсы (определение)
- Наследование интерфейсов
- Реализация интерфейсов
- Методы по умолчанию интерфейса
- Закрытые методы интерфейса
- Статистические методы интерфейса
- Статистические поля интерфейса
- Функциональные интерфейсы
- Использование ссылочного типа, определяемого интерфейсом
- Разница между интерфейсом и абстрактным классом
- Пакеты (определение, пространства имен)
- Пакетный (по умолчанию) и защищённый уровень доступа
- Импорт пакетов и классов
- Статический импорт
- Перечисления
- Создание перечислений с конструкторами, полями и методами
- Объектные оболочки простых типов
- Автоупаковка и автораспаковка
- Класс
Object
- Методы
equals()
иhashCode()
- Обобщенные классы
- Ограниченные параметры типов
- Аргументы типов
- Шаблоны аргументов
- Ограниченные шаблоны аргументов
- Обобщенные методы
- Обобщенные конструкторы
- Обобщенные интерфейсы
- Использование базовых типов
- Исключение ошибок неоднозначности
- Коллекции
- Списки (динамический массив, связный список)
- Упорядоченное множество
- Очередь
- Двусторонняя очередь
- Стек
- Дерево
- Отображение
- Итераторы
- Компараторы
- Исключения (определение)
- Инструкции
try
иcatch
- Множественные инструкции
catch
- Перехват исключений подклассов
- Вложенные блоки
try
- Генерирование исключений
- Блок
finally
- Передача исключений (ключевое слово
throws
) - Встроенные классы исключений
- Создание классов исключений
- Потоки ввода-вывода
- Байтовые потоки
- Символьные потоки
- Ввод-вывод с командной строкой
- Сканнеры типа
Scanner
- Файловый ввод-вывод
- Закрытие ресурсов в блоке
finally
- Автоматическое закрытие ресурсов (инструкция
try
с ресурсами) - Произвольный доступ к файлам
- Объектный ввод-вывод
- Многопоточная обработка
- Класс
Thread
- Интерфейс
Runnable
- Создание и запуск нескольких потоков
- Определение момента завершения потока
- Приоритезация потоков
- Синхронизация потоков
- Использование синхронизированных методов
- Использование синхронизированных блоков кода
- Приостановка, возобновление и остановка потоков
- Лямбда-выражения (определение)
- Функциональные интерфейсы
- Одиночные лямбда-выражения
- Блочные лямбда-выражения
- Использование обобщенных функциональных интерфейсов
- Захват переменных в лямбда-выражениях
- Генерация исключений в лямбда-выражениях
- Ссылки на методы
- Ссылки на конструкторы
- Встроенные функциональные интерфейсы