01 / тестовое задание

Nexters:
тестовое задание для продуктового аналитика

Реальное тестовое с собеседования на Junior Product Analyst: исходный текст задания, как решать и частые ошибки.

02 / оригинальный текст

Текст тестового задания

Исходный текст задания без редактуры — так, как его прислали кандидату.

Данные к заданиюОткрыть данные →

Задание #1

Привет! Это тестовое задание на позицию джуниор-аналитика в Hero Wars: Dominion Era!

Мы ценим ваш интерес к нашей компании, и чтобы объективно и быстро оценить ваш потенциал в продуктовой аналитике хотим попросить пройти небольшой тест, в котором у вас будет возможность продемонстрировать ваше знание синтаксиса Python, SQL, а также способность анализировать и интерпретировать данные. Мы постарались подготовить такие задания, которые были бы интересны начинающим аналитикам и были бы похожи на те, которые решает наша команда продуктовой аналитики.

Вопросы:

Вопрос 1.

У вас есть список с количеством дней, когда игроки были активны в течение месяца. Напишите функцию, которая возвращает список только тех игроков, которые были активны более 10 дней. Выберите все варианты, которые правильно реализуют это условие?

def filter_active_players(active_days_list): return __________

1. `[days for days in active_days_list if days >= 10]`

2. `[days for days in active_days_list if days > 10]`

3. `[days if days > 10 for days in active_days_list]`

4. `[days in active_days_list if days >= 10]`

Вопрос 2.

Представьте, что в игре игроки получают бонусные предметы при покупке пакетов. Эти бонусы увеличивают средний размер заказа (AoV). Напишите функцию, которая увеличивает AoV на 10%, если игрок приобрел бонусный пакет. Какой код правильно реализует это, выберите все подходящие варианты?

def increase_AoV_with_bonus(aov, has_bonus): return __________

1. `aov * 1.1 if has_bonus else aov`

2. `aov + has_bonus * 0.1`

3. `aov / 1.1 if has_bonus else aov`

4. `aov * has_bonus if aov > 10 else 0`

Вопрос 3.

У вас есть таблица `game_sales`, содержащая данные о продажах в разных играх. Какие SQL-запросы выберут игры, где суммарный доход от платящих игроков превышает 50 000?

