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

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

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

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

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

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

Тестовое задание на позицию стажера/junior бекенд разработчика в юнит Авто Задача: Нужно сделать HTTP сервис для сокращения URL наподобие [Bitly](https://bitly.com/) и других сервисов. UI не нужен, достаточно сделать JSON API сервис. Должна быть возможность: - сохранить короткое представление заданного URL - перейти по сохраненному ранее короткому представлению и получить redirect на соответствующий исходный URL Требования: - Язык программирования: Go/Python/PHP/Java/JavaScript - Предоставить инструкцию по запуску приложения. В идеале (но не обязательно) – использовать контейнеризацию с возможностью запустить проект командой [`docker-compose up`](https://docs.docker.com/compose/) - Требований к используемым технологиям нет - можно использовать любую БД для персистентности - Код нужно выложить на github (просьба не делать форк этого репозитория, чтобы не плодить плагиат) Усложнения: - Написаны тесты (постарайтесь достичь покрытия в 70% и больше) - Добавлена валидация URL с проверкой корректности ссылки - Добавлена возможность задавать кастомные ссылки, чтобы пользователь мог сделать их человекочитаемыми - [http://bit.ly/avito-auto-be](http://bit.ly/avito-auto-be) - Проведено нагрузочное тестирование с целью понять, какую нагрузку на чтение может выдержать наш сервис - Если вдруг будет желание, можно слепить простой UI и выложить сервис на бесплатный хостинг - Google Cloud, AWS и подобные.

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 мая.**

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

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

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

KazanExpress test for Python developer Here lies the description and requirements of the test task for Python/Django Developer position applicants. Task goal The goal of this test task is to develop a simple Django admin panel which purpose is to manage the content for an online store and to have multi-role support. Domain description The following image represents the class diagram that should be considered during development of your admin panel. This is the minimal requirements for classes and fields that we are expecting from you to add. You can make your own updates and add additional functional. All images fields should be represented as links on images. You are free to use any database, which seems suitable for you and for the project. ![Class diagram](https://hb.bizmrg.com/kazanexpress/class_diagram.png) Requirements Shop admin 1. Navigate through the shops list. 2. Make a search by title. 3. Edit everything except shop id. 4. Upload image as shop pic. Product admin 1. Navigate through product list. 2. Search by id or product title. 3. Edit everything except product id. 4. First image should be displayed as main image in both list view and product view. 5. Sort products in product list by number of orders and by price. 6. Filter list of products by active flag. 7. Filter by price range. 8. Attach product to one or more categories. Category admin 1. Navigate through categories list. 2. Search by product id, title and parent category. 3. Add one or more parent categories. 4. Display all possible paths to chosen category. Management There should be at least two administrative roles for the following purposes: 1. Moderation for products. 2. Moderation of all available pages. Submission Fork this repository, prepare your solution and make a pull request when you're done. Don't forget to write docs :) Good luck!

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

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

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

Задание 1. Разработать функцию определения счета в игре Задача В примере кода ниже генерируется список фиксаций состояния счета игры в течение матча. Разработайте функцию get_score(game_stamps, offset), которая вернет счет на момент offset в списке game_stamps. Нужно суметь понять суть написанного кода, заметить нюансы, разработать функцию вписывающуюся стилем в существующий код, желательно адекватной алгоритмической сложности. ```Python from pprint import pprint import random import math TIMESTAMPS_COUNT = 50000 PROBABILITY_SCORE_CHANGED = 0.0001 PROBABILITY_HOME_SCORE = 0.45 OFFSET_MAX_STEP = 3 INITIAL_STAMP = { "offset": 0, "score": { "home": 0, "away": 0 } } def generate_stamp(previous_value): score_changed = random.random() > 1 - PROBABILITY_SCORE_CHANGED home_score_change = 1 if score_changed and random.random() > 1 - \ PROBABILITY_HOME_SCORE else 0 away_score_change = 1 if score_changed and not home_score_change else 0 offset_change = math.floor(random.random() * OFFSET_MAX_STEP) + 1 return { "offset": previous_value["offset"] + offset_change, "score": { "home": previous_value["score"]["home"] + home_score_change, "away": previous_value["score"]["away"] + away_score_change } } def generate_game(): stamps = [INITIAL_STAMP, ] current_stamp = INITIAL_STAMP for _ in range(TIMESTAMPS_COUNT): current_stamp = generate_stamp(current_stamp) stamps.append(current_stamp) return stamps game_stamps = generate_game() pprint(game_stamps) def get_score(game_stamps, offset): ''' Takes list of game's stamps and time offset for which returns the scores for the home and away teams. Please pay attention to that for some offsets the game_stamps list may not contain scores. ''' # return home, away ``` Результат 1. Ссылка на [gist](https://gist.github.com/) с исходным кодом функции. Задание 2. Разработать тесты для функции определения счета в игре Задача Для разработанной в предыдущем задании функции get_score(game_stamps, offset) разработайте unit-тесты на фреймворке [unittest](https://docs.python.org/3/library/unittest.html). Тесты должны учитывать все возможные случаи использования функции, концентрироваться на проверке одного случая, не повторяться, название тестов должно отражать суть выполняемой проверки. Результат 1. Ссылка на [gist](https://gist.github.com/) с исходным кодом тестов. Задание 3. Разработать парсер смартфонов Задача Разработать парсер, который будет собирать информацию о версиях операционных систем в топ-100 смартфонах с самым высоким рейтингом пользователей в каталоге [ozon.ru](http://ozon.ru/). На сайте [ozon.ru](http://ozon.ru/) в категории “Электроника -> Телефоны и смарт-часы” с сортировкой “Высокий рейтинг” нужно собрать информацию о первых 100 смартфонах попавших в выборку. Перейти на страницу с каждым из них и забрать информацию о версии операционной системы из характеристик. По собранным данным построить распределение моделей по версиям операционных систем в порядке убывания, например: ```txt Android 8 — 12 Android 10 — 9 iOS 14 — 8 … ``` Для парсинга следует использовать язык программирования Python, фреймворк Scrapy, для скачивания динамических частей сайта следует использовать Scrapy+Selenium. В выполнении задания может помочь scrapy proxy rotation middleware. Для расчета распределения следует использовать фреймворк Pandas. Результат 1. Ссылка на [gist](https://gist.github.com/) с распределение моделей устройств по версиям операционных систем в plain-text формате. 2. Ссылка на [github-репозиторий](https://github.com/) с публичным доступом с исходными кодами решения.

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