Skip to content

stalin-777/test-apiq

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

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