Задачи | 7 уровень | 6 лекция

Открыта
9
Задача
Java Collections,  7 уровень,  6 лекция
Недоступна
Найти класс по описанию Ӏ Java Collections: 7 уровень, 6 лекция
Метод getExpectedClass должен возвращать класс который: 1. Реализует интерфейс Map. 2. Используется при работе с трэдами. 3. Является неблокирующей версией списка с пропусками, который адаптирован для хеш-таблицы. Про список с пропусками читать в дополнительном материале к этой лекции.
9
Задача
Java Collections,  7 уровень,  6 лекция
Недоступна
Фикс бага
В Вашем большом проекте повсеместно используется метод getExpectedMap. В какой-то момент тестеры обнаружили, что метод getExpectedMap выбрасывает NullPointerException. Ожидаемое поведение описано в комментарии метода main. Найди другую стандартную реализацию интерфейса Map, верни объект этого типа в
9
Задача
Java Collections,  7 уровень,  6 лекция
Недоступна
Ambiguous behavior for NULL
Измени реализацию метода getExpectedMap, он должен вернуть объект такого класса, для которого будет противоположное поведение при добавлении ссылки null. См. пример вывода в методе main. Остальной код не менять.
18
Задача
Java Collections,  7 уровень,  6 лекция
Недоступна
Кеширующий Proxy
Реализация паттерна Proxy предоставляет объект, который контролирует доступ к другому объекту. Тебе необходимо создать класс CachingProxyRetriever в пакете retrievers, который будет обеспечивать ту же функциональность что и класс OriginalRetriever, но с одним важным дополнением. Необходимо всегда п
Комментарии (16)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий вы должны авторизоваться
Павел Минеев41 уровень, Челябинск
16 октября 2019, 16:14
Задачи - детский сад, только в последней пришлось подумать чуть-чуть.
Даниил41 уровень
29 сентября 2019, 21:40
Хорошие задачки, в часности крайняя про паттерн Прокси. Советую осознать разницу между паттернами Proxy и Декоратор, уж больно они похожи, но решают разные проблемы...
Vitaly Khan40 уровень
20 декабря 2019, 00:53
на этом примере мы хорошо видим, что Прокси имеет конструктор идентичный конструктору объекта, которого он подменяет. таким образом происходит незаметная подмена. а Декоратор принимает в конструкторе объект, который оборачивает/дополняет функционалом. в этом явное отличие.
yury41 уровень, Москва
16 сентября 2019, 20:21
Задача "Кеширующий Proxy" оказалась весьма простая и очень полезная (показывает интересный прием как ускорить работу программы). Приступал к решению со скрипом, опасаясь, что веселье растянется на пару вечеров. Сделал за полчаса. Решивших всего 1222 - остальные похоже просто испугались.
Pavlo Buidenkov41 уровень
28 мая, 13:31
теперь: Всего эту задачу решили 1637 учеников. спустя чуть больше пол года
Bahis41 уровень, Manila
30 апреля 2019, 17:27
set... не put..
Andrii Gorshunov41 уровень
14 апреля 2019, 13:01
Условия перемедрулили в последней. Надо получить объект из кеша. Если он null то получить его из originalretrieve и добавить в кеш id, obj . если не null - вернуть его
NodeOne41 уровень
10 февраля 2019, 16:42
Где взять мотивацию на эти задачи((((
Марат Хабибуллин40 уровень, Самара
11 сентября 2017, 18:57
Что не правильно? public class CachingProxyRetriever implements Retriever { private OriginalRetriever originalRetriever; private LRUCache lruCache; public CachingProxyRetriever(Storage storage) { originalRetriever = new OriginalRetriever(storage); lruCache = new LRUCache(10); } @Override public Object retrieve(long id) { if (lruCache.find(id) != null){ return lruCache.find(id); }else { lruCache.set(id,originalRetriever.retrieve(id)); return originalRetriever.retrieve(id); } } }
Paz150640 уровень
29 сентября 2017, 06:21
Попробуйте получить результат originalRetriever.retrieve(id) в переменную типа Object, записать ее в кеш и вернуть. Метод retrieve(id) будет вызван один раз.
Максим40 уровень
7 мая 2018, 21:42
Операция запроса к БД и так дорогостоящая, а ты еще зазря два раза подряд к ней обращаешься. Paz1506 верно советует.
26 мая, 16:45
}else { lruCache.set(id,originalRetriever.retrieve(id)); ?????return originalRetriever.retrieve(id); } попробуй убрать return в блоке else.
KsArT41 уровень, Харьков
11 июля, 13:44
просто всегда возвращать из кеша.
Kirilo Lozitsky40 уровень, Киев
14 августа 2017, 12:53
По Proxy требования неполные: кеш так же должен инициализироваться в конструкторе. Тогда будет виден эффект кеширования.
Дмитрий Кашин38 уровень, Санкт-Петербург
1 октября 2017, 19:54
Я сразу при объявлении инициализировал. Прошло
Юрий V.A.35 уровень
19 января 2019, 20:29
Да, каждый раз при вызове метода новый кеш в таком случае....