AI 요약
IT 전문가 케이시 무라토리(Casey Muratori)는 1994년(혹은 1993년) 10대의 나이에 마이크로소프트 하계 인턴십 면접을 치렀으며, 당시 하루 동안 4명의 면접관으로부터 각각 하나씩 총 4개의 프로그래밍 질문을 받았습니다. 당시는 인터넷이 대중화되기 전이라 이러한 즉석 코딩 테스트가 낯설었지만, 저자는 이를 매우 흥미로운 경험으로 기억하고 있으며 이 중 최소 2개는 성능 최적화와 관련된 질문이었습니다. 면접의 첫 단추로 등장한 가장 쉬운 문제는 버퍼 간에 직사각형 영역을 복사하는 C언어 코드를 작성하는 'Rectangle Copy'였습니다. 이 문제는 픽셀 데이터가 주로 8비트였던 당시의 기술 환경을 반영하여 포인터와 버퍼 피치(Pitch)를 다루는 역량을 검증하고자 했습니다. 저자는 이 과거의 질문들을 통해 당시의 '올바른 정답'과 하드웨어가 극적으로 진화한 오늘날의 관점에서의 '올바른 정답'이 어떻게 달라졌는지를 연재 형식을 통해 비교 분석할 계획입니다.
핵심 인사이트
- 1994년 마이크로소프트 면접: 저자 케이시 무라토리는 1994년(또는 1993년) 마이크로소프트 하계 인턴십 면접 당시 경험한 4가지 클래식 프로그래밍 질문을 소개합니다.
- 성능 중심의 질문 구성: 출제된 4가지 코딩 테스트 질문 중 최소 2개 이상은 프로그램의 실행 성능(Performance) 최적화에 초점을 맞추고 있었습니다.
- 첫 번째 질문 'Rectangle Copy': 한 버퍼에서 다른 버퍼로 직사각형 영역을 복사하는 C언어 함수
CopyRect를 구현하는 문제가 가장 먼저 출제되었습니다. - 과거와 현재의 대비: 1990년대 데스크톱 컴퓨팅 환경에서의 최적 솔루션과 현대 컴퓨팅 성능 발전이 반영된 현재 기준의 최적 정답을 비교하는 것이 이 글의 핵심 취지입니다.
주요 디테일
- 점진적 난이도 설계: 당시 마이크로소프트의 면접 프로세스는 면접이 진행될수록 프로그래밍 질문의 난이도가 점점 더 높아지도록 설계되었습니다.
- 구체적인 코드 원형 제공: 첫 번째 문제의 뼈대가 되는 함수 원형은
void CopyRect(char *BufferA, int PitchA, char *BufferB, int PitchB, int FromMinX, int FromMinY, int FromMaxX, int FromMaxY, int ToMinX, int ToMinY)형식이었습니다. - 8비트 그래픽스 시대상 반영: 1994년 당시에는 그래픽 픽셀이 대개 8비트(1바이트) 크기였기 때문에 요소 복사를 처리하기 위해
char타입 포인터를 매개변수로 사용했습니다. - 면접 방식에 대한 평가: 저자는 오늘날의 채용 면접에서는 이러한 즉석 코딩 테스트 방식을 추천하지 않지만, 당시 젊은 개발자 지원자 관점에서는 도전 정신을 자극하는 매우 재미있는 경험이었다고 회고합니다.
향후 전망
- 연재 형태의 후속 분석: 저자는 이번 첫 번째 질문인 'Rectangle Copy'를 시작으로, 당시 면접관들이 요구했던 질문들과 오늘날 데스크톱 연산 구조의 변화에 따른 새로운 최적화 정답을 매일 하나씩 순차적으로 블로그에 포스팅할 예정입니다.
