Как дела с SQL
Что проверяют
Это вопрос-разведка: интервьюер хочет понять ваш реальный уровень и решить, давать ли практическое задание. Почти всегда следом идёт живая задача: найти пользователей без заказов, дубли по email или вторую по величине зарплату.
Как отвечать
Отвечайте конкретно, без «уверенно владею». Хорошая форма: что умеете, на какой СУБД и зачем это было нужно в тестировании. Каркас, который закрывает большую часть задач QA:
- выборки:
SELECTсWHERE,ORDER BY,LIMIT,LIKE,IN,BETWEEN, работа сNULLчерезIS NULL; - соединения: разница
INNER JOINиLEFT JOIN, поиск «сирот» черезLEFT JOIN ... WHERE o.id IS NULL; - агрегаты:
GROUP BY,COUNT,SUM, фильтр по группам черезHAVING, поиск дублейGROUP BY email HAVING COUNT(*) > 1; - подзапросы и оконные функции:
ROW_NUMBER(),RANK()для задач вида «последний заказ каждого клиента»; - изменение данных:
INSERT,UPDATE,DELETEдля подготовки тестовых данных, лучше внутри транзакции сROLLBACK.
Затем привяжите к практике: после действия в интерфейсе или вызова API проверяете, что в таблицу записалась правильная строка с нужным статусом и суммой; готовите граничные данные для кейса; ищете, в данных ли причина бага. Назовите инструменты: DBeaver, pgAdmin, DataGrip, консольный psql. Если SQL знаете на уровне простых выборок, так и скажите и добавьте, что сейчас подтягиваете: честная оценка ценится выше, чем провал на первом JOIN.
Где спотыкаются
Пишут WHERE column = NULL. Сравнение с NULL даёт неизвестность, а не истину, строк не будет, нужен IS NULL.
Путают WHERE и HAVING: условие по агрегату вроде COUNT(*) > 1 в WHERE не работает, фильтр по группам ставится после GROUP BY.
Запускают UPDATE или DELETE без WHERE на общем тестовом стенде. После этого сломанные данные у всей команды, а аккуратность с изменением данных как раз одно из того, что в QA проверяют.