คำถามสัมภาษณ์ SQL ที่ Solverines Technology
เมื่อเร็วๆ นี้ ผมเพิ่งผ่านการสัมภาษณ์ทางเทคนิคที่ Solverines Technology Solutions โดยรอบ SQL จะเน้นไปที่การดึงข้อมูล (retrieving records) และการกำหนดลำดับแถว (row numbering) นอกจากนี้ผมยังเจอโจทย์ตรรกะเกี่ยวกับการสลับสถานะของหลอดไฟด้วย
และนี่คือรูปแบบ 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).
โจทย์ตรรกะ: การสลับสถานะหลอดไฟ (Bulb Toggling)
โจทย์กำหนดให้คุณสลับสถานะหลอดไฟ N ดวง ผ่านการดำเนินการ (operations) จำนวน 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()สำหรับแถวคู่หรือแถวคี่ - การจัดการ Array สำหรับโจทย์ตรรกะ
ฝึกฝนรูปแบบเหล่านี้หากคุณเป็นนักพัฒนาจบใหม่ (fresher) หรือนักพัฒนาระดับ Junior