𝗦𝗤𝗟 𝗜𝗻𝘁𝗲𝗿𝘃𝗶𝗲𝘄 𝗤𝘂𝗲𝘀𝘁𝗶𝗼𝗻𝘀 𝗔𝘁 𝗦𝗼𝗹𝘃𝗲𝗿𝗶𝗻𝗲𝘀 𝗧𝗲𝗰𝗵𝗻𝗼𝗹𝗼𝗴𝘆
நான் சமீபத்தில் Solverines Technology Solutions நிறுவனத்தில் ஒரு தொழில்நுட்ப நேர்காணலை (technical interview) முடித்தேன். SQL சுற்று, தரவுகளைப் பெறுதல் (retrieving records) மற்றும் வரிசை எண் (row numbering) ஆகியவற்றில் கவனம் செலுத்தியது. மேலும், மின்விளக்குகளின் நிலையை மாற்றுவது (toggling bulb states) குறித்த ஒரு தர்க்கரீதியான (logic) சிக்கலையும் நான் எதிர்கொண்டேன்.
நீங்கள் தெரிந்து கொள்ள வேண்டிய SQL முறைகள் (patterns) இதோ.
emp_id மற்றும் emp_name கொண்ட ஒரு Employee அட்டவணையை (table) எடுத்துக் கொள்வோம்.
கடைசிப் பதிவைப் பெற (Get the last record):
SELECT * FROM Employee ORDER BY emp_id DESC LIMIT 1;
3-வது வரிசையைப் பெற (Get the 3rd row):
SELECT * FROM Employee ORDER BY emp_id LIMIT 1 OFFSET 2;
சூத்திரம் (Formula): LIMIT 1 OFFSET (N - 1).
கடைசியிலிருந்து 3-வது வரிசையைப் பெற (Get the 3rd row from the end):
SELECT * FROM Employee ORDER BY emp_id DESC LIMIT 1 OFFSET 2;
குறிப்பிட்ட வரிசை முறைகளுக்கு ROW_NUMBER() ஐப் பயன்படுத்தவும்.
2-வது ஒற்றை வரிசையைப் பெற (Get the 2nd odd row):
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-வது இரட்டை வரிசையைப் பெற (Get the 3rd even row):
SELECT * FROM (SELECT *, ROW_NUMBER() OVER(ORDER BY emp_id) AS rn FROM Employee) t WHERE rn = (2 * 3);
N-வது இரட்டை வரிசைக்கான சூத்திரம்: rn = (2 * N).
தர்க்கரீதியான சிக்கல் (Logic Problem): மின்விளக்கை மாற்றுதல் (Bulb Toggling)
இந்தச் சிக்கல் K செயல்பாடுகள் (operations) மூலம் N மின்விளக்குகளின் நிலையை மாற்றச் சொல்கிறது. ஒவ்வொரு செயல்பாடும் உங்களுக்கு ஒரு தொடக்கக் குறியீடு (start index) i மற்றும் ஒரு முடிவுக் குறியீடு (end index) 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.
நேர்காணல் முக்கியக் குறிப்புகள் (Interview Takeaways):
இந்த நேர்காணல் பின்வரும் SQL தலைப்புகளைச் சோதித்தது:
- கடைசிப் பதிவைக் கண்டறிதல்.
- தொடக்கத்திலிருந்தோ அல்லது இறுதியிலிருந்தோ N-வது வரிசையைக் கண்டறிதல்.
- இரட்டை அல்லது ஒற்றை வரிசைகளுக்கு
ROW_NUMBER()பயன்படுத்துதல். - தர்க்கரீதியான சிக்கல்களுக்கான Array கையாளுதல் (Array manipulation).
நீங்கள் ஒரு ஃப்ரெஷர் (fresher) அல்லது ஜூனியர் டெவலப்பராக இருந்தால், இந்த முறைகளைப் பயிற்சி செய்யுங்கள்.