Все материалы
Продуктовая аналитикапрактикумсредний

Логические задачи на собеседовании аналитика: 11 задач с разбором

Логические задачи, вероятности «на салфетке» и задачи на оценку для собеседования аналитика: 11 авторских задач с ходом рассуждения, ответом и типичной ошибкой.

КейсПрактика23 октября 2026 г.15 мин

Посреди разговора о SQL интервьюер вдруг просит оценить, сколько поездок на такси совершают в Москве за день. Это не проверка эрудиции: точного числа он сам может не знать. Ему интересно, как вы разбиваете незнакомую задачу на части, какие допущения называете и замечаете ли собственную ошибку. Ниже одиннадцать авторских задач трёх типов — логика и перебор, вероятность «на салфетке», оценка объёма. У каждой условие, рассуждение вслух, ответ и ошибка, которую чаще всего слышат на собеседовании. Ответы проверены перебором и симуляцией в Python.

Зачем аналитику логические задачи и задачи на оценку

В работе аналитика половина вопросов приходит без данных: «Сколько нам нужно серверов под новую фичу?», «Может ли это падение быть случайным?», «Какой из трёх отчётов врёт?». Короткая задача на собеседовании — уменьшенная копия такого вопроса. За пять минут видно, начинает ли кандидат с определения, держит ли в голове несколько условий и проверяет ли ответ на здравый смысл.

Поэтому в ответе важнее числа три вещи. Первая — структура: вы сказали, из каких частей собираете ответ, до того как начали считать. Вторая — явные допущения: «примем 40%, если окажется 20%, ответ уменьшится вдвое». Третья — проверка: прикидка с другой стороны или подстановка граничного случая. Неточное число с ясной логикой ценится выше угаданного точного.

Таблица ниже — шпаргалка по первой фразе ответа: она должна показать план.

Тип задачи, что проверяют и как начинать ответ
Тип задачиЧто проверяютКак начинать ответ
Логика и переборУмение держать несколько условий и не терять варианты«Вариантов немного, переберу каждый и проверю условия»
Поиск за минимум шаговПонимание, сколько информации даёт одна проверка«Каждая проверка делит кандидатов на части, считаю худший случай»
Вероятность «на салфетке»Знаменатель, независимость, условная вероятность«Сначала уточню, что считаю независимым и что случайно»
Ожидание и «сколько в среднем»Разбиение процесса на этапы«Разобью процесс на этапы и сложу средние по этапам»
Оценка объёма (Fermi)Декомпозиция и чувствительность к допущениям«Соберу оценку из множителей и назову диапазон»
Оценка мощности и пикаРазличие среднего и пиковой нагрузки«Посчитаю спрос в самый загруженный час, а не в среднем»

Как рассуждать вслух: четыре хода

Повторите условие своими словами и задайте один-два вопроса, которые меняют ответ: «Метрики независимы?», «Считаем жителей или и приезжих тоже?». Затем назовите план одной фразой. Посчитайте, проговаривая промежуточные числа: интервьюер исправит ошибку на втором шаге, а не после ответа. В конце проверьте результат с другой стороны и скажите, какое допущение сильнее всего его двигает.

Молчать минуту, а потом выдать число — худший сценарий, даже если число верное. Интервьюер не видит, угадали вы или посчитали. Если застряли, скажите, на чём именно: «Не понимаю, считать ли повторные заказы одного человека». Это тоже рассуждение, и его можно продолжить вместе.

Задача 1. Три выгрузки и одна правдивая подпись

Условие. В папке три выгрузки A, B и C, свежая из них ровно одна. Коллеги подписали файлы: на A — «свежая в B», на B — «свежая не в A», на C — «свежая не в B». Известно, что правдива ровно одна подпись. Где свежая выгрузка?

Рассуждение. Вариантов всего три, поэтому проще перебрать их, чем искать хитрый ход. Пусть свежая в B: подписи на A и B верны — две правды, не подходит. Пусть в C: верны подписи на B и C — снова две. Пусть в A: подпись на A ложна, на B ложна, на C верна — ровно одна правда.

Ответ. Свежая выгрузка в A.

