Питання на 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-розробник.