سوالات مصاحبه SQL در Solverines Technology
من اخیراً یک مصاحبه فنی در Solverines Technology Solutions انجام دادم. مرحله SQL بر بازیابی رکوردها و شمارهگذاری ردیفها تمرکز داشت. همچنین با یک مسئله منطقی در مورد تغییر وضعیت لامپها (toggling) مواجه شدم.
در اینجا الگوهای SQL که باید بدانید آورده شده است.
فرض کنید جدولی به نام Employee با ستونهای emp_id و emp_name داریم.
دریافت آخرین رکورد:
SELECT * FROM Employee ORDER BY emp_id DESC LIMIT 1;
دریافت ردیف سوم:
SELECT * FROM Employee ORDER BY emp_id LIMIT 1 OFFSET 2;
فرمول: LIMIT 1 OFFSET (N - 1).
دریافت سومین ردیف از انتها:
SELECT * FROM Employee ORDER BY emp_id DESC LIMIT 1 OFFSET 2;
استفاده از ROW_NUMBER() برای الگوهای ردیف خاص.
دریافت دومین ردیف فرد:
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).
دریافت سومین ردیف زوج:
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 لامپ را طی 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()برای ردیفهای زوج یا فرد. - کار با آرایهها برای مسائل منطقی.
اگر تازهکار (fresher) یا توسعهدهنده جونیور هستید، این الگوها را تمرین کنید.