Легкая сложностьЛёгкий уровень

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

2018-internship-backend

Задача №1

Дан массив связей пользователей социальной сети.

Определите, существует ли связь между любыми двумя заданными пользователями.
Например, если у двух пользователей есть общие друзья или у их друзей есть общие друзья и т.д.

enter image description here

Ввод: информация о связях, как кортеж (tuple) кортежей; первое имя (str); второе имя (str).
Вывод: существует ли связь между пользователями (bool).
Проверка: при проверке вызывается функция check_relation().


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.

В теме письма "стажировка_backend_[имя]".

Последний срок сдачи - 3 мая.

Источник задания