Вопросы по SQL на собеседовании в Solverines Technology
Недавно я прошел техническое собеседование в Solverines Technology Solutions. Раунд по SQL был посвящен извлечению записей и нумерации строк. Также мне попалась логическая задача о переключении состояний лампочек.
Вот паттерны SQL, которые вам стоит знать.
Предположим, есть таблица Employee с полями emp_id и emp_name.
Получить последнюю запись:
SELECT * FROM Employee ORDER BY emp_id DESC LIMIT 1;
Получить 3-ю строку:
SELECT * FROM Employee ORDER BY emp_id LIMIT 1 OFFSET 2;
Формула: LIMIT 1 OFFSET (N - 1).
Получить 3-ю строку с конца:
SELECT * FROM Employee ORDER BY emp_id DESC LIMIT 1 OFFSET 2;
Используйте ROW_NUMBER() для специфических паттернов строк.
Получить 2-ю нечетную строку:
SELECT * FROM (SELECT *, ROW_NUMBER() OVER(ORDER BY emp_id) AS rn FROM Employee) t WHERE rn = (2 * 2 - 1);
Формула для N-й нечетной строки: rn = (2 * N - 1).
Получить 3-ю четную строку:
SELECT * FROM (SELECT *, ROW_NUMBER() OVER(ORDER BY emp_id) AS rn FROM Employee) t WHERE rn = (2 * 3);
Формула для N-й четной строки: rn = (2 * N).
Логическая задача: Переключение лампочек
В задаче требуется переключить состояние N лампочек за K операций. Каждая операция задает начальный индекс i и конечный индекс j. 0 становится 1. 1 становится 0.
Пример: N = 5, K = 2. Операция 1: от индекса 1 до 3. Операция 2: от индекса 2 до 4.
Исходное состояние: 0 0 0 0 0 После оп. 1: 0 1 1 1 0 После оп. 2: 0 1 0 0 1 Конечный результат: 0 1 0 0 1.
Итоги собеседования:
На собеседовании проверялись следующие темы SQL:
- Поиск последней записи.
- Поиск N-й строки с начала или с конца.
- Использование ROW_NUMBER() для четных или нечетных строк.
- Манипуляции с массивами в логических задачах.
Практикуйте эти паттерны, если вы начинающий специалист или junior-разработчик.