Обзор собеседования

50 000 руб IT и разработка 21.10.2026 · 👁 167 просмотров
Обзор собеседования Компания : крупный бигтех-ритейл в РФ Вилка : 250к Должность : дата аналитик Формат : удаленный Грейд : Middle + Дата собеса : сентябрь 2026 Разбираем технический блок: две задачи на SQL, одна на Python и вопрос по матстату. Задачи несложные, но на скорости, без подсказок и с человеком за плечом легко споткнуться о мелочи. Решения спрятаны, сначала попробуйте сами, потом нажмите и сверьтесь. Структура таблиц для SQL-задач users (клиенты): contact_id, client_segment (сегмент) purchases (покупки на уровне SKU): purchase_id, cheque_id (ID чека), contact_id, sku_id, purchase_date, sku_qty (количество штук SKU), sku_price (цена за 1 штуку), region (регион) 1 SQL: метрики по регионам и сегментам Для каждого региона и сегмента посчитать число уникальных клиентов, число оформленных чеков и общую выручку за все время. SELECT p.region, u.client_segment, COUNT(DISTINCT p.contact_id) AS unique_users, COUNT(DISTINCT p.cheque_id) AS cheques, SUM(p.sku_qty * p.sku_price) AS revenue FROM purchases p JOIN users u USING (contact_id) GROUP BY 1, 2; ps таблица на уровне SKU, поэтому один чек размазан по нескольким строкам. COUNT(*) завысил бы число чеков, нужен COUNT(DISTINCT cheque_id). Выручка считается как количество на цену по каждой строке, а не просто сумма цен. И помним про INNER JOIN: покупки клиентов, которых нет в users, потеряются. Если они нужны, берем LEFT JOIN. 2 SQL: VIP с тратами больше 50 000 за 2026 год Вывести contact_id клиентов из сегмента vip, которые за 2026 год суммарно потратили в сети больше 50 000 рублей. SELECT u.contact_id FROM users u JOIN purchases p USING (contact_id) WHERE u.client_segment = 'vip' AND p.purchase_date >= '2026-01-01' AND p.purchase_date < '2027-01-01' GROUP BY u.contact_id HAVING SUM(p.sku_qty * p.sku_price) > 50000; ps порог по сумме ставим в HAVING, потому что WHERE работает до группировки. А год фильтруем диапазоном дат, а не через DATE_PART('year', ...) = 2026. Функция над колонкой мешает использовать индекс и отсечение партиций, диапазон дает это без потерь. 3 Python: уникальные карты в датафрейме Есть датафрейм df_card с данными о кредитных картах: id (ID товара), tariff_code (код тарифа, целое от 1 до 9), sold_flag (1 если продан, 0 если нет), first_activation (сколько дней прошло от продажи до первого использования, None если не продан). Первый пункт: вывести количество уникальных карт. df_card["id"].nunique() # 5 ps считаем по id, а не по строкам: если в данных есть дубли, len(df_card) соврет. nunique() по умолчанию не считает пропуски (NaN). 4 Матстат: время простоя на светофоре Светофор: красный горит 30 секунд, зеленый 30 секунд. Водитель подъезжает в случайный момент. Чему равно математическое ожидание времени простоя? Два случая: 1) с вероятностью 1/2 попадаем на зеленый, простой 0 2) с вероятностью 1/2 попадаем на красный, ждем равномерно от 0 до 30 секунд, в среднем 15 E = 1/2 · 0 + 1/2 · 15 = 7,5 секунды Для красного R и зеленого G общая формула: R² / (2 · (R + G)). При R = G = 30 это 900 / 120 = 7,5. ❤️‍🔥 Подписывайтесь и поддержите канал бустом ↗️ Менторю и помогаю выйти на оффер ❓ А как бы вы считали, если бы красный горел дольше зеленого? @data_driven_bogdan
Откликнуться в Telegram →

⚠️ Никогда не платите «за оформление» или «гарантию трудоустройства» — это признак мошенников. Работа ТРУ не несёт ответственности за содержание вакансии.

🇮🇱 Не нашли подходящую зарплату? В Израиле платят от $3000 Без языка и опыта · жильё и легализация под ключ · официально Смотреть вакансии →