Типичная ошибка. Начать с доверия одной из подписей («раз на B написано, что не в A, значит, не в A») и строить цепочку от неё. При условии «правдива ровно одна» любая подпись может оказаться ложной, а перебор трёх вариантов занимает полминуты.

Задача 2. Четыре аналитика и планёрка

Условие. Аня, Борис, Вика и Глеб по одному показывают результаты на планёрке с понедельника по четверг. Борис не выступает ни в понедельник, ни в четверг. Вика выступает на следующий день после Ани. Глеб выступает раньше Бориса. Кто в какой день?

Рассуждение. Начните с самого жёсткого условия. Борис — во вторник или в среду. Если в среду, Глеб — в понедельник или во вторник, а пара «Аня, затем Вика» должна занять два соседних дня из оставшихся; оставшиеся дни не соседние, противоречие. Значит, Борис во вторник, Глеб в понедельник, а Аня и Вика занимают среду и четверг именно в таком порядке.

Ответ. Понедельник — Глеб, вторник — Борис, среда — Аня, четверг — Вика. Решение единственное: перебор всех 24 расстановок в блоке ниже оставляет одну.

Типичная ошибка. Найти одно подходящее расписание и остановиться. Интервьюер может спросить: «А другие есть?» Сильный ответ показывает, почему других нет, — как здесь через противоречие при Борисе в среду.

pythonPython: перебор для задач 1 и 2
from itertools import permutations

# Задача 1: где свежая выгрузка, если правдива ровно одна подпись
for fresh in 'ABC':
    signs = [fresh == 'B',    # на A: «свежая — в B»
             fresh != 'A',    # на B: «свежая — не в A»
             fresh != 'B']    # на C: «свежая — не в B»
    if sum(signs) == 1:
        print('Задача 1: свежая выгрузка в', fresh)

# Задача 2: кто в какой день выступает на планёрке
days = ['Пн', 'Вт', 'Ср', 'Чт']
names = ['Аня', 'Борис', 'Вика', 'Глеб']
for order in permutations(range(4)):
    d = dict(zip(names, order))
    if d['Борис'] in (0, 3):           # Борис не в понедельник и не в четверг
        continue
    if d['Вика'] != d['Аня'] + 1:      # Вика выступает на следующий день после Ани
        continue
    if d['Глеб'] > d['Борис']:         # Глеб раньше Бориса
        continue
    print('Задача 2:', {n: days[d[n]] for n in names})

# Задача 1: свежая выгрузка в A
# Задача 2: {'Аня': 'Ср', 'Борис': 'Вт', 'Вика': 'Чт', 'Глеб': 'Пн'}

Задача 3. Сто релизов и сломанная метрика

Условие. После релиза 0 конверсия считалась правильно, после релиза 100 — уже нет. Ошибку внёс один из ста релизов с 1 по 100. Одна проверка — развернуть нужную версию на тестовом стенде и пересчитать метрику, это час работы. Сколько проверок понадобится в худшем случае?

Рассуждение. Каждая проверка отвечает «уже сломано» или «ещё нет», то есть делит кандидатов на две группы. Проверяем релиз 50: если сломано, виновник среди 1–50, иначе среди 51–100. Каждый шаг вдвое сокращает список: 100, 50, 25, 13, 7, 4, 2, 1. Получается семь проверок. Короче не выйдет: за шесть ответов «да или нет» можно различить не больше 2⁶ = 64 вариантов, а у нас сто.

Ответ. Семь проверок. Это та же идея, что у git bisect.

Типичная ошибка. Ответить «50 — проверяю по одному с середины» или забыть уточнить, надёжна ли проверка. Если метрика шумит и один пересчёт может ошибиться, бинарный поиск уйдёт не в ту половину. Хороший кандидат сам спросит, насколько однозначен результат одной проверки.

Задача 4. A/A-тест на двадцати метриках

Условие. Команда запустила A/A-тест: обе группы видят одно и то же. На дашборде 20 метрик, каждая проверяется на уровне значимости 5%. Какова вероятность, что хотя бы одна метрика покажет «значимую» разницу?

Рассуждение. Уточняем: считаем метрики независимыми. Для одной метрики ложная тревога случается с вероятностью 0,05, её отсутствие — 0,95. Отсутствие тревоги на всех двадцати — 0,95²⁰ ≈ 0,358. Значит, хотя бы одна тревога — 1 − 0,358 ≈ 0,64. В среднем «значимой» окажется одна метрика из двадцати.

