Питання на співбесіді Data Analyst 2026: Повний посібник з SQL, Python та аналітики
Комплексний посібник з питань на співбесіді для аналітиків даних, що охоплює віконні функції SQL, операції Python pandas, статистичні концепції та бізнес-сценарії, які компанії задають у 2026 році.

Питання на співбесіді для аналітика даних у 2026 році перевіряють три ключові сфери: володіння SQL, маніпуляції з даними в Python та вирішення бізнес-задач. Такі компанії, як Google, Meta та Amazon, стандартизували свої технічні співбесіди навколо цих навичок, а віконні функції SQL та операції pandas зустрічаються більш ніж у 80% співбесід згідно зі звітом Glassdoor про тренди найму 2026.
Найсильніші кандидати демонструють не лише знання синтаксису, а й здатність пояснити свій аналітичний підхід. Інтерв'юери оцінюють, чи може кандидат перетворити бізнес-питання на технічний запит і донести результати до нетехнічних зацікавлених сторін.
Віконні функції SQL: Найпоширеніша тема співбесід
Віконні функції зустрічаються майже на кожній технічній співбесіді для аналітиків даних. На відміну від агрегатних функцій, які згортають рядки, віконні функції виконують обчислення над набором рядків, пов'язаних з поточним рядком, зберігаючи дані окремих рядків.
Питання: Обчисліть зарплату кожного працівника як відсоток від загальної зарплати його відділу.
-- employee_salary_percentage.sql
SELECT
employee_id,
department,
salary,
-- SUM as window function preserves each row
ROUND(
salary * 100.0 / SUM(salary) OVER (PARTITION BY department),
2
) AS pct_of_dept_salary
FROM employees
ORDER BY department, pct_of_dept_salary DESC;Клауза PARTITION BY створює окремі вікна для кожного відділу. Зарплата кожного працівника ділиться на суму по його відділу, а не по всій компанії. Ця різниця спантеличує багатьох кандидатів, які замість цього використовують підзапит або з'єднання.
Питання: Знайдіть наростаючий підсумок продажів за датою, скидаючи його щомісяця.
-- monthly_running_total.sql
SELECT
sale_date,
amount,
SUM(amount) OVER (
PARTITION BY DATE_TRUNC('month', sale_date)
ORDER BY sale_date
-- Default frame: RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW
) AS monthly_running_total
FROM sales
ORDER BY sale_date;Інтерв'юери очікують, що кандидати знають поведінку віконної рамки за замовчуванням. Без явної клаузи ROWS або RANGE рамка простягається від початку розділу до поточного рядка, що дає наростаючий підсумок. Практикуйте ці патерни з модулем віконних функцій SQL.
CTE та підзапити: Організація складних запитів
Загальні табличні вирази (CTE) роблять запити читабельними та легкими для підтримки. Інтерв'юери оцінюють, чи структурують кандидати запити логічно, а не пишуть монолітні вирази.
Питання: Знайдіть клієнтів, які здійснювали покупки в послідовні місяці.
-- consecutive_month_purchasers.sql
WITH monthly_purchases AS (
-- Step 1: Get distinct customer-month combinations
SELECT DISTINCT
customer_id,
DATE_TRUNC('month', purchase_date) AS purchase_month
FROM orders
),
with_prev_month AS (
-- Step 2: Add previous purchase month for each customer
SELECT
customer_id,
purchase_month,
LAG(purchase_month) OVER (
PARTITION BY customer_id
ORDER BY purchase_month
) AS prev_purchase_month
FROM monthly_purchases
)
-- Step 3: Filter to consecutive months only
SELECT DISTINCT customer_id
FROM with_prev_month
WHERE purchase_month = prev_purchase_month + INTERVAL '1 month';Цей патерн поєднує CTE з віконною функцією LAG. Розбиття запиту на іменовані кроки демонструє процес мислення, який інтерв'юери цінують не менше, ніж правильну відповідь.
Python Pandas: Основи маніпуляції даними
Питання pandas тестують навички очищення, агрегації та трансформації даних. Інтерв'юери представляють неупорядковані набори даних і просять кандидатів витягти інсайти.
Питання: Маючи DataFrame сесій користувачів, обчисліть середню тривалість сесії за сегментом користувачів, виключаючи сесії коротші за 10 секунд.
# session_analysis.py
import pandas as pd
def analyze_sessions(df: pd.DataFrame) -> pd.DataFrame:
"""Calculate average session duration by user segment.
Args:
df: DataFrame with columns [user_id, segment, session_start, session_end]
Returns:
DataFrame with average duration per segment
"""
# Calculate duration in seconds
df['duration_seconds'] = (
df['session_end'] - df['session_start']
).dt.total_seconds()
# Filter short sessions and aggregate
return (
df[df['duration_seconds'] >= 10]
.groupby('segment')
.agg(
avg_duration=('duration_seconds', 'mean'),
session_count=('user_id', 'count')
)
.round(2)
.reset_index()
)Відповідь демонструє ланцюжок методів, обробку datetime та функцію agg з іменованими виходами. Інтерв'юери перевіряють, чи фільтрують кандидати до агрегації, а не після, що спотворило б середні значення.
Питання: Об'єднайте два DataFrame та належним чином обробіть відсутні значення.
# merge_and_clean.py
import pandas as pd
import numpy as np
def merge_user_data(
users: pd.DataFrame,
transactions: pd.DataFrame
) -> pd.DataFrame:
"""Merge user demographics with transaction history.
Users without transactions get total_spent = 0.
Transactions without user data are excluded.
"""
merged = pd.merge(
users,
transactions.groupby('user_id')['amount'].sum().reset_index(),
on='user_id',
how='left' # Keep all users, even without transactions
)
# Fill NaN for users with no transactions
merged['amount'] = merged['amount'].fillna(0)
merged.rename(columns={'amount': 'total_spent'}, inplace=True)
return mergedПараметр how='left' та явна обробка fillna показують увагу до граничних випадків. Кандидати, які використовують how='inner', втрачають користувачів без транзакцій, що змінює популяцію аналізу.
Готовий до співбесід з Data Analytics?
Практикуйся з нашими інтерактивними симуляторами, flashcards та технічними тестами.
Статистичні концепції: Що аналітики повинні чітко пояснювати
Статистичні питання оцінюють, чи можуть кандидати застосовувати концепції до реальних бізнес-проблем і доносити результати до зацікавлених сторін.
Питання: Продакт-менеджер стверджує, що новий процес оформлення замовлення збільшив конверсію на 5%. Тест тривав один тиждень з 10 000 користувачів на варіант. Чи є цей результат статистично значущим?
Повна відповідь охоплює розмір вибірки, статистичну потужність та практичну значущість:
-
Обчисліть стандартну похибку: Для показників конверсії SE = sqrt(p(1-p)/n). При базовій конверсії 10% та n=10 000, SE дорівнює приблизно 0,003.
-
Обчисліть z-оцінку: 5% відносне зростання означає, що нова конверсія становить 10,5%. Різниця в 0,5 відсоткового пункту, поділена на об'єднану SE, визначає значущість.
-
Врахуйте практичну значущість: Навіть якщо p < 0,05, зростання на 0,5 відсоткового пункту може не виправдати інженерних витрат на новий процес.
-
Перевірте на заплутувальні фактори: Один тиждень охоплює патерни вихідних та робочих днів, але може пропустити місячні цикли або сезонні ефекти.
Інтерв'юери цінують кандидатів, які ставлять під сумнів припущення, а не механічно обчислюють p-значення. Модуль принципів візуалізації даних охоплює представлення цих результатів.
Питання: Поясніть різницю між кореляцією та причинно-наслідковим зв'язком на бізнес-прикладі.
Продажі морозива та випадки утоплення позитивно корелюють. Обидва зростають влітку через заплутувальну змінну температури. Рекомендувати скорочення виробництва морозива для запобігання утопленням — означає плутати кореляцію з причинністю.
У бізнес-аналітиці: рекламні витрати та дохід часто корелюють, але зв'язок може відображати те, що компанії збільшують рекламні витрати, коли прогнози доходів вже сильні, а не те, що реклама генерує дохід. Встановлення причинності вимагає контрольованих експериментів або методів причинного висновку, таких як різниця в різницях.
Бізнес-кейси: Перетворення проблем на запити
Кейсові питання тестують здатність розкладати неоднозначні бізнес-проблеми на конкретні аналітичні кроки.
Питання: Утримання користувачів впало на 15% минулого місяця. Як би ви це досліджували?
Структурований підхід:
-
Валідуйте метрику: Підтвердіть, що визначення утримання відповідає історичним обчисленням. Перевірте проблеми з пайплайном даних або зміни в трекінгу.
-
Сегментуйте падіння: Розбийте утримання за когортою користувачів, каналом залучення, типом пристрою та географією. 15% загальне падіння може бути 50% падінням в одному сегменті, що маскує стабільність в інших.
-
Визначте час: Чи утримання падало поступово чи раптово? Раптове падіння вказує на зміну продукту або баг. Поступове зниження вказує на ринкові або конкурентні фактори.
-
Корелюйте з подіями: Зіставте часову шкалу з релізами продукту, маркетинговими кампаніями, запусками конкурентів та зовнішніми подіями.
-
Сформулюйте гіпотези: На основі патернів сегментації запропонуйте тестовані пояснення та дані, необхідні для підтвердження або спростування кожного з них.
-- retention_by_cohort.sql
WITH user_cohorts AS (
SELECT
user_id,
DATE_TRUNC('week', created_at) AS cohort_week
FROM users
),
weekly_activity AS (
SELECT
user_id,
DATE_TRUNC('week', activity_date) AS activity_week
FROM user_events
)
SELECT
c.cohort_week,
a.activity_week,
COUNT(DISTINCT a.user_id) AS active_users,
COUNT(DISTINCT c.user_id) AS cohort_size,
ROUND(
COUNT(DISTINCT a.user_id) * 100.0 / COUNT(DISTINCT c.user_id),
1
) AS retention_pct
FROM user_cohorts c
LEFT JOIN weekly_activity a
ON c.user_id = a.user_id
AND a.activity_week >= c.cohort_week
GROUP BY c.cohort_week, a.activity_week
ORDER BY c.cohort_week, a.activity_week;Цей запит когортного аналізу генерує дані, необхідні для кроку 2. Модуль когортного утримання охоплює варіації цього патерну.
Домашні завдання: Що оцінюють рецензенти
Багато компаній включають домашні завдання тривалістю від 2 до 4 годин. Рецензенти оцінюють подання за якістю коду, аналітичною строгістю та комунікацією.
Типове завдання: Маючи набір даних транзакцій електронної комерції, визначте фактори, що передбачають відтік клієнтів.
Сильні подання мають спільні характеристики:
- Спочатку дослідницький аналіз: Описова статистика, графіки розподілу та оцінка відсутніх значень перед моделюванням
- Інженерія ознак: Створення релевантних ознак, таких як давність, частота, грошова цінність (RFM) та індикатори трендів
- Обґрунтування вибору моделі: Пояснення, чому логістична регресія або випадковий ліс підходить для проблеми, а не просто запуск налаштувань за замовчуванням
- Підхід до валідації: Використання розбиття на основі часу замість випадкового, щоб уникнути витоку даних
- Чітка комунікація: Виконавче резюме на початку, технічні деталі в додатку, візуалізації, що підтримують висновки
# churn_analysis_structure.py
import pandas as pd
from sklearn.model_selection import TimeSeriesSplit
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import precision_recall_curve, auc
def create_rfm_features(df: pd.DataFrame, analysis_date: str) -> pd.DataFrame:
"""Create Recency, Frequency, Monetary features per customer."""
analysis_dt = pd.to_datetime(analysis_date)
rfm = df.groupby('customer_id').agg(
recency=('order_date', lambda x: (analysis_dt - x.max()).days),
frequency=('order_id', 'nunique'),
monetary=('order_total', 'sum')
).reset_index()
return rfm
def evaluate_with_time_split(
X: pd.DataFrame,
y: pd.Series,
n_splits: int = 5
) -> list:
"""Evaluate model using time-based cross-validation."""
tscv = TimeSeriesSplit(n_splits=n_splits)
scores = []
for train_idx, val_idx in tscv.split(X):
model = RandomForestClassifier(n_estimators=100, random_state=42)
model.fit(X.iloc[train_idx], y.iloc[train_idx])
y_pred_proba = model.predict_proba(X.iloc[val_idx])[:, 1]
precision, recall, _ = precision_recall_curve(y.iloc[val_idx], y_pred_proba)
scores.append(auc(recall, precision))
return scoresКод демонструє інженерію ознак, релевантну для домену, та відповідну методологію валідації для даних часових рядів.
Ключові висновки для співбесід Data Analyst у 2026 році
-
Віконні функції SQL з
PARTITION BYтаORDER BYзустрічаються на більшості технічних співбесід. Практикуйте обчислення наростаючих підсумків, відсотків та рангів. -
Питання Python pandas наголошують на ланцюжку методів, агрегаціях groupby та операціях merge з належною обробкою відсутніх значень.
-
Статистичні питання вимагають пояснення концепцій бізнес-термінами. Інтерв'юери оцінюють здатність до комунікації, а не лише технічні знання.
-
Бізнес-кейси тестують структуровану декомпозицію проблем. Починайте з валідації метрики, потім сегментуйте для ізоляції проблеми.
-
Домашні завдання оцінюються за якістю коду та комунікацією не менше, ніж за аналітичною точністю. Включіть виконавче резюме та поясніть свої рішення.
-
Модуль BigQuery просунутий рівень та Модуль Python pandas основи надають додаткові практичні питання, узгоджені з поточними патернами співбесід.
Починай практикувати!
Перевір свої знання з нашими симуляторами співбесід та технічними тестами.
Чи знайдеш ти помилку в Data Analytics?
Справжній фрагмент коду, прихована помилка, одна спроба на день. Щоб спробувати, акаунт не потрібен.

Автор:
Anthony Fillion-MailletЗасновник SharpSkill
Fullstack-розробник понад 10 років. Керує SharpSkill і відповідає за все, що тут публікується.
Оновлено 8 вересня 2026 р.
Теги
Поділитися
Пов'язані статті

Pandas 3.0 у 2026: Нові API, Критичні Зміни та Питання для Співбесіди
Pandas 3.0 впроваджує Copy-on-Write, PyArrow strings та pd.col(). Аналіз breaking changes, шаблонів міграції та питань для співбесід з аналітики даних.

Топ-25 запитань на співбесіді з Data Analytics у 2026 році
Повний посібник з 25 найпоширеніших запитань на співбесідах для data analyst у 2026 році. SQL-запити, Python Pandas, статистика, Power BI та поведінкові запитання з модельними відповідями та кодом.

dbt для аналітиків даних у 2026: моделювання, тестування та питання на співбесідах
dbt для аналітиків даних — SQL-моделювання, тестування якості даних, структура проєктів та підготовка до питань на співбесідах з практичними прикладами.