คำถามสัมภาษณ์ 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

Source: https://dev.to/aj_arul/sql-interview-questions-asked-in-solverines-technology-solutions-technical-round-30m3