Ответ. Около 64% при независимых метриках. Реальные метрики связаны (выручка и число заказов растут вместе), поэтому настоящая вероятность ниже, но всё равно далека от 5%.

Типичная ошибка. Сказать «5%» или сложить: 20 × 5% = 100%. Сложение даёт ожидаемое число ложных тревог, а не вероятность хотя бы одной; на тридцати метриках оно дало бы 150%, чего не бывает.

Задача 5. Совпадения промокодов

Условие. Маркетинг раздаёт 5 000 случайных шестизначных промокодов, всего вариантов 1 000 000. Коды генерируются независимо, без проверки на повторы. Насколько вероятно, что два клиента получат одинаковый код?

Рассуждение. Первая мысль — 5 000 из миллиона, полпроцента. Но совпадение — свойство пары кодов, а пар много: 5 000 × 4 999 / 2 ≈ 12,5 млн. Каждая пара совпадает с вероятностью одна миллионная, так что в среднем ожидается около 12,5 совпавших пар. Вероятность не встретить ни одной ничтожна.

Ответ. Совпадение почти гарантировано: вероятность 0,999996. Половину шансов на повтор дают уже 1 178 кодов. Вывод для продукта — проверять уникальность при генерации, а не надеяться на большой алфавит.

Типичная ошибка. Считать долю занятых вариантов (0,5%) вместо числа пар. Это та же ловушка, что в задаче о днях рождения, только с деньгами.

pythonPython: точный расчёт и симуляция для задач 4 и 5
import math
import numpy as np

rng = np.random.default_rng(2026)

# Задача 4: A/A-тест, 20 независимых метрик, порог 5%
exact = 1 - 0.95 ** 20
sim = (rng.random((100_000, 20)) < 0.05).any(axis=1).mean()
print(f'A/A: точно {exact:.4f}, симуляция {sim:.4f}')

# Задача 5: 5 000 случайных шестизначных кодов из 1 000 000 вариантов
N, n = 1_000_000, 5_000
p_no_clash = math.prod((N - i) / N for i in range(n))
clash = np.mean([len(np.unique(rng.integers(0, N, n))) < n for _ in range(2_000)])
print(f'Коды: P(хотя бы одно совпадение) = {1 - p_no_clash:.6f}, '
      f'симуляция {clash:.4f}, ожидаемо пар-совпадений {n * (n - 1) / 2 / N:.1f}')

# A/A: точно 0.6415, симуляция 0.6431
# Коды: P(хотя бы одно совпадение) = 0.999996, симуляция 1.0000, ожидаемо пар-совпадений 12.5

Задача 6. Тревога антифрода

Условие. Мошеннических операций 1%. Модель замечает 90% из них, но тревожит и на 5% честных операций. Модель подняла тревогу. Какова вероятность, что операция действительно мошенническая?

Рассуждение. Удобнее считать в людях, а не в процентах. Возьмём 10 000 операций: мошеннических 100, модель ловит 90. Честных 9 900, ложных тревог 5% от них — 495. Всего тревог 585, из них настоящих 90. 90 / 585 ≈ 0,154.

Ответ. Около 15%. Примерно пять из шести тревог ложные — не потому, что модель плохая, а потому, что мошенничество редкое и даже малая доля ложных тревог на большой массе честных операций перевешивает.

Типичная ошибка. Ответить «90%», перепутав вероятность тревоги при мошенничестве с вероятностью мошенничества при тревоге. Если спросят, что делать с таким потоком, предложите ручную проверку, начиная с самых подозрительных операций, а не блокировку всех подряд.

pythonPython: формула Байеса и симуляция миллиона операций
import numpy as np

rng = np.random.default_rng(2026)
n = 1_000_000
fraud = rng.random(n) < 0.01                       # 1% операций — мошенничество
alert = np.where(fraud,
                 rng.random(n) < 0.90,             # модель ловит 90% мошенничества
                 rng.random(n) < 0.05)             # и тревожит на 5% честных операций

exact = 0.01 * 0.90 / (0.01 * 0.90 + 0.99 * 0.05)
print(f'P(мошенничество | тревога): точно {exact:.4f}, симуляция {fraud[alert].mean():.4f}')

