𝗦𝗤𝗟 𝗜𝗻𝘁𝗲𝗿𝘃𝗶𝗲𝘄 𝗤𝘂𝗲𝘀𝘁𝗶𝗼𝗻𝘀 𝗔𝘁 𝗦𝗼𝗹𝘃𝗲𝗿𝗶𝗻𝗲𝘀 𝗧𝗲𝗰𝗵𝗻𝗼𝗹𝗼𝗴𝘆 Solverines Technology의 SQL 면접 질문
최근 Solverines Technology Solutions에서 기술 면접을 마쳤습니다. SQL 라운드는 레코드 조회와 행 번호 매기기(row numbering)에 집중되었습니다. 또한 전구 상태를 토글하는 로직 문제도 다루었습니다.
알아두어야 할 SQL 패턴은 다음과 같습니다.
emp_id와 emp_name 컬럼이 있는 Employee 테이블이 있다고 가정합니다.
마지막 레코드 가져오기:
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)
K번의 연산을 통해 N개의 전구를 토글하는 문제입니다.
각 연산은 시작 인덱스 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()사용. - 로직 문제를 위한 배열 조작.
신입 또는 주니어 개발자라면 이 패턴들을 연습해 보세요.