Тестовые задания по 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, пользоваться аннотацией типов.
KODE • Лёгкая сложность
Тестовое задание по Python от компании KODE
2018-internship-backend Задача №1 Дан массив связей пользователей социальной сети. Определите, существует ли связь между любыми двумя заданными пользователями. Например, если у двух пользователей есть общие друзья или у их друзей есть общие друзья и т.д.  Ввод: информация о связях, как кортеж (tuple) кортежей; первое имя (str); второе имя (str). Вывод: существует ли связь между пользователями (bool). Проверка: при проверке вызывается функция `check_relation()`. ```python def check_relation(net, first, second): pass if __name__ == '__main__': net = ( ("Ваня", "Лёша"), ("Лёша", "Катя"), ("Ваня", "Катя"), ("Вова", "Катя"), ("Лёша", "Лена"), ("Оля", "Петя"), ("Стёпа", "Оля"), ("Оля", "Настя"), ("Настя", "Дима"), ("Дима", "Маша") ) assert check_relation(net, "Петя", "Стёпа") is True assert check_relation(net, "Маша", "Петя") is True assert check_relation(net, "Ваня", "Дима") is False assert check_relation(net, "Лёша", "Настя") is False assert check_relation(net, "Стёпа", "Маша") is True assert check_relation(net, "Лена", "Маша") is False assert check_relation(net, "Вова", "Лена") is True ``` **Формат ответ: код отдельным файлом** Задача №2 Реализовать API, которое на HTTP-запрос `GET /weather?city=<city_name>`, где `<city_name>` - это название города на английском языке, возвращает текущую температуру в этом городе в градусах Цельсия, атомсферное давление (мм рт.ст.) и скорость ветра (м/c). При первом запросе, сервис должен получать данные о погоде от openweathermap.com, при последующих запросах для этого города в течение получаса запросы на сервис openweathermap.com происходить не должны. Код должен быть выложен в открытом репозитории на github, содержать файл `requirements.txt` со списком зависимостей и инструкцию по запуску. **Формат ответа: Код должен быть выложен в открытом репозитории на github, содержать файл requirements.txt со списком зависимостей и инструкцию по запуску.** Задача №3 Компания "DOKE" объявляет о проведении стажировки с последующим трудоустройством! Ты умён, но не знаешь, что с этим делать? Запишись на стажировку и получи приглашение на лекции. Есть приглашение? Ты стажёр! Для тебя мы приготовили теоретические и практические занятия с преподавателями-сотрудниками "DOKE". К каждому занятию прилагаются задания (тесты на теорию и практические задачи), чтобы проверить, как ты понял тему. По каждому заданию ты будешь получать оценку. Кто круче? Тот, у кого средний балл выше! А ещё в результате выполнения практических задач каждый стажёр сделает тестовый проект, который будет работать. Чувствуешь, как повышается градус крутости? По окончании стажировки стажёры с высоким средним баллом могут стать интернами компании и получить уникальную возможность поработать над задачами реального проекта под надзором опытных и вежливых наставников. Если всё пойдёт хорошо - ты станешь настоящим DOKE'ром, но это уже другая история Чтобы понять, готов ли ты стажироваться, мы предлагаем тебе помочь будущим коллегам с разработкой новой системы. Спроектируй структуру классов для платформы проведения стажировок: Основные сущности: * Направление (iOS, Android, Backend) * Cтажёр (не работает над проектом компании) * Интерн (работает над проектом компании на особых условиях) * Преподаватель * Теоретический курс * Практический курс * Проект * Стажировка * Интернатура Дополнительные сущности: * Оценки * Тесты * Задачи * Темы * Категории * ... Диаграмма классов должна представлять взаимосвязи между сущностями предметной области, описывать их внутреннюю структуру и типы отношений, методы для работы с экземплярами, свойства и их типы. Должны быть реализованы основные принципы ООП. Примечание: сущности не обязательно должны в точности соответствовать перечисленным выше, если у тебя есть идеи реализации получше - то можешь их предложить :) Удачи, стажёр! **Формат ответа: файл (картинка, желательно) или ссылка на диаграмму draw.io** --- **ВАЖНО: решенные задания принимаются на почту [edu@appkode.ru](mailto:edu@appkode.ru).** **В теме письма "стажировка_backend_\[имя\]".** **Последний срок сдачи - 3 мая.**
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 Используемые библиотеки и инструменты — всё на твой выбор. Оценивать будем умение выполнять задачу имея неполные данные о ней, умение самостоятельно принимать решения и качество кода.
без ограничений.
Чтобы получить полный доступ,
вам необходимо зарегистрироваться.