игра брюс 2048
Главная / Программирование / Углубленное программирование на Java / Тест 36

Углубленное программирование на Java - тест 36

Упражнение 1:
Номер 1
 Что НЕ верно для Frontend?

Ответ:

 (1) объект, в котором jetty вызывает handle(...) при открытии страниц сервера пользователем 

 (2) метод run() этого объекта запущен в отдельном потоке 

 (3) хранит данные пользовательских сессий 

 (4) может произвести аутентификацию пользователя и найти его id по имени 


Номер 2
 Контейнер, который копирует объекты при вставке:

Ответ:

 (1) ConcurentHashMap 

 (2) ConcurentSkipListMap 

 (3) ConcurentSkipListSet 

 (4) CopyOnWriteArrayList  


Номер 3
 Контейнер с потокобезопасной работой с парами ключ-значение:

Ответ:

 (1) ConcurentHashMap 

 (2) ConcurentSkipListMap 

 (3) ConcurentSkipListSet 

 (4) CopyOnWriteArrayList  


Упражнение 2:
Номер 1
 Контейнер, построенный с использованием списка:

Ответ:

 (1) ConcurentHashMap 

 (2) ConcurentSkipListMap 

 (3) ConcurentSkipListSet 

 (4) CopyOnWriteArrayList  


Номер 2
 ConcurrentHashMap – это карта, в которой все методы synchronized?

Ответ:

 (1) да  

 (2) нет 


Номер 3
 Нужно ли при отправке ответного сообщения обращаться к AddressService?

Ответ:

 (1) да  

 (2) нет, обратный адрес есть в самом сообщении в поле from 


Упражнение 3:
Номер 1
 Нужно ли помечать thread-local объекты словом volatile?

Ответ:

 (1) да  

 (2) нет 


Номер 2
 Класс Msg:

Ответ:

 (1) абстрактный класс - предок всех сообщений 

 (2) интерфейс, который должны реализовывать все сообщения  

 (3) инстанцируемый класс, содержащий данные сообщения 


Номер 3
 Проверка на abonent instanceof в наследниках класса Msg нужна:

Ответ:

 (1) для того, чтобы убедиться, что сообщение пришло адресату нужного типа 

 (2) для проверки правильности адреса 

 (3) для формирования ответного сообщения 

 (4) для вызова метода exec с параметром нужного типа 


Упражнение 4:
Номер 1
 Нужно ли опередить private Map<Address, ConcurrentLinkedQueue<Msg>> messages через ConcurrentHashMap?

Ответ:

 (1) да, потому что нам нужен доступ к этому объекту из нескольких потоков 

 (2) нет, потому что мы не добавляем в процессе работы сервера новые абоненты в карту, а чтение безопасно из нескольких потоков 


Номер 2
 Временная диаграмма это: 

Ответ:

 (1) диаграмма с описанием взаимодействия потоков или процессов во времени 

 (2) диаграмма временных зависимостей классов в иерархии наследования 

 (3) диаграмма временных зависимостей модулей приложения 


Номер 3
 Объект UserSession при повторном логине пользователя из другого браузера:

Ответ:

 (1) новый 

 (2) тот же что и при первом логине 

 (3) объекты будут разные, но userSessionId в них будет одинаковым 


Упражнение 5:
Номер 1
 Что НЕ верно для AccountService?

Ответ:

 (1) объект, в котором jetty вызывает handle(...) при открытии страниц сервера пользователем 

 (2) метод run() этого объекта запущен в отдельном потоке 

 (3) хранит id пользовательских сессий 

 (4) может произвести аутентификацию пользователя и найти его id по имени 


Номер 2
 В плюсы многопоточного решения для аутентификации пользователя НЕ входит:

Ответ:

 (1) масштабирование (возможность создать несколько AccountService) 

 (2) малое время ожидание ответа пользователем 

 (3) синхронное взаимодействие Frontend и AccountService 

 (4) эффективное использование потоков библиотеки jetty 

 (5) возможность независимой коллективной разработки 


Номер 3
 Какие варианты решения проблемы взаимодействия потоков могут быть расширены на взаимодействие процессов (запущенных на разных компьютерах)?

Ответ:

 (1) держать в каждом потоке ссылки на все остальные потоки  

 (2) менять состояние общего для потоков объекта  

 (3) передавать сообщения через общий ресурс  

 (4) передавать сообщения через систему обмена сообщениями 


Упражнение 6:
Номер 1
 ConcurrentLinkedQueue:

Ответ:

 (1) потокобезопасный контейнер пар ключ-значение 

 (2) потокобезопасная очередь 

 (3) контейнер, который копирует объекты при вставке 


Номер 2
 Выполнение инструкций сообщения происходит:

Ответ:

 (1) в потоке отправителя 

 (2) в потоке получателя 

 (3) в дополнительном потоке  


Упражнение 7:
Номер 1
 Класс Address при реализации системы сообщения нужен:

Ответ:

 (1) для того, чтобы идентифицировать получателя и отправителя сообщения 

 (2) для того, чтобы создать карту, в которой ключ это адрес, а значение - очередь C сообщений для получателя с этим адресом 

 (3) для того, чтобы передавать адрес пользователя в браузер 

 (4) для того, чтобы хранить адрес пользователя в AccountService  


Номер 2
 Нужно ли использовать при объявлении private Map<Address, ConcurrentLinkedQueue<Msg>> messages  в классе MessageSsytem ключевое слово volatile?

Ответ:

 (1) да, потому что нам нужен доступ к этому объекту из нескольких потоков 

 (2) нет, потому что заполнение карты происходит до старта потоков в методе main() 




Главная / Программирование / Углубленное программирование на Java / Тест 36