17 Разработка игрового веб-сервера на Java. ORM. Hibernate. Тестирование. JUnit























Реализовать Database сервис из предыдущего задания через библиотеку Hibernate.

Написать unit тесты для всех сервисов игры. Написать функциональные тесты для проверки взаимодействия фронтенда и сервиса баз данных, фронтенда и игровой механики.


























Тест

Какая аннотация НЕ входит в javax.persistance?
(Отметьте один правильный вариант ответа.)
Вариант 1 @Id
Вариант 2 @NotNull
Вариант 3 @Entity
Вариант 4 @Column

Какой тип тестирования проверяет взаимодействие модулей?
(Отметьте один правильный вариант ответа.)
Вариант 1 Unit тесты
Вариант 2 функциональные тесты
Вариант 3 нагрузочные тесты

Какой тип тестирования проверяет поведение системы при экстремальной нагрузке?
(Отметьте один правильный вариант ответа.)
Вариант 1 Unit тесты
Вариант 2 функциональные тесты
Вариант 3 нагрузочные тесты
Вариант 4 ни один из выше перечисленных

Как получить список аннотаций класса А?
(Отметьте один правильный вариант ответа.)
Вариант 1 A.getAnnotations();
Вариант 2 A.getClass().getAnnotations();
Вариант 3 AnnotatationsHelper.get(A);
Вариант 4 A.class.getAnnotations();

Для записи значения полей объекта вы используете ORM библиотеку. В библиотеке есть метод save(?). Что нужно передать в метод save?
(Отметьте один правильный вариант ответа.)
Вариант 1 объект
Вариант 2 значения полей, и имя таблицы
Вариант 3 значения полей и sql запрос

Что НЕ входит в обязанности QA специалиста?
(Ответ считается верным, если отмечены все правильные варианты ответов.)
Вариант 1 настройка build серверов
Вариант 2 проектирование интерфейсов модулей сервера
Вариант 3 "Вывод" и "слияние" веток в системе контроля версий
Вариант 4 разработка скриптов для автоматизации тестирования
Вариант 5 создание дизайн документа для разработки сервера

Что такое mock-объект?
(Отметьте один правильный вариант ответа.)
Вариант 1 временный объект, созданный в процессе разработки функциональности
Вариант 2 объект, которые имитирует работу одного модуля нужную для проверки другого модуля
Вариант 3 объект, который выполняет функциональность по умолчанию

Метод, проаннотированный @Before, будет запущен:
(Отметьте один правильный вариант ответа.)
Вариант 1 один раз при запуске тестов класса, в котором он написан
Вариант 2 один раз перед стартом всех тестов
Вариант 3 при запуске каждого метода, аннотированного как @Test

Будет ли создана схема в пустой базе при создании SessionFactory?
(Отметьте один правильный вариант ответа.)
Вариант 1 да, если hbm2ddl.auto = update
Вариант 2 нет
Вариант 3 да, если hbm2ddl.auto = validate

Какой тип тестирования проверяет способность системы выдержать требуемую нагрузку?
(Отметьте один правильный вариант ответа.)
Вариант 1 нагрузочные тесты
Вариант 2 Unit тесты
Вариант 3 функциональные тесты

Тест, который проверяет, что два пользователя могут зайти в игру и начать партию в шахматы:
(Отметьте один правильный вариант ответа.)
Вариант 1 функциональные тесты
Вариант 2 Unit тесты
Вариант 3 нагрузочные тесты

Что НЕ входит в enum RetentionPolicy?
(Ответ считается верным, если отмечены все правильные варианты ответов.)
Вариант 1 METHOD
Вариант 2 RUNTIME
Вариант 3 SOURCE
Вариант 4 CLASS
Вариант 5 COMPILE

Как ORM библиотека, реализующая JPA, понимает, какое поле в классе, отвеченном как @Entity, является первичным ключом?
(Отметьте один правильный вариант ответа.)
Вариант 1 поле отмечено как @Id
Вариант 2 поле отмечено как @Column(name=”id”)
Вариант 3 поле имеет имя id

Какой уровень покрытия unit тестами дает существенный прирост надежности и качеству программ?
(Отметьте один правильный вариант ответа.)
Вариант 1 50-60%
Вариант 2 30-40%
Вариант 3 70-80%
Вариант 4 10-20%

