Наверняка каждый сталкивался с тестовым заданием. Расскажу об одной из ловушкех, с которой вы можете столкнуться.
Ну вот, например, тестовое задание, а точнее ЯКОБЫ тестовое задание от компании... Ну да бог с ней, с компанией... Они себя узнают)))
Возможно, конечно, я ошибаюсь, но мало того, что подразумевается обмен данными в формате excell,
так эти "друзья", просят еще, чтобы кандидат выполнил полноценный микросервис и желательно в docker.
А разместить это удобненько на github, так, чтобы было удобно скачать и сразу добавить в свою копилку микросервисов компании.
И все это, естественно, за "бесплатно", т.е. даром.
Реализовать веб-приложение, которое предоставляет API со следующим функционалом:
- возможность загрузить и обработать файл в формате excel
- возможность получить статус обработки загруженного файла, который должен включать следующую информацию:
- дата и время загрузки
- дата и время окончания обработки, если обработка завершена
- статус обработки (загружено, обрабатывается, обработано)
- результат обработки
- API должен быть защищён авторизацией
- авторизация должна производиться с помощью токена или пары имя пользователя, пароль
- в базе данных эти данные, используемые для авторизации, хранить не требуется
О структуре загружаемого файла
- загружаемый файл представляет собой файл Excel (xls или xlsx)
- файл состоит из нескольких листов, каждый из которых имеет свой набор колонок или не имеет вообще никаких данных
- количество колонок, а также их порядок не фиксирован
- в первой строке указаны заголовки колонок
- последней колонкой на листе считается та, у которой справа от её заголовка находится пустая ячейка
- данные в колонке также ограничены пустой ячейкой снизу
- на одном из листов содержатся колонки с заголовками before и after
- далее речь идёт о только колонках before и after
- одна из колонок содержит список L1 из N положительных целых чисел
- другая колонка содержит список L2 из N+1 положительных целых чисел
- известно, что набор из L2 состоит из набора L1 и ещё некоего числа X
- порядок следования общих чисел в наборах может различаться
Что необходимо сделать в процессе обработки:
- необходимо определить число X
- если набор L1 находился в колонке before, то в результат обработки поместить
added: X
- если набор L1 находился в колонке after, то в результат обработки поместить
removed: X
- время обработки должно быть линейным
Приложение может быть реализовано с использованием любого фреймворка. Для определения числа X нельзя использовать специализированные библиотеки обработки данных, такие как pandas. Дополнительным плюсом будет размещение приложения в контейнере Docker. Разработанное приложение необходимо размесить в github-репозитории.
Делайте выводы, коллеги!
Комментарии