yanatokareva01 / express-test-app

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

express-test-app

Описание

Имеется набор натуральных чисел, лежащих в отрезке [minValue, maxValue]. Всего в наборе initialSetSize чисел. Исходный отрезок [minValue, maxValue] разбивается на countOfParts равных частей. Каждой части соответствует файл data/partXXX.txt, содержащий числа исходного набора, принадлежащие соответствующему отрезку, по одному числу в строке. Числа могут повторяться!

Необходимо реализовать два метода в модуле src/solver.js:

  • getMinimum(left, right) - возвращает минимум среди чисел набора, принадлежащих отрезку [left, right]
  • addNumber(number) - добавляет новое число в набор, причем именно в тот файл, который соответствует отрезку, в который попадает новое число

Добавления происходят очень редко относительно частоты запросов поиска минимума на отрезке.

Например:

  • Набор чисел {1, 15, 23, 48, 56, 78, 88, 99, 100}
  • Количество частей 5
  • Получаем отрезки: [1, 20], [21, 40], [41, 60], [61, 80], [81, 100]
  • И, например содержимое файла data/part1.txt
1
15
  • А содержимое файла data/part5.txt
88
99
100
  • При запросе минимума на отрезке [16, 96] ответ 23
  • При добавлении числа 29 в набор, оно должно содержаться в файле data/part2.txt

Основное внимание будет уделяться:

  • качеству кода
  • подходам к кэшированию
  • обработке ошибок и крайних случаев
  • качеству тестирования

Установка

  • git clone git@github.com:alexchekmenev/express-test-app.git
  • npm i -g yarn
  • yarn install

Запуск

Предпочтительнее использовать WebStorm IDE. Для запуска необходимо выполнить команду: Shift + F10. Для запуска в режиме отладки Shift + F9

Примеры запросов

  • запрос минимума на отрезке [left, right]
curl -X GET \
  'http://localhost:3000/?left=1&right=1000000' \
  -H 'cache-control: no-cache' \
  • запрос добавления нового числа в набор
curl -X POST \
  http://localhost:3000/ \
  -H 'cache-control: no-cache' \
  -H 'content-type: application/json' \
  -d '{
	"number": 1000
}'
  • запрос на пересоздание набора чисел
curl -X DELETE \
  http://localhost:3000/ \
  -H 'cache-control: no-cache' \

Рекомендации по выполнению задания

  • все commit'ы необходимо делать в отдельную ветку (или сделать fork)
  • используйте ES6
  • для тестирования запросов удобно использовать Postman
  • протестировать время ответа сервера в нагрузке можно с использованием Apache Benchmark

Полезные ссылки

About


Languages

Language:JavaScript 100.0%