Аннотация @Deprecated на методе класса означает:
(Отметьте один правильный вариант ответа.)
Вариант 1 что этот метод нельзя использовать
Вариант 2 что в методе есть ошибка
Вариант 3 что метод устарел и его больше не поддерживают

Тест, который проверяет, что функция сложения при запросе 2+2 вернет 4, это:
(Отметьте один правильный вариант ответа.)
Вариант 1 функциональные тесты
Вариант 2 нагрузочные тесты
Вариант 3 Unit тесты

Аннотацией нельзя отметить:
(Отметьте один правильный вариант ответа.)
Вариант 1 переменную класса
Вариант 2 локальную переменную
Вариант 3 импорт (import) класса
Вариант 4 параметр функции
Вариант 5 метод класса

Тест, который проверяет, что функция деления при запросе 2/0 вернет ArithmeticException, это:
(Отметьте один правильный вариант ответа.)
Вариант 1 нагрузочный тест
Вариант 2 функциональный тест
Вариант 3 Unit тест

Экзамен

private final int a = 1:
(Отметьте один правильный вариант ответа.)
Вариант 1 значение переменной можно задать в конструкторе и после этого нельзя будет изменить
Вариант 2 значение переменной нельзя изменить, оно всегда будет = 1
Вариант 3 значение переменной можно менять только в приватных методах
Вариант 4 значение переменной можно менять только в этом потоке

Может ли удаление аннотации сломать компиляцию кода?
(Отметьте один правильный вариант ответа.)
Вариант 1 нет
Вариант 2 да

Класс А должен быть унаследован от двух абстрактных классов B и C. Это можно сделать:
(Отметьте один правильный вариант ответа.)
Вариант 1 А extends B + C
Вариант 2 A extends B extends C
Вариант 3 A extends B, C
Вариант 4 нельзя наследовать два абстрактных класса

Чтобы задать стартовое значение размера heap равным 64MB в параметрах запуска Java приложения, надо написать:
(Отметьте один правильный вариант ответа.)
Вариант 1 -Xms64
Вариант 2 -Xms64m
Вариант 3 ничего писать не надо, 64MB это значение по умолчанию
Вариант 4 -Xmx64m

У вас есть собственный класс MyClass и контейнер List<MyClass>. Что нужно, чтобы отсортировать контейнер объектов класса MyClass с помощью Collections.sort(...)?
(Отметьте один правильный вариант ответа.)
Вариант 1 унаследовать MyClass от Comparable
Вариант 2 унаследовать MyClass от Iterable
Вариант 3 унаследовать MyClass от Collections
Вариант 4 перегрузить для MyClass операцию сравнения

Согласно схеме зависимостей модулей:
(Ответ считается верным, если отмечены все правильные варианты ответов.)
Вариант 1 Frontend зависит от utils
Вариант 2 base зависит от utils
Вариант 3 base ни от чего не зависит
Вариант 4 main зависит от base

В список основных идей, заложенных в Java входят:
(Ответ считается верным, если отмечены все правильные варианты ответов.)
Вариант 1 компиляция в байт код
Вариант 2 решение математических задач
Вариант 3 кроссплатформенность
Вариант 4 сборщик мусора
Вариант 5 прямое и удобное управление памятью

Какие варианты решения проблемы взаимодействия потоком могут быть расширены на взаимодействие процессов (запущенных на разных компьютерах)?
(Ответ считается верным, если отмечены все правильные варианты ответов.)
Вариант 1 менять состояние общего для потоков объекта
Вариант 2 передавать сообщения через систему обмена сообщениями
Вариант 3 держать в каждом потоке ссылки на все остальные потоки
Вариант 4 передавать сообщения через общий ресурс

В Java можно создать свои классы и свои методы, зависящие от шаблонного типа?
(Отметьте один правильный вариант ответа.)
Вариант 1 нет
Вариант 2 Только методы
Вариант 3 Только классы
Вариант 4 да

Стартовая точка работы любого приложения, написанного на Java:
(Отметьте один правильный вариант ответа.)
Вариант 1 метод void main(String[] args) вне класса (один на приложение)
Вариант 2 метод void main(String[] args) класса Main
Вариант 3 метод void main(String[] args) любого класса

