SQLLab
Все статьи

Как оценить SQL-навыки без live-собеседования

Альтернативные способы оценки SQL-навыков кандидатов: тестовые задания, портфолио, GitHub, платформенные сертификаты.

7 марта 2026 г.·4 мин чтения·

Live-собеседование — стресс. Многие сильные кандидаты хуже показывают себя под давлением времени и взгляда интервьюера. Существуют другие форматы оценки SQL-навыков, которые дают более объективную картину.

Проблемы live-кодинга

Исследования показывают, что стрессовое интервью с живым кодированием:

  • Снижает результативность кандидатов на 20–40%
  • Сильнее влияет на интровертов и людей с синдромом самозванца
  • Создаёт ложные негативы: хороший специалист провалился из-за стресса
  • Требует значительного времени технических специалистов

Это не значит, что live-кодинг бесполезен — но не должен быть единственным методом оценки.

Метод 1: Асинхронное тестовое задание

Кандидат получает задание и выполняет его в удобное время за установленный срок (обычно 2–3 дня).

Формат задания:

Вам предоставлен доступ к тестовой базе данных PostgreSQL.
Схема: orders, customers, products, categories.

Задачи (выполните в любом порядке):
1. Найдите топ-5 категорий по выручке за Q1 2026
2. Рассчитайте ежемесячный retention rate новых клиентов
3. Для каждого клиента найдите его самую популярную категорию покупок
4. Оптимизируйте прилагаемый медленный запрос (объясните, что изменили и почему)

Ожидаем: SQL-запросы + краткий комментарий к каждому
Время: по готовности в течение 3 рабочих дней

Плюсы: кандидат может пользоваться документацией (как в реальной работе), нет стрессового фактора времени.

Минусы: дольше процесс, риск помощи извне.

Метод 2: Портфолио проектов

Попросите кандидата показать примеры реальных запросов из предыдущих проектов.

Что смотреть:

  • Сложность запросов (JOIN, CTE, оконные функции?)
  • Стиль кода (читаемость, комментарии)
  • Контекст: решал ли кандидат реальные бизнес-задачи?

Пример хорошего портфолио-запроса:

-- Анализ воронки регистрации (реальный проект, e-commerce)
-- Цель: найти шаги с наибольшим оттоком

WITH funnel_steps AS (
    SELECT
        user_id,
        MAX(CASE WHEN step = 'page_view'        THEN 1 ELSE 0 END) AS s1,
        MAX(CASE WHEN step = 'add_to_cart'      THEN 1 ELSE 0 END) AS s2,
        MAX(CASE WHEN step = 'checkout_start'   THEN 1 ELSE 0 END) AS s3,
        MAX(CASE WHEN step = 'payment'          THEN 1 ELSE 0 END) AS s4,
        MAX(CASE WHEN step = 'order_complete'   THEN 1 ELSE 0 END) AS s5
    FROM user_events
    WHERE session_date BETWEEN '2026-01-01' AND '2026-03-31'
    GROUP BY user_id
)
SELECT
    SUM(s1) AS page_views,
    SUM(s2) AS add_to_cart,
    SUM(s3) AS checkout_start,
    SUM(s4) AS payment,
    SUM(s5) AS orders,
    ROUND(100.0 * SUM(s2) / SUM(s1), 1) AS cart_rate,
    ROUND(100.0 * SUM(s5) / SUM(s1), 1) AS overall_conversion
FROM funnel_steps;

Запрос с реальным контекстом говорит о кандидате больше, чем абстрактная задача.

Метод 3: Сертификаты платформ

Онлайн-платформы для обучения SQL выдают сертификаты, которые верифицируют уровень. При этом задачи выполняются в реальной среде с автопроверкой — подделать сложно.

Что учитывать при оценке сертификата:

  • Авторитетность платформы
  • Дата выдачи (навыки устаревают)
  • Уровень сертификата (базовый/продвинутый)

Метод 4: Code Review

Дайте кандидату написанный заранее SQL-код и попросите сделать code review:

-- Кандидат должен найти проблемы в этом запросе:

SELECT u.name, count(o.id), sum(o.amount)
FROM users u, orders o
WHERE u.id = o.user_id
AND o.status != 'cancelled'
GROUP BY u.name
ORDER BY sum(o.amount)

Что здесь можно найти:

  1. Старый синтаксис соединения через запятую
  2. != с NULL-значениями (лучше <> 'cancelled' OR status IS NULL)
  3. GROUP BY u.name без u.id — проблема при дублировании имён
  4. sum(amount) в ORDER BY вместо алиаса

Умение читать и критиковать чужой код — ценный навык, который часто важнее умения писать идеальный код с нуля.

Метод 5: Парный анализ реальной задачи

Вместо абстрактного теста дайте кандидату реальную задачу, с которой ваша команда столкнулась (с анонимизированными данными):

«Наш отдел маркетинга спрашивает: какие источники привлечения приносят клиентов с наибольшим LTV? Как бы вы ответили на этот вопрос через SQL?»

Оцениваете: декомпозицию задачи, выбор метрик, структуру запроса, уточняющие вопросы.

Как комбинировать методы

ПозицияРекомендуемая комбинация
JuniorОнлайн-тест (30 мин) → телефонный разбор
MiddleТестовое задание (async) → live-кодинг (1 задача)
SeniorПортфолио + code review → обсуждение кейса

Комбинированный подход даёт более полную картину и снижает влияние «дня неудачи» на результат.

Рекомендуйте кандидатам подготовиться с помощью практики на SQLlab.ru — платформа выдаёт сертификаты, которые вы можете использовать как объективный индикатор уровня.

Похожие статьи

Попробуй на практике

Тренажёр с реальными задачами — бесплатно и без регистрации

Открыть тренажёр →