1. SELECT game_name, SUM(revenue) FROM game_sales GROUP BY game_name HAVING SUM(revenue) > 50000;`

2. SELECT game_name FROM game_sales GROUP BY game_name WHERE SUM(revenue) > 50000;

3. SELECT game_name, revenue FROM game_sales WHERE revenue > 50000 GROUP BY game_name;

4. SELECT game_name, SUM(revenue) > 50000 FROM game_sales GROUP BY game_name;

Вопрос 4.

Какие SQL-запросов ниже вернут список игр, где доход на одного пользователя выше среднего по всем играм?

1. SELECT * FROM games WHERE revenue_per_user > (SELECT AVG(revenue_per_user) FROM games);

2. SELECT * FROM games WHERE revenue_per_user > AVG(revenue_per_user);

3. SELECT * FROM games WHERE revenue_per_user IN (SELECT revenue_per_user FROM games WHERE revenue_per_user > AVG(revenue_per_user));

4. SELECT * FROM games WHERE revenue_per_user > ALL (SELECT AVG(revenue_per_user) FROM games);

Вопрос 5.

У вас есть две таблицы: `active_players` и `paying_players`. Какие запросы вернут список имён игроков, которые либо активны, либо платят?

1. SELECT player_name FROM active_players UNION SELECT player_name FROM paying_players;

2. SELECT player_name FROM active_players JOIN paying_players ON active_players.player_name = paying_players.player_name;

3. SELECT player_name FROM active_players UNION ALL SELECT payer_name FROM paying_players;

4. SELECT DISTINCT player_name FROM active_players UNION paying_players;

Задание #2

Вместе с этим письмом мы прилагаем файл

В файле HWDE Jun.PA Test Task.xlsx две вкладки:

LiveOps

A/B

Во вкладке LiveOps есть две таблицы:

таблица с датой, названием ивента, количеством игроков в этот день и выручкой за день

таблица с историческими значениями метрик ивентов.

Часть данных пропущена, мы рекомендуем восстановить эти данные, опираясь на вторую таблицу – с историческими значениями метрик ивентов. При построении «прогноза», пожалуйста, исходите из следующих предпосылок:

метрики ивентов в «будущем» в точности соответствуют историческим значениям

выручка в каждый день определяется только DAU и характеристиками ивентов

все необходимые новые данные можно получить из тех, что уже есть

Во вкладке A/B есть две таблицы:

со значениями метрик по результатам А/В теста

с количеством игроков, попавших в каждую из групп сплита.

А: тестовая группа, которая получила новую фичу В: контрольная, продукт без изменений.

Вам необходимо проанализировать полученные результаты (в том числе рассчитать доверительный интервал для метрики удержания игроков) и сделать вывод о целесообразности внедрения новой фичи в продукт.

Вопросы:

Вопрос 1.

Каково значение средней доходности (ARPDAU) на игрока у ивента «Распродажа хард валюты»

1. $1,72

2. $1,75

3. $1,56

4. $0,15

Вопрос 2.

Какой день был самым прибыльным в месяце?

1. 8 июля

2. 15 июля

3. 22 июля

4. 29 июля

Вопрос 3.

Если на основании известных значений DAU и расписания ивентов, с опорой на исторические метрики (при допущении, что на выручку не влияет никаких иных факторов, кроме указанных в таблице и значения метрик ивентов не меняются во времени) восстановить значение выручки, то какова итоговая сумма выручки за месяц (округление до $ тыс.)?

1. $ 599 тыс.

2. $ 871 тыс.

3. $ 1 040 тыс.

4. $ 987 тыс.

Вопрос 4.

Какое из представленных значений соответствует границам 95% доверительного интервала ретеншена 14-го для контрольной группы?

1. для расчета ДИ недостаточно данных

2. 72.14% – 72.62%

3. 69.92% – 70.17%

4. 69.81% – 70.29%

Вопрос 5.

По результатам проведенного анализа какую рекомендацию вы могли бы дать: стоит ли релизить фичу и делать ее доступной всей аудитории или стоит отказаться от такого релиза? Пожалуйста, подкрепите свои выводы наблюдениями из данных.

03 / что проверяют

Что проверяет это задание

01

A/B-тесты

Дизайн эксперимента, метрики, стат-значимость и интерпретация.

02

SQL

Выборки, агрегаты, джойны и оконные функции для анализа данных.

03

Python

Обработка данных и расчёты: pandas, скрипты, автоматизация.

04 / как решать

Как подойти к решению

  1. 1

    Разберите условие: что именно просят посчитать и в каких разрезах.

  2. 2

    Сверьтесь с данными: какие таблицы есть, период и нужные фильтры.

  3. 3

    Решайте по шагам и фиксируйте промежуточные результаты и допущения.

  4. 4

    Доведите до финальных чисел и коротких выводов или рекомендаций.

05 / частые ошибки

Частые ошибки

  • Неверный период, разрез или единицы измерения.
  • Не учтены фильтры и сегменты из условия.
  • Решение без промежуточных шагов — только финальная цифра.
  • Нет выводов и рекомендаций по результату.
06 / хороший ответ

Каким должен быть сильный ответ

Хороший ответ — это не просто финальные числа или код. Работодатель должен увидеть, как вы думаете, как проверяете ограничения задачи и как оформляете результат.

  • короткое описание логики решения;
  • промежуточные таблицы, запросы и фильтры;
  • финальные значения по каждому пункту задания;
  • понятные выводы и рекомендации.
07 / похожие задания

Похожие задания

08 / разборы в telegram

Хочешь больше таких разборов?

В Telegram-канале разбираю тестовые с собеседований, метрики и типичные ошибки кандидатов.

Подписаться в Telegram →
09 / следующий шаг

Разбираешь тестовые, но не уверен в решении?

На интенсиве разбираем реальные кейсы, A/B-секции, метрики, SQL, Python и типовые ошибки кандидатов.