Skip to content

dimon8829/levelup

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Тестовое задание на позицию Sr Java Developer

Необходимо разработать RESTful веб-сервис с использованием Spring Boot для воображаемой компании из сферы разработки онлайн-игр. Сервис хранит в in-memory структуре внутри JVM данные о набранных на текущем уровне очках опыта (поле exp, тип int) и уровне (поле level, тип int) пользовательских персонажей. Персонаж идентифицируется целым 32-битным числом больше нуля.

Сервис должен обслуживать такие запросы:

  1. Добавить указанное количество очков опыта указанному персонажу, и вернуть уровень персонажа и количество очков опыта набранных на текущем уровне после обновления. Если очков опыта набрано больше или равно необходимому для перехода на следующий уровень, то уровень увеличивается на 1, а очки опыта уменьшаются на количество очков необходимых для перехода.
  2. Для указанного персонажа вернуть уровень и количество очков опыта набранных на текущем уровне

Ответы ожидаются в формате JSON.

Персонаж создается с level=1, exp=0. Конфигурация того сколько опыта нужно набрать чтобы перейти на следующий уровень читается из отдельного файла конфигурации (формат можно выбирать самостоятельно) при запуске сервиса. После запуска сервиса конфигурация не обновляется. Конфигурация представляет из себя Map<Integer, Integer>. Product owner в качестве примера конфигурации предоставил такую таблицу, и добавил что количество уровней и необходимый опыт для перехода на следующий уровень в реальной конфигурации могут отличаться.

Уровень | Нужно опыта для levelup

1+ | 100 10+ | 110 20+ | 120 30+ | 150 40+ | 190 50+ | 240 60+ | 300 70+ | 370 80+ | 450 90+ | 540 100 | -

Мы не хотим заставлять product owner-а заполнять промежуточные уровни, поэтому в конфигурации должно быть сравнимое с таблицей количество записей. Мы также не можем быть уверены что product owner в процессе последующих правок не наделает ошибок в конфигурации, поэтому неплохо бы иметь от этого защиту в виде завершения процесса в случае невалидной конфигурации. Невалидной конфигурацией можно считать такую, где levelup exp <= 0 (кроме последнего уровня) или если нам в этой конфигурации не хватает информации для полноценной работы.

Дополнительные вводные данные:

  1. Мы предполагаем что у нас идеальная сеть без обрывов соединений
  2. Предполагаемый уровень нагрузки на сервис очень высокий, запросы на добавление опыта одному и тому же персонажу могут приходить одновременно
  3. У заказчика высокие требования к качеству. Сделать нужно настолько качественно насколько можете.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages