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

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

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

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

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

Тестовое задание по Data Scientist от компании Cian

Базы данных и SQL запросы Дан софт, автоматизирующий работу библиотеки. 3НФ схемы БД софта выглядит следующим образом: Произведение - id - название Издание - id - id_произведения - год издания - кол-во страниц Экземпляр - id - id_издание - инвентаризационный номер Лог операций - id - id_user - id_экземпляр - дата_взяли - дата_вернули Нужно написать SQL-скрипты, которые отвечают на следующие вопросы: 1. Найти произведения, которые издавались более 5 раз. 2. Проверить, есть ли экземпляры, не привязанные ни к одному изданию. 3. Для каждого пользователя найти последние три взятые им произведения. Для каждого такого произведения указать, сколько всего раз его брали (за все время). 4. Список самых неблагонадежных пользователей библиотеки — рейтинг 10 самых плохих пользователей по двум или более критериям. Критерии неблагонадежности с точки зрения бизнеса предложите самостоятельно. Дополнительные комментарии: 1. При оценке результата учитывается оптимальность выборок данных и возвращаемых результатов. 2. Если задачу можно решить без вложенного запроса, то решение с вложенным запросом не оптимально. Секция `WITH` — это тоже вложенный запрос. 3. Считаем, что доступны все возможности языка SQL, определенные в стандартах ANSI SQL и Hive QL ([Hive Language Manual](https://cwiki.apache.org/confluence/display/Hive/LanguageManual)). --- Оценка критериев объявлений У вас есть сайт — доска объявлений (например, циан, авито, алиэкспресс и др. не нужно привязываться к функционалу конкретного сайта.) Задание: Предложить набор показателей, оценивающих качество базы объявлений. Оценка рекламных каналов В течение двух недель маркетологи проводили эксперименты по двум разным рекламным площадкам (например, Google и Яндекс). На обоих ресурсах реклама была показана примерно одинаковое число раз. Какие показатели нужно измерить, чтобы сравнить эти две площадки? Маркетологи хотят оставить одну площадку. Какие будут ваши рекомендации по выбору? Комментарий: Рекомендации — это не просто перечень показателей, а рекомендации по их интерпретации и принятию решения на их основе. Дашборд анализ заказов Есть файл с выгрузкой по истории заказов интернет-магазина (Тестовый набор данных (Заказы).xlsx). Нужно: 1. Проанализировать файл и предложить метрики, полезные для менеджера. 2. Реализовать прототип дашборда с этими метриками и данными файла. Прототип нужно реализовать в виде приложения в Tableau Public. Скачать можно[тут](https://public.tableau.com/en-us/s/). Прислать ссылку на финальный дашборд в облаке Tableau. 3. Описать сценарий работы менеджера с этим дашбордом.

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

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

Тестовое задание по Data Scientist от компании CloudReports

ЗАДАЧА Есть таблица истории просмотров фильмов в онлайн-кинотеатре. Два поля: Пользователь, Фильм Множество строк: тысячи пользователей и фильмов. Нужно сделать SQL, который бы реализовал логику алгоритма рекомендаций фильмов к просмотру, которые пользователи еще не смотрели. Логику рекомендаций предлагайте на свое усмотрение. На выходе нужна таблица: Пользователь, Рекомендованный фильм, Рейтинг рекомендации РЕШЕНИЕ Система рекомендаций будет построена на принципе коллаборативной фильтрации. Коллаборативная фильтрация позволяет предсказать интересы пользователя на базе интересов другого пользователя. Основная идея состоит в том, что если пользователи А и Б выбирают какой-то фильм, то высока вероятность схожести их интересов и по другим фильмам. В рамках данной задачи схожесть интересов пользователей определяется как N% общих просмотренных фильмов. То есть если у пользователя А N% общих просмотренных фильмов с пользователем Б, то мы можем рекомендовать пользователю А фильмы, которые посмотрел пользователь Б. Рейтинг рекомендации построен индивидуально для каждого пользователя на основании количества просмотров фильма у пользователей со схожими интересами. **База данных ** В качестве базы данных используется таблица likes, которая имеет два столбца – id пользователя (user\_id) и id фильма (movie\_id): ``` create table likes ( user_id int, movie_id int ); ``` Пример базы данных | **user_id ** | **movie_id ** | |-----------------| ---------------| | 1 | 4 | | 1 | 8 | | 2 | 2 | | 2 | 3 | | 2 | 1 | | 2 | 6 | | 2 | 7 | | 2 | 9 | | 2 | 11 | | 2 | 12 | | 3 | 13 | | 3 | 6 | | 3 | 8 | | 3 | 3 | | 3 | 11 | | 3 | 2 | | 4 | 1 | | 4 | 7 | | 4 | 8 | | 4 | 11 | | 4 | 3 | | 5 | 1 | | 5 | 8 | | 5 | 7 | | 5 | 2 | | 5 | 3 | SQL-запрос (PostgreSQL) ``` with users as ( /* 2. Таблица users содержит сгруппированную информацию о пользователях, которые имеют >= 10% общих просмотренных фильмов */ select distinct user1_id, user2_id from /* 1. Кросс-джойн таблица following для всех пользователей и фильмов со столбцом common_interest позволяет отследить какие фильмы были просмотрены обоими пользователями */ (select cus.user_id as user1_id, ous.user_id as user2_id, cus.movie_id as movie1_id, ous.movie_id as movie2_id, (cus.movie_id = ous.movie_id) as common_interest from likes as ous join likes as cus on cus.user_id <> ous.user_id) following group by user1_id, user2_id having ((count(*) filter (where "common_interest")::float) / (count(*)::float)) >= 0.1 ), user_likes as ( /* 3. Таблица user_likes содержит информацию о пользователях, фильмах и количестве просмотров фильмов пользователей с общими интересами, включая самого пользователя */ select users.user1_id, likes.movie_id, count(likes.user_id) as like_count from users left join likes on users.user2_id = likes.user_idgroup by users.user1_id, likes.movie_id ) /* 4. Таблица user_likes фильтруется таким образом, чтобы не рекомендовать пользователю уже просмотренные им фильмы. Выводится результат рекомендации для каждого пользователя в финальном виде. Значения отсортированы по убыванию id пользователя */ select user_likes.user1_id as "Пользователь", user_likes.movie_id as "Рекомендованный фильм", user_likes.like_count as "Рейтинг рекомендации" from user_likes left join likes on user_likes.user1_id = likes.user_id and user_likes.movie_id = likes.movie_id where likes.movie_id is null order by user_likes.user1_id, user_likes.like_count desc ``` Результат | **Пользователь ** | **Рекомендованный фильм ** | **Рейтинг рекомендации ** | | -------------------| ----------------------------| --------------------------| | 1 | 3 | 2 | | 1 | 7 | 2 | | 1 | 2 | 1 | | 1 | 11 | 1 | | 2 | 8 | 2 | | 3 | 1 | 2 | | 3 | 7 | 2 | | 4 | 2 | 3 | | 4 | 6 | 2 | | 4 | 4 | 1 | | 4 | 9 | 1 | | 4 | 12 | 1 | | 4 | 13 | 1 | | 5 | 11 | 3 | | 5 | 6 | 2 | | 5 | 9 | 1 | | 5 | 4 | 1 | | 5 | 12 | 1 | | 5 | 13 | 1 | Решение на SQL Fiddle: [*http://sqlfiddle.com/\#!17/3b4915/21/0*](http://sqlfiddle.com/#!17/3b4915/21/0)

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

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

Тестовое задание по Data Scientist от компании Skypro

Тестовое задание Аналитик данных Как заполнить ответ 1. Создай копию этого [документа](ТЗ%20_%20Data%20Analyst%20Skypro%20.docx) (файл → создать копию) 2. Заполни ответы и пришли рекрутеру ссылку, открытую на чтение (настройки доступа). Ограничений по размеру и формату ТЗ нет. Вы работаете аналитиком в компании, которая занимается онлайн-образованием и предлагает различные курсы на своем веб-сайте. Ответьте на следующие вопросы: • Какие основные продуктовые метрики вы бы использовали для оценки эффективности курсов? Почему? • Как вы бы измеряли удержание и лояльность пользователей? Какие факторы могут влиять на них? • Как вы бы оценивали конверсию пользователей из просмотра каталога курсов до оплаты и прохождения курса? Какие способы повышения конверсии вы бы предложили? • Как вы бы проводили A/B-тест для сравнения двух версий веб-сайта с разными элементами дизайна и юзабилити? Какие метрики и статистические методы вы бы использовали для оценки результатов? 1 Задание Дана таблица "orders" со следующими столбцами: order_id (идентификатор заказа), course_id (идентификатор курса), user_id (идентификатор пользователя), order_date (дата заказа), price (цена заказа). Напишите SQL-запрос, который возвращает сумму выручки по каждому курсу за последний месяц. 2 Задание Дана таблица "users" со следующими столбцами: user_id (идентификатор пользователя), name (имя пользователя), email (электронная почта пользователя), registration_date (дата регистрации). Напишите SQL-запрос, который возвращает количество новых пользователей, зарегистрировавшихся в каждый день за последние 7 дней. 3 Задание Даны две таблицы: "courses" (course_id - идентификатор курса, course_name - название курса) и "ratings" (rating_id - идентификатор оценки, course_id - идентификатор курса, user_id - идентификатор пользователя, rating - оценка курса от 1 до 5). Напишите SQL-запрос, который возвращает название курса и среднюю оценку для каждого курса с количеством оценок больше 10. 4 Задание Дана таблица "user_courses" со следующими столбцами: user_id (идентификатор пользователя), course_id (идентификатор курса), start_date (дата начала курса), end_date (дата окончания курса). Напишите SQL-запрос, который возвращает количество активных пользователей (пользователей, у которых есть хотя бы один текущий курс) на определенную дату. 5 Задание Дана таблица "events" со следующими столбцами: event_id (идентификатор события), user_id (идентификатор пользователя), event_type (тип события, например: 'registration', 'course_purchase', 'course_complete'), event_date (дата события). Напишите SQL-запрос, который возвращает количество пользователей, которые совершили покупку курса, но не завершили его в течение 30 дней после покупки. Как к тебе обращаться? ФИ: Почта: Телефон: Чего ждать дальше? Мы всё проверим и вернемся с ответом на почту в рамках 2-3 рабочих дней.

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

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

Тестовое задание по Data Scientist от компании LESTA

Тестовое задание на позицию Data Analyst Во вложении Вы получили SQLite3 базу данных со случайной выборкой из free-to-play игры «Мир Кораблей». Выполните задания ниже, используя любые инструменты для анализа и визуализации данных на ваше усмотрение. Исходные данные 1. Таблица `arenas` Характеристики боя (режим, карта, длительность и т.п.) | Столбец | Комментарий | |-------------------|-------------------------------------------------------------------------| | arena_id | Уникальный ID боя | | periphery_id | Уникальный ID кластера | | winner_team_id | ID команды-победителя, -1 означает ничью | | start_dt | Время начала боя | | duration_sec | Продолжительность боя (в секундах) | | map_type_id | ID игровой карты (ref catalog_items, категория ‘ARENA_TYPES’) | | team_build_type_id| ID игрового режима (ref catalog_items, категория ‘TEAM_BUILD_TYPE’) | | battle_level_id | ID уровня боя (обычно максимальный уровень корабля в бою) | 2. Таблица `arena_members` Данные по пользователям в сыгранных боях: техника игрока, успехи в бою и т.п. Отрицательные значения ID игроков соответствуют ботам. | Столбец | Комментарий | |-------------------|-------------------------------------------------------------------------| | arena_id | Уникальный ID боя | | periphery_id | Уникальный ID кластера | | account_db_id | ID игрока. Отрицательный ID - игроки, управляемые ИИ (боты) | | team_id | Команда игрока, обычно 0 или 1 | | clan_db_id | ID клана | | vehicle_type_id | Идентификатор используемого корабля | | ships_killed | Количество уничтоженных вражеских кораблей | | planes_killed | Количество уничтоженных вражеских самолетов | | damage | Урон, нанесенный вражеским кораблям | | team_damage | Урон, нанесенный по союзникам | | received_damage | Урон, полученный в бою | | regen_hp | Восстановленное здоровье | | max_hp | Максимальный объем здоровья корабля | | is_alive | 1 – если корабль игрока «выжил к концу боя» | | distance | Проделанный путь | | credits | Заработанные кредиты | | exp | Заработанный опыт | 3. Таблица `glossary_ships` Словарь для расшифровки техники. 4. Таблица `catalog_items` Словарь для расшифровки других игровых сущностей (например, игрового режима). Часть 1. Анализ игровых логов Задание 1.1 Проанализируйте популярность игровых режимов (`team_build_type_id` из таблицы `arenas`) среди игроков и визуализируйте наблюдения. Объясните выбранный подход к анализу и визуализации. Задание 1.2 Проанализируйте показатели эффективности кораблей, выбрав методологию на ваш взгляд. Визуализируйте результаты и объясните выбор методологии. Часть 2. Разработка SQL-запросов Задание 2.1 Определите топ 5% игроков по суммарному урону за все бои. Запрос должен возвращать таблицу: | account_db_id | total_damage | |---------------|--------------| | | | Задание 2.2 Для каждого игрока из задания 2.1 определите корабль, на котором он нанес больше всего урона за все бои. Ограничьте выгрузку 10-ю лучшими результатами. Запрос должен возвращать таблицу: | account_db_id | ship_name | dealt_damage | |---------------|-----------|--------------| | | | | Оформление результатов - Результаты заданий части 1 оформить в PDF-отчете для менеджмента. Приложить отдельный архив с кодом. - Результаты заданий части 2 предоставить в виде текстового файла с SQL-запросами.

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