Skip to content

stalin-777/test-apiq

Folders and files

NameName
Last commit message
Last commit date

Latest commit

DmitryDmitry
Dmitry
and
Dmitry
Oct 21, 2021
c67286a · Oct 21, 2021

History

2 Commits
Oct 16, 2021
Oct 21, 2021
Oct 21, 2021
Oct 16, 2021
Oct 16, 2021
Oct 16, 2021
Oct 16, 2021
Oct 16, 2021
Oct 21, 2021
Oct 21, 2021
Oct 16, 2021

Repository files navigation

arithmetic-progression-in-queue

Задача:

Тестовое задание на Backend-разработчика на Go

Написать сервис, который считает арифметическую прогрессию в очереди. Задачи поступают в очередь, из очереди поступют на выполнение, выполняются до получения результата, после чего из очереди выбирается следующая задача. Параллельно может выполняться N задач.

Нужно создать github репозиторий и в нем разместить приложение. При запуске стартует HTTP-сервер, у сервера есть два endpointa:

  1. Поставить задачу в очередь. Параметры:
  • n - количество элементов (целочисленное)
  • d - дельта между элементами последовательности (вещественное)
  • n1 - Стартовое значение (вещественное)
  • I - интервал в секундах между итерациями (вещественное)
  • TTL - время хранения результата в секундах (вещественное)
  1. Получить отсортированный список задач и статусы выполнения этих задач. Поля результата для каждой задачи:
  • Номер в очереди (целочисленное)
  • Статус: В процессе/В очереди/Завершена
  • n
  • d
  • n1
  • I
  • TTL
  • Текущая итерация
  • Время постановки задачи
  • Время старта задачи
  • Время окончания задачи (в случае если задача завершена)

Требования к реализации

  • Отработанные задачи стирать после завершения TTL;
  • В качестве хранения данных использовать память;
  • Вычисление текущего значения должно высчитываться от предыдущего значения по факту наступления времени (по интервалу), а не по формуле разницы времени и количеству итераций;
  • Параллельно может выполняться только N задач. Количество N передается через параметры командной строки сервиса.

QA

Q:TTL для всех задач одинаковый или передается в параметрах запроса на эндпоинт?
A: Одинаковый

Q: По какому параметру нужен отсортировать список задач?
A: Время поступления задачи на обработку

Q: "Отработанные задачи стирать после завершения TTL" Верно ли, что если задача не решена, а TTL истек, она также должна быть удалена?
A: Да, задача удаляется и не возвращается ни в одном запросе

Запуск

Запустить можно с тремя параметрами:
--workersNum -w Количество воркеров, по умолчанию равно количеству процессоров
--host -h Имя хоста. По умолчанию значение из файла конфига
--port -p Номер порта. По умолчанию значение из файла конфига

About

arithmetic-progression-in-queue

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published