# 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=`, где `` - это название города на английском языке, возвращает текущую температуру в этом городе в градусах Цельсия, атомсферное давление (мм рт.ст.) и скорость ветра (м/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 мая.**