# P(мошенничество | тревога): точно 0.1538, симуляция 0.1542

Задача 7. Сколько заказов до полной коллекции

Условие. В каждый заказ кладут одну случайную наклейку из пяти видов, все виды равновероятны. Сколько заказов в среднем нужно сделать, чтобы собрать все пять?

Рассуждение. Разбейте процесс на этапы. Первая наклейка всегда новая — один заказ. Дальше новая выпадает с вероятностью 4/5, и ждать её в среднем 5/4 заказа. Затем 5/3, 5/2 и 5/1. Сумма: 1 + 1,25 + 1,67 + 2,5 + 5 ≈ 11,4. Половину времени съедает последняя наклейка.

Ответ. В среднем около 11,4 заказа. Разброс большой: примерно в 17% случаев понадобится больше 15 заказов, а собрать коллекцию за пять заказов удаётся меньше чем в 4% случаев.

Типичная ошибка. Ответить «5» или «в среднем 5 заказов на вид, значит 25». Для маркетинга вывод другой: если акция обещает приз за полную коллекцию, затраты определяет хвост, а не среднее. Здесь пригодится понятие математического ожидания по этапам.

Задача 8. Поездки на такси в Москве за день

Условие. Оцените, сколько поездок на такси совершают жители Москвы за обычный будний день. Готовой статистики нет, интернета тоже.

Рассуждение. Население Москвы — около 13,3 млн (оценка Мосстата на 1 января 2025 года — 13 274 285 человек). Детей и тех, кто сам такси не заказывает, отбросим: примем 10 млн потенциальных пассажиров. Допустим, 40% из них ездят на такси хотя бы раз в месяц, в среднем 4 поездки в месяц. Получаем 10 млн × 0,4 × 4 / 30 ≈ 530 тыс. поездок в день.

Ответ. Порядка полумиллиона поездок в день по нашим допущениям. Если доля ездящих от 30% до 50%, а частота от 2 до 6 поездок в месяц, оценка ложится в диапазон от 200 тыс. до 1 млн. Частота двигает ответ сильнее, чем население, — её и стоило бы уточнять в первую очередь.

Типичная ошибка. Назвать одно число без диапазона или выдавать допущение за факт («40% москвичей ездят на такси»). Ещё одна — забыть, что не сделано: приезжие, туристы и поездки в аэропорты в оценку не вошли. Это стоит сказать вслух.

Оценка поездок: три сценария на одних и тех же 10 млн пассажиров
СценарийДоля ездящихПоездок в месяцПоездок в день
Нижний30%2200 тыс.
Базовый40%4≈ 530 тыс.
Верхний50%61 млн

Задача 9. Сколько событий пишет приложение

Условие. У мобильного приложения 200 тыс. активных пользователей в день. Команда подключает подробную аналитику событий. Сколько места займут сырые события за год?

Рассуждение. Допущения: 3 сессии на активного пользователя в день, 40 событий за сессию, одно событие с параметрами весит около 1 КБ. В день: 200 000 × 3 × 40 = 24 млн событий, это 24 ГБ. За год — 24 ГБ × 365 ≈ 8,8 ТБ без сжатия и копий.

Ответ. Около 9 ТБ сырых событий в год при наших допущениях.

Типичная ошибка. Умножать на число пользователей за месяц вместо дневных или забыть о повторной отправке событий при плохой связи. Хороший ответ предложит, какое допущение проверить первым: число событий за сессию берётся из плана трекинга, и оно чаще всего оказывается больше, чем думали.

Задача 10. Курьеры в вечерний пик

Условие. Сервис доставки получает 6 000 заказов в день и работает 12 часов. Курьер успевает 2,5 заказа в час. Сколько курьеров нужно на линии?

Рассуждение. Среднее обманет: 6 000 / 12 / 2,5 = 200 курьеров, но заказы приходят неравномерно. Уточняем или допускаем: 30% заказов приходится на вечерние два часа. Это 1 800 заказов за 2 часа. Один курьер за это время отвезёт 5, значит, нужно 360 человек. Добавим 20% на опоздания и неявки — около 430.

