До запроса проговорите таблицы, ключи, grain и ожидаемый результат на маленьком примере. После запроса объясните дубликаты, NULL, сложность и индекс — именно там проявляется глубина.
План
Пройдите этапы по порядку
- 01
База: SELECT, JOIN, GROUP BY и NULL
Тренируйте cardinality каждого join, отличие WHERE от HAVING, three-valued logic и COUNT(*)/COUNT(column). Всегда прогнозируйте количество строк на примере.
- 02
Оконные функции
row_number/rank, lag/lead, running total и рамки окна. Умейте объяснить, почему окно не схлопывает строки и как детерминировать порядок при равных timestamps.
- 03
Аналитические задачи
Когорты, retention, воронка, повторная покупка, сессии и A/B-агрегации. Зафиксируйте событие, пользователя, окно, timezone и поздние данные.
- 04
Транзакции и изоляция
ACID, MVCC, read committed/repeatable read/serializable, lost update и deadlock. Для каждой аномалии предложите минимальный сценарий и способ защиты.
- 05
Индексы и EXPLAIN
B-tree, составной индекс, селективность, index-only scan, statistics и cost. Смотрите фактические rows/time/buffers в EXPLAIN ANALYZE и сравнивайте с оценкой planner.
- 06
Практика под интервью
Пишите запрос в текстовом редакторе, проговаривая CTE и проверку промежуточных результатов. Затем предложите альтернативу и тестовые данные для дубликатов, NULL и пустой группы.
Что обычно мешает
Частые ошибки
- Не определять grain таблицы.
- Чинить дубли с помощью DISTINCT вслепую.
- Считать индекс бесплатным.
- Запускать EXPLAIN ANALYZE на опасном запросе без понимания.
Перед следующим этапом
Чек-лист готовности
- Предсказываю cardinality join.
- Уверенно пишу окна.
- Объясняю MVCC и аномалии.
- Читаю estimates и actuals в плане.
- Проверяю NULL, дубли и timezone.
Коротко
Частые вопросы
Какой диалект выбрать?
Ориентируйтесь на вакансию. PostgreSQL — хороший базовый выбор для российской продуктовой разработки; отмечайте диалектные функции и не выдавайте их за стандарт SQL.
Нужно ли писать запрос без запуска?
Часто да. Тренируйтесь проверять запрос на маленькой таблице вручную и объяснять промежуточные наборы строк.
Чем отличается подготовка аналитика?
Больше внимания grain, окнам, временным данным и метрикам. Backend-роли глубже спрашивают транзакции, locking, индексы, планы и миграции.
Источники
Источники и редакционная политика
Материалы RecallDeck сопоставлены с официальной документацией и открытыми публикациями компаний, когда первичный источник доступен. Мы не связаны с упомянутыми работодателями, не публикуем конфиденциальные задания и не продаём места в подборках. Формат найма может меняться — уточняйте его у рекрутера.
От чтения к воспроизведению
Отрепетируйте полный цикл интервью.
RecallDeck возвращает сложные темы по расписанию и помогает удерживать в памяти язык, SQL, архитектуру и поведенческие истории.