Тестовые задания по Python

Здесь собраны реальные тестовые задания, которые дают соискателям на стажировках и junior-позициях. Эти задания помогут лучше подготовиться к отбору, потренироваться и пополнить портфолио

стэк>
Компания>
Сложность>

Python • Лёгкая сложность

Лёгкий уровень сложности - 1 звезда

Тестовое задание по 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 • Лёгкая сложность

Лёгкий уровень сложности - 1 звезда

Тестовое задание по Python от компании KODE

2018-internship-backend Задача №1 Дан массив связей пользователей социальной сети. Определите, существует ли связь между любыми двумя заданными пользователями. Например, если у двух пользователей есть общие друзья или у их друзей есть общие друзья и т.д. ![enter image description here](https://lh3.googleusercontent.com/t1E118K3WTaTbuM59a51FW2nixdYXdjcnaBjXWiV6sFJHDM6Nzt3tWaggDkGxpPK2Hx3v9gROzIE "users") Ввод: информация о связях, как кортеж (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 мая.**

UpTrader • Средняя сложность

Средний уровень сложности - 2 звезды

Тестовое задание по Python от компании UpTrader

Places Remember Скачать .zip файл Цель Создать веб-приложение, с помощью которого люди смогут хранить свои впечатления о посещаемых местах. Описание задачи Пользователь заходит на сайт и видит страницу с кратким описанием сервиса. Также, он замечает кнопки “Войти с помощью Google” (или VK, на Ваше усмотрение), нажимая на которую Google/VK предлагает ему разрешить доступ к его базовой информации. Он разрешает доступ, после чего должна открыться страница. В ее шапке будет имя и фотография (информация взята из профиля Google/VK), по центру страницы надпись “У вас нет ни одного воспоминания”, кнопка “Добавить воспоминание” (ее расположение на ваше усмотрение), при нажатии на которую должна открываться форма с возможностью указания места на карте, а также поле для ввода названия и поле для ввода комментария об этом месте. Далее пользователь может нажать на кнопку “Сохранить”, после чего он снова попадает на домашнюю страницу со списком из этого элемента и возможностью добавлять новые места. Весь добавленный список мест будет отображаться на домашней странице. На домашней странице пользователя также есть кнопка, позволяющая ему выйти из своего аккаунта. После выхода он должен попасть на приветственную страницу сервиса без возможности видеть список посещаемых мест. При повторной авторизации через Google/VK пользователь снова видит все свои добавленные места. Требования к реализации: - Приложение должно быть реализовано на базе фреймворка Django. - Оформление кода должно соответствовать стандартам (PEP8, Django coding style) - Все используемые зависимости должны быть актуальными на момент создания проекта. - С самого начала разработки необходимо использовать git, а также следовать стилю коммитов: https://chris.beams.io/posts/git-commit/. Исходный код приложения должен быть размещён на github. - Основной функционал (создание впечатлений о посещаемых местах и получение их списка) должен быть покрыт юнит-тестами. - Возможно использование любых сторонних пакетов, для стилей рекомендуется использовать bootstrap. - Если что-то не удалось сделать, необходимо описать проблемы в файле README.md Будет плюсом: - Запуск тестов при новых коммитах реализован с использованием github actions. - Локальный запуск через docker/docker-compose - В README проекта есть бейдж с текущим покрытием тестами (https://coveralls.io/). - Сконфигурированные правила для линтеров, запуск линтеров при коммите/пуше/github actions Приложение запускается на одном из облачных сервисов

PyShop • Высокая сложность

Высокий уровень сложности - 3 звезды

Тестовое задание по Python от компании PyShop

Тестовое задание для разработчика на python У сети ресторанов доставки "ФорФар" есть множество точек, на которых готовятся заказы для клиентов. Каждый клиент хочет вместе с заказом получить чек, содержащий детальную информацию о заказе. Сотрудники кухни также хотят чек, чтобы в процессе готовки и упаковки заказа не забыть положить всё что нужно. Наша задача помочь и тем и другим, написав сервис для генерации чеков. Схема работы сервиса ![][arch] 1. Сервис получает информацию о новом заказа, создаёт в БД чеки для всех принтеров точки указанной в заказе и ставит асинхронные задачи на генерацию PDF-файлов для этих чеков. Если у точки нет ни одного принтера - возвращает ошибку. Если чеки для данного заказа уже были созданы - возвращает ошибку. 2. Асинхронный воркер с помощью wkhtmltopdf генерируют PDF-файл из HTML-шаблон. Имя файла должно иметь следущий вид <ID заказа>\_<тип чека>.pdf (123456_client.pdf). Файлы должны хранится в папке media/pdf в корне проекта. 3. Приложение опрашивает сервис на наличие новых чеков. Опрос происходит по следующему пути: сначала запрашивается список чеков которые уже сгенерированы для конкретного принтера, после скачивается PDF-файл для каждого чека и отправляется на печать. Технические требования 1. Сервис должен быть написан на python и Django 2. База данных - PostgreSQL v9.6 3. Для асинхронных задач использовать django_rq 4. Все инфраструктурные вещи необходимые для сервиса ([PostgreSQL], [Redis], [wkhtmltopdf]) запускать в docker с помощью docker-compose, **_сам проект не нужно оборачивать в docker_** 5. Помимо API, должна быть админка для обеих моделей, с возможностью фильтровать чеки по принтеру, типу и статусу Примечания 1. Вёрстка HTML-шаблонов для чеков лежит в репозитории в папке templates 2. Для простоты работы с wkhtmltopdf стоит использовать docker-контейнер [wkhtmltopdf] 3. Во время написания сервиса не стоит изобретать велосипеды, лучше взять что-то существующие Модели 1. Принтер (Printer). Каждый принтер печатает только свой тип чеков. Поле api_key принимает уникальные значения, по нему однозначно определяется принтер. Для этой модели должны быть fixtures (принтеры для обоих типов чеков для нескольких точек). | Поле | Тип | Значение | Описание | | ---------- | ------------ | --------------- | --------------------------------- | | name | CharField | | название принтера | | api_key | CharField | | ключ доступа к API | | check_type | CharField | kitchen\|client | тип чека которые печатает принтер | | point_id | IntegerField | | точка к которой привязан принтер | 2. Чек (Check). Информация о заказе для каждого чека хранится в JSON, нет необходимости делать отдельные модели. | Поле | Тип | Значение | Описание | | ---------- | ---------- | ---------------------- | ---------------------------- | | printer_id | ForeignKey | | принтер | | type | CharField | kitchen\|client | тип чека | | order | JSONField | | информация о заказе | | status | CharField | new\|rendered\|printed | статус чека | | pdf_file | FileField | | ссылка на созданный PDF-файл | API Описание доступных методов находится в файле [api.yml](api.yml) (swagger-спецификация). Можно отрендерить через [онлайн редактор][swagger] или через соответствующий плагин для PyCharm или VSCode [wkhtmltopdf]: https://hub.docker.com/r/openlabs/docker-wkhtmltopdf-aas/ [postgresql]: https://hub.docker.com/_/postgres/ [redis]: https://hub.docker.com/_/redis/ [swagger]: https://editor.swagger.io/ [arch]: images/arch.png

Получите доступ более чем к 500 тестовым заданиям
Сервис можно использовать бесплатно,
без ограничений. Чтобы получить полный доступ,
вам необходимо зарегистрироваться.
1
...
456
...
15
где найти тестовые задания для практики
пример тестового задания junior
тестовые задания для junior python
практические задачи по python
решение тестового задания python