Интерфейс в Java это:
(Ответ считается верным, если отмечены все правильные варианты ответов.)
Вариант 1 класс, который нельзя инстанцировать
Вариант 2 класс, в котором могут быть только статические переменные и список методов
Вариант 3 обязательный для каждого класс, аналог .h файла в С++
Вариант 4 класс, от которого унаследованы все классы в Java

Реплика на Frontend это:
(Отметьте один правильный вариант ответа.)
Вариант 1 сообщение с данными о пользователях на основе которых можно создать страницы с текущим состоянием игры
Вариант 2 сообщения с командами на GM которые посылает Frontend из метода handle(...)
Вариант 3 данные которые DatabaseService пересылает на Frontend после аутентификации пользователя

Временная диаграмма это:
(Отметьте один правильный вариант ответа.)
Вариант 1 диаграмма с описанием взаимодействия потоков или процессов во времени
Вариант 2 диаграмма временных зависимостей классов в иерархии наследования
Вариант 3 диаграмма временных зависимостей модулей приложения

Может ли, согласно диаграмме зависимостей, класс из пакета unils зависеть от класса пакета base?
(Отметьте один правильный вариант ответа.)
Вариант 1 да
Вариант 2 нет
Вариант 3 да, только если у base нет зависимостей от unils

Вы работаете с объектом типа StudentPersonalDatA. Можно ли вызвать у этого объекта метод toString():
(Отметьте один правильный вариант ответа.)
Вариант 1 только если этот метод переопределен в классе StudentPersonalData
Вариант 2 да
Вариант 3 только если этот класс явно унаследован от Object (StudentPersonalData extends Object)

Задачи Game Mechanics:
(Отметьте один правильный вариант ответа.)
Вариант 1 создание потоков новых
Вариант 2 проверка активности пользователя (удаление сессии не активных пользователей)
Вариант 3 аутентификация пользователя по имени
Вариант 4 запросы к базам данных
Вариант 5 передача сообщений
Вариант 6 расчет игровых событий
Вариант 7 создание страницы для пользователя
Вариант 8 обработка (handle(...)) вызовов из Jetty
Вариант 9 работа с файловой системой

Класс Object это:
(Отметьте один правильный вариант ответа.)
Вариант 1 класс, от которого унаследованы все типы в Java
Вариант 2 класс, от которого унаследованы все типы, кроме примитивных
Вариант 3 класс, от которого унаследованы все библиотечные типы

Удалит ли GC объект А, если на этот объект стоит обычная (strong) ссылка с объекта B?
(Отметьте один правильный вариант ответа.)
Вариант 1 да, если по ссылкам нельзя попасть из стека на объект А
Вариант 2 да, если на объект А нет прямых ссылок из стека
Вариант 3 нет

Какие операции атомарные?
(Ответ считается верным, если отмечены все правильные варианты ответов.)
Вариант 1 i++
Вариант 2 чтение из памяти
Вариант 3 a+b
Вариант 4 запись в память
Вариант 5 ++i

(new Date()).getTime() вернет:
(Отметьте один правильный вариант ответа.)
Вариант 1 количество миллисекунд которое прошло с 1.01.1970
Вариант 2 количество секунд которое прошло с 1.01.1970
Вариант 3 количество секунд которое прошло с 1.01.1900
Вариант 4 количество миллисекунд которое прошло с 1.01.1900

Будет ли сериализовано статическое поле?
(Отметьте один правильный вариант ответа.)
Вариант 2 да
Вариант 3 да, если его отметить ключевым словом transient

Отметьте верные утверждения о потоках:
(Ответ считается верным, если отмечены все правильные варианты ответов.)
Вариант 1 каждое запущенное приложение это как минимум один поток
Вариант 2 потоки могут порождать другие потоки и взаимодействовать с ними
Вариант 3 у всех потоков одного приложения общий Stack
Вариант 4 у всех потоков одного приложения общая Heap память
Вариант 5 каждое приложение - это строго один поток
Вариант 6 потоки могут взаимодействовать только через Inter Process Communication ресурсы