Обзор собеседования (Ч. 1)
Обзор собеседования (Ч. 1)
Компания : USETECH (аутстафф)
Вилка : +-250к net
Должность : Дата аналитик
Формат : Удаленный
Этапы собеседования : HR – Тех. собес 1 (внутренний) – Тех. собес 2 (у заказчика) – Offer
Грейд : Middle / Middle +
Дата собеседования : декабрь 2025
Давно не было обзоров и вот опять! Тех. собес был оч длинный - около 1.5-2х часов
Cначала сама галера собесит, дальше уже напрямую заказчик. Как сказала HR, иногда могут сразу напрямую к заказчику направить на собес (минуя внутренний тех. этап).
Из явных плюсов - удобно для второй работы, тк могут оформлять по ИП/ГПХ.
Сам обзор разобью на 2 части - материала много и он показался интересным. В данной части разберем техничку SQL + Python, а в след. блоке обсудим теор/практические вопросы, которые поднимались на собесе.
Технический блок: SQL + Python
1 Выручка по месяцам
Посчитать месячную выручку по таблице orders.
Решение:
SELECT
DATE_TRUNC('month', order_date) AS month_id,
SUM(amount) AS rev
FROM orders
GROUP BY 1;
2 Клиенты с повторными заказами
Найти клиентов, у которых больше одного заказа.
Решение:
SELECT customer_id
FROM orders
GROUP BY 1
HAVING COUNT(*) > 1;
3 Порядковый номер заказа клиента
Пронумеровать заказы каждого клиента по дате.
Решение:
SELECT customer_id, order_id,
ROW_NUMBER() OVER (
PARTITION BY customer_id
ORDER BY order_date ) AS rn
FROM orders;
4 Доля сотрудников с зарплатой выше порога
Посчитать долю сотрудников с зарплатой выше 50 000. employee_salaries (employee_id, salary)
Решение:
SELECT
COUNT(*) FILTER (WHERE salary > 50000) * 1.0 / COUNT(*) AS share
FROM employee_salaries; ps проверяют знание FILTER и понимание целочисленного деления (в SQL int / int дает 0 без приведения к float, те если не умножим числитель/знаменатель на 1.0/ не переведем его в float - в выводе будет 0)
5 Корреляция зарплаты и перформанса
Оценить корреляцию между зарплатой и performance score. employee_salaries (employee_id, salary, performance_score)
Решение:
SELECT
CORR(salary, performance_score) AS corr
FROM employee_salaries; ps база по статистике + допом был вопрос почему корреляция не равна причинности
(показывает наличие связи, но не объясняет (не)влияния друг на друга)
6 Средняя зарплата и разброс по департаментам
Посчитать среднюю зарплату и стандартное отклонение по департаментам. employee_salaries (employee_id, department_id, salary)
Решение:
SELECT department_id,
AVG(salary) AS avg_sal,
STDDEV(salary) AS std_sal
FROM employee_salaries
GROUP BY 1; ps базовая статистика в SQL
Python
7 Агрегация по категориям
Посчитать суммарные net sales по категориям. df (category, net_sales)
Решение: result = df.groupby("category", as_index=False).agg( total_net=("net_sales", "sum")) ps база по работе с пандас
8 Флаг «выше среднего»
Создать бинарный флаг: продажи выше среднего. df (sales)
Решение: avg_sales = df["sales"].mean() df["flag"] = (df["sales"] > avg_sales).astype(int)
9 MinMaxScaler
Нормализовать продажи через MinMaxScaler df (sales) (Написать самому, без import'a)
Решение: df["sales_norm"] = (
(df["sales"] - df["sales"].min()) /
(df["sales"].max() - df["sales"].min()) ) ps это один из подходов к нормализации данных - приведение признаков к единому масштабу [0;1], чтобы признаки были сопоставимы между собой (часто требуется для обучения моделей). Альтернатива - стандартизация, данные приводятся к среднему 0 (от значения отнимается среднее) и стандартному отклонению 1 (делится на стандартное отклонение)
10 NaN / None / NA
*️⃣ None - объект Python (NoneType), обозначает отсутствие значения, используется без дополнительных библиотек
*️⃣ NaN - специальное числовое значение типа float («не число»), применяется для пропусков в числовых данных (math / numpy / pandas)
*️⃣ NA - тип pandas NA, используется в pandas как универсальное обозначение пропусков и совместим с NaN
В целом, задачки не сложные, по теор. блоку спрос был посерьезнее, но это уже во 2 части
А ты бы решил все задачки?
👇 @data_driven_bogdan
Откликнуться в Telegram →
⚠️ Никогда не платите «за оформление» или «гарантию трудоустройства» — это признак мошенников. Работа ТРУ не несёт ответственности за содержание вакансии.