Câu hỏi phỏng vấn SQL tại Solverines Technology
Tôi vừa hoàn thành một buổi phỏng vấn kỹ thuật tại Solverines Technology Solutions. Vòng SQL tập trung vào việc truy xuất các bản ghi và đánh số hàng. Tôi cũng gặp một bài toán logic về việc đảo trạng thái bóng đèn.
Dưới đây là các mẫu SQL bạn nên biết.
Giả sử có một bảng Employee với các cột emp_id và emp_name.
Lấy bản ghi cuối cùng:
SELECT * FROM Employee ORDER BY emp_id DESC LIMIT 1;
Lấy hàng thứ 3:
SELECT * FROM Employee ORDER BY emp_id LIMIT 1 OFFSET 2;
Công thức: LIMIT 1 OFFSET (N - 1).
Lấy hàng thứ 3 tính từ cuối lên:
SELECT * FROM Employee ORDER BY emp_id DESC LIMIT 1 OFFSET 2;
Sử dụng ROW_NUMBER() cho các mẫu hàng cụ thể.
Lấy hàng lẻ thứ 2:
SELECT * FROM (SELECT *, ROW_NUMBER() OVER(ORDER BY emp_id) AS rn FROM Employee) t WHERE rn = (2 * 2 - 1);
Công thức cho hàng lẻ thứ N: rn = (2 * N - 1).
Lấy hàng chẵn thứ 3:
SELECT * FROM (SELECT *, ROW_NUMBER() OVER(ORDER BY emp_id) AS rn FROM Employee) t WHERE rn = (2 * 3);
Công thức cho hàng chẵn thứ N: rn = (2 * N).
Bài toán Logic: Đảo trạng thái bóng đèn (Bulb Toggling)
Bài toán yêu cầu bạn đảo trạng thái của N bóng đèn qua K thao tác.
Mỗi thao tác sẽ cho bạn một chỉ số bắt đầu i và một chỉ số kết thúc j.
Số 0 sẽ trở thành 1.
Số 1 sẽ trở thành 0.
Ví dụ: N = 5, K = 2. Thao tác 1: chỉ số từ 1 đến 3. Thao tác 2: chỉ số từ 2 đến 4.
Ban đầu: 0 0 0 0 0 Sau Thao tác 1: 0 1 1 1 0 Sau Thao tác 2: 0 1 0 0 1 Kết quả cuối cùng: 0 1 0 0 1.
Kinh nghiệm rút ra từ buổi phỏng vấn:
Buổi phỏng vấn đã kiểm tra các chủ đề SQL sau:
- Tìm bản ghi cuối cùng.
- Tìm hàng thứ N từ đầu hoặc từ cuối.
- Sử dụng
ROW_NUMBER()cho các hàng chẵn hoặc lẻ. - Thao tác với mảng cho các bài toán logic.
Hãy luyện tập các mẫu này nếu bạn là sinh viên mới ra trường hoặc lập trình viên junior.