Подготовка к собеседованию на продуктового аналитика. Задачи
Год назад свет увидел мой курс по вопросам на собесах продуктовых аналитиков. После пубуликации на Степике я ещё подумал — «А неплохо было каких нибудь "продающих" материалов написать!». В итоге написал только про сам процесс создания курса, а ничего другого и не сделал. Что, впрочем, не помешало перевалить за 100+ продаж. Я уже начал было свыкаться с мыслью, что промо-материал не появится никогда (UPD — после выхода этой статьи написал ещё одну, там поподробнее рассказал про историю курса), но помогла площадка Solvery, на которой я менторствую. Ребята как раз предложили написать материал про собеседования в продуктовой аналитике, а я и согласился. Подумав, что это же как раз ровно то, что у меня в курсе и покрывается максимально подробно! В общем, ловите пользу, тут, по факту, демо-версия моего курса, free of charge!
На собеседовании на позицию продуктового аналитика будут затронуты темы, представленные ниже. Все компании разные, и каждой важно что-то своё. Кто-то может пропускать технические вопросы и фокусироваться на продуктовом мышлении, кому-то важнее харды, а кто-то вообще пройдётся не по одной секции, а по всем сразу, возможно, в два захода. Темы ниже отсортированы по популярности. Вопросы по SQL будут почти наверняка, а вот питон, задачи на сообразительность и прочий тервер иногда удаётся избежать.
Тема: SQL
Чуть ли не основной навык продуктового аналитика. Сейчас правилом хорошего тона считается сходу решить задачку с применением оконной функции. Пример такой задачи: «У вас есть табличка log, в которой присутствуют колонки user_id, time, page. Для каждого user_id нужно вывести третью страницу (page) в хронологическом порядке. В результате должна получится табличка, содержащая колонки user_id и page».
Решение
Решение может выглядеть вот так:
WITH t1 AS ( SELECT user_id, ROW_NUMBER() OVER (PARTITION BY user_id ORDER BY time) as rn, page FROM log ) SELECT user_id, page FROM t1 WHERE rn = 3
Комментарии: ожидается, что такой вопрос вы сможете написать, даже не имея доступа к живой таблице, а просто получив условие текстом. Лучше тут не тушеваться и не говорить «Ой, а я мне без доступа к базе тяжело, вот была бы интерактивная среда, тогда бы я…». Задача не настолько сложная, что нужно её непременно дебежать на живых данных. Чтобы было проще начать, можете сперва подумать над задачкой в слух, объяснить свой ход решения, что и в каком порядке собираетесь делать. Для нашей задачи — «Сначала в подзапросе пронумерую строчки поюзерно, в хронологическом порядке, потом из него вытащу только строки с искомыми номерами». Тут же сразу имеет смысл порассуждать над граничными условиями, нюансами и прочим, что может вам усложнить жизнь. Или, наоборот, срезать пару углов. После озвучивания идеи вам будет проще писать код, а интервьюеру — понятнее, что вы хотите сделать. Может, даже подсказку даст. Бонусные очки можно сразу получить за упоминание всяких нюансов, специфичных для конкретной базы данных. В кликхаусе, например, есть специальная оконная функция, которая сразу вытаскивает n-ое значение, можно блеснуть её знанием. Покажете таким образом, что решали задачи посложнее, и с реальными базами работали.
Как прокачивать навык: тут решает практика. Нужно реально набить руку до автоматизма, иначе есть риск начать тупить даже на несложных задачках и показать себя в невыгодном свете. Путь героя — развернуть у себя локально базу, загрузить в неё несколько табличек и считать в них всё на свете. Путь попроще — найти на Степике курс-тренажёр и тренироваться в нём до посинения, старательно решая все задачки. Помним, просто почитать разбор недостаточно, создаёт ложную иллюзию понимания, но не набивает руку (но собеседовании нужно показать именно уверенное владение практикой!).
Тема: Продуктовое мышление
Какой толк от аналитика, если не знает, что именно считать? И как эти расчёты влияют на бизнес. Пример задачи: «Назовите своё любимое приложение на телефоне. Как устроена его бизнес-модель? Какие метрики для такой бизнес-модели самые важные?»
Решение
Я напишу кратко, но на такой вопрос чем больше подробностей вывалите, тем лучше. Разберём на примере вымышленной социальной сети Запретграм (все совпадения случайны). Юзеры не платят за использование сервиса, сервис зарабатывает на том, что показывает им рекламу. Значит, нам важно:
а) Cколько вообще человек заходит в сервис и проводит там какое-то время (DAU, WAU, MAU)
в) время, которое каждый юзер проводит в приложении (больше времени = больше просмотренных постов и сторисов = больше показанной рекламы = больше прибыль).
Опционально можно назвать всякие дополнительные способы, на которых Запретграм зарабатывает. Там есть и всякие партнёрства с брендами, и магазины, и ещё что-то, но это не основной поток выручки. Итого — бизнес хочет, чтобы юзеров было много (и приходили новые), сервисом они пользовались много, регулярно и никуда не пропадали. Указанные выше метрики для нас представляют максимальный интерес, и нужно придумывать, как их растить. На этом моменте вам и предложат придумать какую-нибудь идею по прокачиванию. А потом пойти и проверить её эффективность, но об этом в следующем вопросе.
Комментарии: субъективно, продуктовые вопросы — самые коварные для аналитиков. Очень много ребят хорошо понимаю технику: SQL, статистику, программирование, но при этом плавают на продуктовом этапе. При этом, вопросы эти часто задает продакт оунер, к которому вы потенициально идёте в команду. Продакты очень расстраиваются, когда видят в аналитике калькулятор, а не партнёра, который сможет на данных и цифрах помочь ему развивать продукт.
Как прокачивать навык: прокачать продуктовое мышление можно следующими способами: Во-первых, выполнить «домашнюю работу» и разобрать несколько продуктов с самыми разными бизнес-моделями заранее. Например, посмотреть, как устроены соцсети, маркетплейсы, подписочные сервисы, постараться самостоятельно найти самые разные метрики. Во-вторых, постараться найти деньги вообще во всём, что вас окружает. А если денег не видно, то подумать, когда они появятся. Примеры вопросов: “Окупается ли доставка продуктов в Деливери-Лавке?” (скорее всего, стоимости доставки не хватает, заработок идет засчет высокой наценки на ходовые продукты) “Почему такси в новом агрегаторе стоит так дешёво?” (демпингуют, чтобы привлечь адуиторию, заработаю позже) “А как так выходит, что номер в гостинице в агрегаторе и на сайте отеля стоит одинаково?” (гостинице приходится делиться с агрегатором частью цены, это плата за привлечение, которым бы иначе приходилось заниматься самостоятельно). В-третьих, держать руку на пульсе того, что вообще бывает, и как другие зарабатывают. Мои любимые продуктово-бизнесовые каналы:
Тема: A/B-тесты, статистика, проверка гипотез
Увы, А/B-тестам на собеседованиях уделяют сильно больше времени, чем потом на реальной работе. Основы нужно уметь излагать чётко и уверенно, даже если пока не довелось поработать с настоящими тестами. Пример задачи: Спросить могут завуалированно: «Мы придумали новую фичу. Давайте катить сразу в прод! Не стоит? А почему?». Или явно: «Хотим провести A/B-тест. Что дальше?».
Решение
Основные моменты (подробно расписать каждый — получится целая книга!) в ответе на вопрос выше:
- Ещё раз проверить гипотезу на здравый смысл. Какие метрики она должна увеличивать? Оно точно ничего не сломает? Пробовали уже подобное? Иногда заказчики возлагают слишком большие надежды на мелочи, которые к тому же невозможно толком измерить. Иногда придумывают что-то странное, типа незакрывающихся экранов онбординга/внутренней рекламы секунд на 10. Уже на этом этапе аналитик возмутиться.
- Уточнить основные и контрольные метрики в тесте. Например, основная — CTR в следующий шаг сценария, контрольная — конверсия в покупку. Будет обидно нарастить CTR, посчитать тест успешным, но потом выяснить, что продаж стало в 2 раза меньше!
- Определяемся с нулевой гипотезой. И тем, что мы будем делать, если не получим значимой разницы. Расктим ли мы изменения, если не увидим разницы? Или важно увидеть явное преимущество? В некоторых случаях это позволит обойтись односторонним тестом, который выдаст те же результаты на меньшем объеме трафика. Лучше продумать план заранее, чем гипнотизировать результаты уже случившегося теста.
- Понять, какого масштаба изменения (MDE) мы вообще хотим задетектить нашим тестом. От этого будет зависеть длительность теста. Мелкие колебания метрики обнаружить сложнее, нужно больше пользователей в группах.
- Убедиться, что все необходимые логи-события пишутся. Да, бывает и такое — тест запустили, а посчитать потом не можем!
- Опционально — проверить, как работает наша сплитовалка для A/B-теста. Мы вообще корректно распределяем юзеров по группам? Можно провести А/А-тест и посмотреть, что будет.
- Стартуем тест, ждём расчитанное выше время. Подглядывать в ход теста можно, принимать решение заранее — не стоит. Пожалуй, единственная валидная причина остановить тест раньше срока — адские просадки метрик и/или техническая неисправность функциональности.
- Завершаем тест, считаем основные и контрольные метрики. Пытаемся принять решение!
Комментарии: А/B-тест — бездонная тема для дополнительных вопросов, разговор может зайти в любую область, от метрик до технических нюансов и ошибок. Я, например, люблю задавать вопрос из серии «У вас по итогам теста есть значимая разница между группами, при этом тестируемой фичёй воспользовался 0.1% аудитории в тестовой группе. Что могло произойти?». Это повод сразу пообсуждать и проблемы с логированием, и ложные срабатывания. Но в такие дебри обычно не уходят. А вот статистические вопросы, про то, что такое p-value, как выбрать MDE, как связаны мощность теста и планируемая длительность эксперимента, почти наверняка будут. Постарайтесь закрыть теорию и не совершать уж совсем грубых ошибок, типа утверждения, что p-value — это вероятность ошибиться в утверждении, что группы разные.
Как прокачивать навык: читать разные статьи из серии «Как задизайнтить а/б тест». Тут недостаточно прочитать (и подумать, что понял) одну статью, важно набрать самых разных, каждый автор подсвечивает свои нюансы и делает акценты на разном (например, тут автор пишет, как не надо). Также будет полезно поискать на ютубе записи моковых собеседований (типа такого), в которых обсуждают эту тему. Как раз поймёте, почему важны формулировки. Что ещё изучить:
- Знакомство с A/B-тестами можно начать с этой статьи.
- Тут подробно рассказано про доверительные интервалы.
- Статья "A Dirty Dozen: Twelve P-Value Misconceptions" про некорректные интерпретации p-value. По сути — типичные ошибки, которые озвучивают на собеседованиях.
- Все-все-все технические нюансы про проведение тестов можно изучить в специализированном блогеинструмента Alaytics Toolkit. Материала там много, разной степени сложности и продвинутости, за отправную точку советую взять вот этот, попроще, про стат значимость.
- Про бизнесово-продуктовую часть максимально подробно рассказано в книге "Trustworthy Online Controlled Experiments: A Practical Guide to A/B Testing" (на русском она называется «Доверительное А/В-тестирование»). Метрики, примеры плохих и хороших тестов, подходы к хранению и рефлексии над результатами тестов, всё это там есть.
Тема: Программирование
Спрашивать вас тут будут скорее всего про Python. Если вообще до этого дойдёт! У меня часто вообще вопросов на эту тему не было (или просто спрашивали «Прогать умеешь? Ну и хорошо». Далее мы либо переходили к следующей части собеседования, либо я получал домашнее задание. Пример задачи: В онлайне могут попросить решить задачку по написанию простого алгоритма, типа такой:
«На вход функции подаётся строка, содержащая скобки разного вида и последовательсности — ()[]{}. Нужно написать функцию, которая вернёт True, если порядок скобок верный — все пары скобок открыты и закрыты, нет скобок, которые сначала закрываются, потом открываются, разные виды скобок закрываются в правильном порядке. На '{{[]}}' функция вернёт True. На '}', '([)]' – False».
В офлайн дадут какой-нибудь файл с логами (иногда и без документации/описания — разбирайся сам, ты ж аналитик), с просьбами разной степени конкретности. От «посчитай по этим данным эффективность рекламной кампании и посоветуй дальнейшие шаги», до «Ну, вот лог. Что интересного видишь в данных?». Насчёт второго не шучу, реально получил 500+ мегабайт анонимизирвоанных логов с прода без чёткого указания, что с ними делать.
Решение
На задаче про скобочки останавливаться не буду, конкретно эту вам запросто решит чат-бот. Вам нужно понять, что спросят что-нибудь уровня Leetcode Easy, поэтому есть смысл прорешать некоторое количество таких задачек, просто чтобы набить руку.
Про домашку дам несколько общих комментариев: Во-первых, обратите внимание на формулировки вопросов, и постарайтесь на все вопросы ответить, либо явно дайте понять, почему ответов нет. Например «Ретеншн не считал — у 99% пользователей одна покупка без повторных, выводить когорты не имеет смысла». Во-вторых, постарайтесь максимально поробно, со всеми возможностями Markdown-а оформить своё решение. Целевое состояние — ход мысли настолько подробно описан текстом, что ячейки с кодом вообще можно было вообще удалить без потери смысла. И, пожалуйста, не пишите свои пояснения в комментариях к самому коду, серый шрифт коммента очень тяжело читается. В-третих, не забывайте про подготовительную работу — поисследуйте данные на мусор, пропуски, повторы и прочие сомнительные значения. В-четвёртых, графики. Если в вашем тексте есть какие-то выводы насчёт чисел, то лучше их визуализировать, а не выводить таблицей. И нагляднее, и навык визуализации покажете.
Комментарии: Если у вас случилась секция с лайвкодингом, то вам помогут всё те же советы, что и в секции про SQL. Получили задачу? Не молчите, поговорите про граничные условия, придумайте вслух решение, можете спросить даже у интервьюера, ничего ли не забыли. И потом уже пытайтесь напрограммировать. Как и в случае с SQL прогать возможно придётся прямо в блокноте, без IDE и прочих облегчающих жизнь штучек. Постарайтесь к этому подготовиться и хотя бы основные конструкции языка запомнить на уровне мышечной памяти!
Как прокачивать навык: потренироваться можно на этих ресурсах: https://leetcode.com/https://www.codewars.com/https://www.hackerrank.com/ Не переживайте, если поначалу будете тратить на эти задачи неприлично много времени, пробуйте, разбирайте чужие решения, мучайте чатботов вопросами. С какого-то момента обязательно станет легче!
Тема: Ребусы
Под этой темой я объединил все задачки по математике, статистике и тоерии вероятности, которые не имеют прямого отношения к работе, но их всё равно спрашивают. Особенно, у джунов и стажёров, с которыми пока про реальный опыт не поговорит. Пример задачи: «На перекрёстке зелёный горит 40 секунд, красный — 20. Сколько времени в среднем автомобиль потратит на 100 перекрёстках?»
Решение
Это задача из раздала про геометрическую вероятность. Можно представить себе отрезок длиной в 60 секунд, разделённый на два неравных куска по 20 и 40 секунд. Вероятность пороехать на зеленый пропорциональна длинне этого отрезка — 40/60, или 2/3 или около 0.67. Аналогично и с красным, веротность постоять на светофоре — 0.33. Красный горит от 0 до 20 секунд, есть равная веротяность задержаться любое время в этом интервале. В средем — 10 секунд. Из этого имеем следующее мат ожидание времени проезда через 1 светофор — 0.670 + 0.3310 = 3.3 секунды (67% шанса не потратить ни одной секунды, 33% простоять в среднем 10 секунд). Далее повторяем это упражнение 100 раз (по числу перекрёстков в задаче), получаем ответ в районе 33 секунд.
Комментарии: плохие новости: спрашивать могут что угодно и в самых разных формулировках. Могут быть задачи про кубики, карты, монетки, может и что-то чуть более изощрённое попасться, типа задачки про временные ряды. Мы в своё время любили следующий вопрос: «Как связаны функции распределения вероятности и плотности вероятности?». Хорошие новости: почти всегда это задачки самого базового уровня сложности, типа первой-второй главы соответсвующего учебника. Потому что и сам интервьюер редко помнит, что там было дальше :). Самое главное в таких ребусах — понять, а про какую именно область математики тут вопрос (и, конечно же, рассказать об этом вслух — понять, что задачка про комбинаторику, но не решить — в разы лучше, чем просто тупить 5 минут и сказать «я не знаю, как сделать»). И дальше уже вспоминать аналогичные решённые задачки и попытаться сообразить, какой алгоритм тут подходит. Например, есть популярная задачка на теорему Байеса, про редкую болезнь и тест, который её почти всегда находит: «Есть редкая болезнь (указана вероятность ей заболеть). Есть тест, который при наличии болезни срабатывает в определенном проценте случаев, но имеет некоторую погрешность — даёт ложноположительный результат. Нужно рассчитать вероятность того, что вы реально больны, если тест показал положительный результат». Задачка может попасться вам в таком формулировке, а может придти совсем в другом виде: «Ночью таксист совершил наезд и скрылся с места происшествия. В городе работают две компании такси, «Зеленая» и »Синяя». Дано: 1) 85% такси «Зеленых», 15% такси «Синих»; 2) свидетель опознал такси как «Синее». Свидетель правильно опознает каждый из двух цветов в 80% случаев, в 20% случаев — неправильно. Какова вероятность того, что такси было из «Синей» компании?». Решается по точно такому же алгоритму, как и про болезни-тесты, самое сложное тут — опознать, что вообще спрашивают.
Как прокачивать навык: Сложно дать какую-то одну книгу/статью/курс, которая научит вас наверняка решать все эти ребусы и задачки на сообразительность. Лично я в какой-то момент на очередном собеседовании осознал, что все вопросы по этой теме не сильно отличаются друг от друга, и если не в такой, то в очень похожей формулировке я их уже встречал. И даже если сходу не знаю ответ, то смогу додумать его вслух. Поэтому первый совет:Обязательно разбирайте «ребусы», которые не смогли решить на собесе. Раньше с этим было тяжело, некоторые формулировки не гуглились. Сейчас же (спасибо LLM моделям!) можно просто пообщаться с чат-ботом, он всё доходчиво объяснит. Второй совет, для освежения в памяти матана — ресурс mathprofi.ru. Я сразу даю ссылку на раздел про теорию вероятности. Кубики, монетки, комбинаторика — всё есть. Глкбоко можно не зарываться, но несколько практических задачек стоит разобрать, желательно — поделать самостоятельно.
На этом у меня всё! По верхам в статье основные темы покрыли, а подробно они раскрываются в моём курсе.