Тестовые задания по Python
Здесь собраны реальные тестовые задания, которые дают соискателям на стажировках и junior-позициях. Эти задания помогут лучше подготовиться к отбору, потренироваться и пополнить портфолио
ItGlobal • Средняя сложность
Тестовое задание по Python от компании ItGlobal
Необходимо разработать бекенд (серверную часть) веб-приложения, демонстрирующего расписание рейсовых автобусов. Автобусы двигаются по маршрутам от конечной до конечной в прямом и обратном направлении. В разных направлениях может быть разный набор остановочных пунктов. Фронтенд приложения получает данные с сервера через REST API, необходимо реализовать следующие методы этого API: 1. /api/find-bus Описание: Возвращает автобусы, маршрут которых включает отрезок от одной остановки к другой, с тремя ближайшими к текущему времени вариантами времени прибытия на исходную остановку. Параметры запроса: * from: id исходной остановки. * to: id конечной остановки. Пример ответа: ``` { "from": "ул. Пушкина", "to": "ул. Ленина", "buses": [ { "route": "Автобус No11 в сторону ост. Попова", // указывается конечная остановка маршрута "next_arrivals": ["08:15", "08:40", "09:15"] }, { "route": "Автобус No21 в сторону ост.Ленина", "next_arrivals": ["08:30", "09:04", "09:30"] } ] } ``` 2. Методы (или метод) предоставляющие механизм редактирования маршрутов, т.е. набора остановок на пути следования автобуса (без указания времени). Входный параметры и формат ответа продумать самостоятельно. Требования к реализации: 1. Язык программирования: PHP (версия 7+). 2. Использование фреймворка: допускается использование фреймворка на выбор: Laravel, Symfony, Yii2 или чистый PHP. 3. База данных: PostgreSQL. 4. Использование подхода ООП Оцениваться будут архитектура решения, качество кода, соответствие REST принципам и тестируемость. Будет плюсом если проект будет запускаться в docker. Результат представить в виде ссылки на публичный репозиторий на bitbucket.org. Он должен включать в себя php файлы проекта, sql дамп базы, схему структуры базы данных в виде изображения и инструкцию по запуску проекта.
Python • Лёгкая сложность
Тестовое задание по Python от компании Python
Результат выполнения задания должен быть выложен соискателем в публичный репозиторий github и помимо кода проекта содержать подробные инструкции по сборке и запуску. Ссылку на проект необходимо направить на почту: hr@bewise.ai в тексте письма указать ваше ФИО и ссылку на ваше резюме Задачи: 1. С помощью Docker (предпочтительно - docker-compose) развернуть образ с любой опенсорсной СУБД (предпочтительно - PostgreSQL). Предоставить все необходимые скрипты и конфигурационные (docker/compose) файлы для развертывания СУБД, а также инструкции для подключения к ней. Необходимо обеспечить сохранность данных при рестарте контейнера (то есть - использовать volume-ы для хранения файлов СУБД на хост-машине. 2. Реализовать на Python3 простой веб сервис (с помощью FastAPI или Flask, например), выполняющий следующие функции: * В сервисе должно быть реализовано REST API, принимающее на вход POST запросы с содержимым вида {"questions_num": integer} ; * После получения запроса сервис, в свою очередь, запрашивает с публичного API (англоязычные вопросы для викторин) https://jservice.io/api/random?count=1 указанное в полученном запросе количество вопросов. * Далее, полученные ответы должны сохраняться в базе данных из п. 1, причем сохранена должна быть как минимум следующая информация (название колонок и типы данный можете выбрать сами, также можете добавлять свои колонки): 1. ID вопроса, 2. Текст вопроса, 3. Текст ответа, * Дата создания вопроса. В случае, если в БД имеется такой же вопрос, к публичному API с викторинами должны выполняться дополнительные запросы до тех пор, пока не будет получен уникальный вопрос для викторины. * Ответом на запрос из п.2.a должен быть предыдущей сохранённый вопрос для викторины. В случае его отсутствия - пустой объект. 3. В репозитории с заданием должны быть предоставлены инструкции по сборке докер-образа с сервисом из п. 2., его настройке и запуску. А также пример запроса к POST API сервиса. 4. Желательно, если при выполнении задания вы будете использовать docker-compose, SqlAalchemy, пользоваться аннотацией типов.
KosyanMedia • Лёгкая сложность
Тестовое задание по Python от компании KosyanMedia
Тестовое задание в команду гейтов (Python) В папке два XML – это ответы на запросы, сделанные к API партнёра via.com. [RS_Via-3.xml](/backend/Python/KosyanMedia/RS_Via-3.xml) [RS_ViaOW.xml](/backend/Python/KosyanMedia/RS_ViaOW.xml) Необходимо их распарсить и вывести списком отличия между результатами двух запросов по маршрутам (тег Flights). * Какие рейсы входят в маршрут * Время начала и время конца маршрута * Цена маршрута * Что изменилось по условиям? * Добавился ли новый маршрут? Язык реализации — python3 Используемые библиотеки и инструменты — всё на твой выбор. Оценивать будем умение выполнять задачу имея неполные данные о ней, умение самостоятельно принимать решения и качество кода.
AvitoTech • Лёгкая сложность
Тестовое задание по Python от компании AvitoTech
Тестовое задание по python Условие Необходимо реализовать Python-библиотеку, которая осуществляет получение квадратной матрицы (NxN) с удалённого сервера и возвращает её пользователю в виде `List[int]`. Этот список должен содержать результат обхода полученной матрицы по спирали: против часовой стрелки, начиная с левого верхнего угла (см. test case ниже). Пример исходной матрицы: ``` +-----+-----+-----+-----+ | 10 | 20 | 30 | 40 | +-----+-----+-----+-----+ | 50 | 60 | 70 | 80 | +-----+-----+-----+-----+ | 90 | 100 | 110 | 120 | +-----+-----+-----+-----+ | 130 | 140 | 150 | 160 | +-----+-----+-----+-----+ ``` Матрица гарантированно содержит целые неотрицательные числа. Форматирование границ иными символами не предполагается. Требования к выполнению и оформлению - Библиотека содержит функцию со следующим интерфейсом: ```python async def get_matrix(url: str) -> List[int]: ... ``` - Функция единственным аргументом получает URL для загрузки матрицы с сервера по протоколу HTTP(S). - Функция возвращает список, содержащий результат обхода полученной матрицы по спирали: против часовой стрелки, начиная с левого верхнего угла. - Взаимодействие с сервером должно быть реализовано асинхронно - посредством aiohttp, httpx или другого компонента на asyncio. - Библиотека должна корректно обрабатывать ошибки сервера и сетевые ошибки (5xx, Connection Timeout, Connection Refused, ...). - В дальнейшем размерность матрицы может быть изменена с сохранением форматирования. Библиотека должна сохранить свою работоспособность на квадратных матрицах другой размерности. - Решение задачи необходимо разместить на одном из публичных git-хостингов (GitHub, GitLab, Bitbucket). Можно также выслать решение в виде архива (zip, tar). Загружать библиотеку в PyPi или другие репозитории не требуется. Проверка решения - Для самостоятельной проверки можно использовать следующий test case: ```python SOURCE_URL = './backend/Python/AvitoTech/matrix.txt' TRAVERSAL = [ 10, 50, 90, 130, 140, 150, 160, 120, 80, 40, 30, 20, 60, 100, 110, 70, ] def test_get_matrix(): assert asyncio.run(get_matrix(SOURCE_URL)) == TRAVERSAL ``` При проверке мы также будем обращать внимание на тесты, type hints, структуру решения и общее качество кода. Удачи в выполнении задачи и не забывайте о [The Zen of Python](https://www.python.org/dev/peps/pep-0020/#the-zen-of-python)! :)
без ограничений.
Чтобы получить полный доступ,
вам необходимо зарегистрироваться.