Ответ. Порядка 430 курьеров в пик при 200 в среднем за день. Больше чем вдвое — и ровно этой разницы не хватает сервису, который планирует смены по средним.

Типичная ошибка. Считать по суточному среднему. Если спросят, как обойтись меньшим числом курьеров, назовите рычаги сглаживания пика: повышенная стоимость доставки, слоты на завтра, более долгое обещанное время доставки.

Задача 11. Выручка кофейни у бизнес-центра

Условие. Кофейня на первом этаже бизнес-центра, где работает 3 000 человек. Работает 12 часов, за стойкой два бариста. Оцените дневную выручку.

Рассуждение. Оцениваем с двух сторон. Спрос: пусть 20% сотрудников покупают кофе каждый день, в среднем 1,2 чашки — 720 чашек. Предложение: бариста готовит чашку за 1,5 минуты, двое делают 80 чашек в час, 960 за день. Спрос меньше мощности, и кажется, что продадут все 720. Но половина спроса приходится на утро с 8 до 10: это 360 желающих, а за два часа можно сделать только 160. Если ушедшие из очереди не возвращаются, теряем 200 чашек и продаём 520. При среднем чеке 250 ₽ выручка — 130 тыс. ₽ в день.

Ответ. Около 130 тыс. ₽ в день по нашим допущениям, а не 180 тыс., которые дал бы спрос без учёта пика. Отсюда и рекомендация: третий бариста утром может окупиться быстрее, чем реклама.

Типичная ошибка. Посчитать только спрос или только мощность. Сверка двух независимых оценок — лучший способ проверить Fermi-ответ: если они расходятся в разы, одна из моделей что-то упускает.

Кофейня: спрос против мощности утром
ПоказательРасчётИтог
Спрос за день3 000 × 20% × 1,2720 чашек
Мощность за день2 бариста × 40 в час × 12 ч960 чашек
Спрос с 8 до 10720 × 50%360 чашек
Мощность с 8 до 1080 в час × 2 ч160 чашек
Продано720 − (360 − 160)520 чашек
Выручка520 × 250 ₽130 000 ₽

Ошибки, которые интервьюер замечает в первую минуту

Скрытые допущения. Задача о вероятности почти всегда держится на том, что считается случайным и независимым. Классический пример — парадокс Монти Холла: ответ меняется, если ведущий открывает дверь наугад, а не зная, где приз. Проговорите такие предпосылки вслух, даже если они кажутся очевидными.

Число без проверки. После расчёта сделайте прикидку: 530 тыс. поездок в день на 10 млн человек — это одна поездка на двадцать человек в день. Звучит правдоподобно? Если бы вышло по поездке на каждого, где-то ошибка.

Ложная точность. «Ровно 533 333 поездки» звучит хуже, чем «порядка полумиллиона, от 200 тыс. до 1 млн». Округляйте до порядка и показывайте диапазон.

Как тренироваться

Решайте вслух и записывайте себя на диктофон. Через день переслушайте: где вы молчали, где перескочили через шаг, где назвали допущение фактом. Для вероятностей возьмите привычку проверять ответ десятью строками симуляции — как в блоках выше. Это быстрее, чем спорить с собой, и на собеседовании можно сказать: «Я бы проверил это симуляцией».

Логические задачи — только один этап отбора. Основной вес у SQL, метрик и кейсов, поэтому не тратьте на головоломки больше пятой части подготовки. План по всем этапам и список тем — в отдельном материале о подготовке, а задачи на SQL с автоматической проверкой можно решать прямо в браузере.

Частые вопросы

Дают ли логические задачи на собеседовании аналитика всегда?

Нет. Во многих процессах отбора их нет вовсе: разговор идёт о SQL, метриках и кейсе. Но задача на оценку может прозвучать и внутри кейса, поэтому пара тренировок не помешает.

Что делать, если не знаю ответа на сложную логическую задачу?

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

Нужно ли помнить реальные числа для задач на оценку?

Нет. Достаточно назвать допущение и показать, как от него зависит ответ. Если число нужно, интервьюер его даст.

Можно ли пользоваться калькулятором или ноутбуком?

Спросите. Обычно задачи подобраны так, чтобы считать на бумаге, а округление до удобных чисел не считается ошибкой, если вы о нём сказали.

Продолжить чтение
Вся библиотека