В качестве тестового задания вам предлагается реализовать backend сервис предоставляющий функционал перемножения двух матриц. Так как запросов на сервис может быть много, а матрицы не ограничены в размере, предлагается распараллелить вычисление результата путем разбиения матриц на подматрицы, вычисления промежуточных данных и агрегации конечного ответа.
Backend сервис должен взаимодействовать с клиентом по REST API и реализовывать методы:
- Создания задачи на перемножение двух матриц.
- Метод проверки статуса выполнения задачи по присвоенному задаче идентификатору.
- Получения результата выполнения задачи по присвоенному задаче идентификатору.
В результате выполнения тествого задания должно получится:
- Backend сервис.
- Клиентский скрипт, запускающий на выполнение некоторое количество задач по перемножению матриц, опрашивающий сервис о готовности выполнения и выводящий резльтат на экран.
Используйте любые инструменты, которые вы сочтете удобными и приемлемыми. Единственные ограничения это использовать python не ниже версии 3.4 и обойтись без сторонних математических библиотек, таких как, например, numpy.
В данный момент используется блочный алгоритм перемножения матриц, поэтому на матрицы на кладывается ограничение: матрицы только квадратные с размером = степени 2. В ближайшее время будет доработан алгоритм для использования любых матриц. (через доработки матриц до квадратных).