Solverines Technology 的 SQL 面试题
我最近参加了 Solverines Technology Solutions 的技术面试。SQL 环节侧重于记录检索和行编号。我还遇到了一道关于切换灯泡状态的逻辑题。
以下是你需要掌握的 SQL 模式。
假设有一个包含 emp_id 和 emp_name 的 Employee 表。
获取最后一条记录:
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)。
逻辑题:灯泡切换
题目要求你在 K 次操作中切换 N 个灯泡的状态。 每次操作会给你一个起始索引 $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()获取偶数行或奇数行。 - 用于逻辑题的数组操作。
如果你是应届生或初级开发人员,请练习这些模式。