장난감 연구소
AI 코딩 에이전트를 활용한 코딩테스트 후기 (MUSINSA AI Native Engineer 채용) 본문
본 후기의 경우 문제를 포함한 코딩테스트 관련 내용을 외부로 자유롭게 공유할 수 있음을 메일로 안내 받고 회고 차원에서 작성하였습니다.
MUSINSA AI Native Engineer 2차 코딩테스트는 Codex와 같은 AI 에이전트를 활용해 주어진 애플리케이션을 개발하는 방식으로 진행되었습니다. 단순한 알고리즘 풀이를 넘어 AI 활용 능력 자체를 평가한다는 점에서, 현 시대에 걸맞은 새로운 유형의 코딩테스트라는 느낌을 받았습니다.
시험에 앞서 크레딧 비용 걱정 없이 사용할 수 있도록 기업용 Codex 계정이 제공되었습니다. 평소 Claude Code를 주력으로 사용하고 있었기에, Session Limit에 도달할 경우를 대비해 Codex를 예비 수단으로 활용하는 전략으로 임하였습니다.

과제 요구사항
전체 문항(글 쓴 시점 기준 전체 공개): https://github.com/musinsatech/2026-musinsa-rookie/blob/main/PROBLEM.md
주제
대학교 수강신청 시스템 개발 (서버 측만 개발, 주어진 시간: 3시간)
주요 요구사항
- 기능 개발(학생 조회, 강좌 조회, 교수 조회, 수강신청/취소, 내 시간표 조회)
- 헬스체크(GET /health) 엔드포인트 구현 → Spring Boot Actuator의 기능을 통해 제공하기로 결정
- 설계한 API를 문서화하기 → 요구사항 문서 작성 + Swagger 문서화 및 HTML 파일 추출하여 제출
- 동시성 제어(정원 초과 방지를 위한 동시성 제어) → DB 비관적 락 활용으로 결정 (Redis 분산 락이나 대기열 등을 만들기에는 시간이 부족할 거라 판단하였습니다)
- 다량의 데이터(학과, 강좌, 학생, 교수)를 시간 내 동적으로 생성 → 동적으로 생성한다는 점에서 처음 MySQL DB 사용을 고려하였으나, 대신 인메모리 DB인 H2로 변경하였습니다.
CommandLineRunner인터페이스를 구현하여 애플리케이션 실행시 동적으로 더미 데이터를 삽입하도록 하였습니다. 또한 처음 AI로 생성하였을 때 각 객체를 따로save하였으나, 시간을 우려해 (학생은BATCH_SIZE단위로)saveAll메서드를 실행하도록 개선하였습니다.
사용한 기술 스택
Spring Boot, Java 17, Spring Data JPA, H2, Spring Security (JWT 사용), Swagger
진행 과정
Claude Code 를 활용하였지만, 의외로 3시간이라는 시간이 많이 부족한 편이었습니다.
기능 구현 및 동시성 테스트 작성에 약 1시간 40분을 할애한 뒤, 남은 1시간 20분은 요구사항 문서 작성, Swagger 문서화, Swagger 페이지 HTML 변환, 오타 수정 등 마무리 작업에 사용하였습니다.
대략적인 작업 순서는 아래와 같았습니다.
- 요구사항 읽기 및 계획
- 기본 구조(Entity, Repository, Service, Controller) 작성
- 더미 데이터 동적 생성 코드 작성
- 수강신청에 대한 기본 테스트 코드 작성
- 동시성 제어를 위한 계획 논의 및 DB 비관적 락 사용
- 동시성 제어에 대한 서비스, 컨트롤러단 테스트 코드 작성
- Swagger 이용 API 문서 구체화
- 요구사항 및 README 문서 작성
특이사항
테스트 코드 작성
개인적으로 AI 코딩 에이전트의 가장 큰 장점 중 하나는 테스트 코드 작성이라 생각합니다. 실제 Claude Code의 주요 사용 사례로도 테스트 커버리지 향상이 제시될 만큼, 활용도가 좋은 편입니다.
이번 과제테스트에서도 그 효과를 실감할 수 있었습니다. 강의 정원 초과, 타 과목과의 시간 충돌 등 핵심 요구사항을 프롬프트에 입력하는 것만으로 관련 테스트 코드를 빠르게 생성해주었고, 멀티 스레드를 활용한 동시성 테스트 작성에도 큰 도움이 되었습니다. 테스트 코드 작성은 중요성에 비해 손이 많이 가는 작업인 만큼, AI 에이전트의 도움이 특히 빛을 발하는 영역이라고 느꼈습니다.
더미 데이터 생성 코드
또한 더미 데이터 생성 측면에서도 큰 도움이 되었습니다. 더미 데이터 생성 코드의 경우 Codex를 활용하여 작성하였습니다. 최소 10000명의 학생, 500개의 과목 등을 생성하면서 성과 이름을 조합하여 이름을 생성하는 코드가 인상적이었습니다.
private String randomKoreanName(ThreadLocalRandom random) {
String[] familyNames = {
"김", "이", "박", "최", "정", "강", "조", "윤", "장", "임",
"오", "한", "신", "서", "권", "황", "안", "송", "류", "홍"
};
String[] givenNames = {
"민준", "서준", "도윤", "예준", "시우", "하준", "지호", "준서",
"서연", "서윤", "지우", "지민", "하윤", "수아", "지아", "예은",
"현우", "지훈", "준호", "민지", "서현", "채원", "소윤", "다은"
};
return familyNames[random.nextInt(familyNames.length)]
+ givenNames[random.nextInt(givenNames.length)];
}
개개인의 경험과 능력에 따라 다르겠지만, 저 같은 경우 위와 같은 코드를 작성하려면, 우선 이름과 성을 생각해내고 멀티 스레드에서 난수 생성을 위해 ThreadLocalRandom 에 대해 찾아내는 과정 등 많은 시간을 소요될 거라 생각하였습니다. 그러나 이를 몇 분의 프롬프트 실행 과정을 통해 완성되는 걸 보니 유용하다고 다시 한번 느꼈습니다.
Entity 클래스의 필드 결정
다만 처음 기본 구조 생성 과정에서 Entity의 필드를 명확히 명시하지 않고 코드를 생성하였더니, 과목의 시간 슬롯, 개인별 최대 학점과 같이 세부적인 필드에서 요구사항과 차이가 있어 중복 작업이 필요했습니다. 이같은 차이를 최소화하기 위해선 Entity 클래스의 필드 정도는 정해서 프롬프트에 넣어주는게 낫겠구나 하고 느꼈습니다.
AI 에이전트 활용 코딩테스트 팁
AI 에이전트 활용 코딩테스트 전 알면 좋겠다고 느낀 점은 아래와 같습니다.
- 3시간이라는 시간 내에 완성할 필요가 있었으나 Claude Code에 프롬프트를 넣고 코드 수정이 완료되기 까지 생각보다 시간이 많이 걸립니다. 서로 간섭이 없을 작업의 경우 Claude Code와 Codex를 병렬로 작업 시켜도 괜찮은 편이었습니다.
- Claude Code는 직접
gradlew bootRun을 수행하여 서버를 실행할 수 있는 능력이 있으나, 개인적으로 직접 실행/종료/테스트를 하는게 훨씬 빠르다고 느꼈습니다. - Claude Code를 사용하는 경우 5시간 단위인 세션 사용량 한도가 시험 중간에 초기화 될 수 있도록 시험 시작 3~4시간 이전에 아무 프롬프트를 입력해 세션을 시작하면 좋습니다.
- 코딩테스트 요구사항으로 프롬프트와 답변을 제출하여야 했습니다. Claude Code의 경우
Export기능을 자체적으로 제공하나, Codex의 경우 프롬프트와 답변을 파일로 출력할 수 있는 기능을 제공하지 않습니다. 따라서 Codex 사용시 직접 복사 붙여넣기로 파일을 만들어 제출할 필요가 있습니다. - 단, Claude Code의 경우 Plan Mode를 끝낸 다음 계획 확인 후 1번 옵션으로
Yes, clear context...을 선택하는 경우가 많은데, 이 경우 앞서 입력했던 프롬프트와 답변이 사라집니다. 이를 인지하지 못하고 프롬프트의 앞부분을 날렸는데, 유의할 필요가 있습니다.
느낀 점
이번 코딩테스트를 통해 시대가 변하고 있음을 몸소 느꼈습니다. Claude Code나 Codex 같은 AI 에이전트를 활용해 과제를 수행하고, 프롬프트 입력과 답변 내역까지 제출을 요구한다는 점이 특히 인상적이었습니다. 단순한 코딩 실력이 아닌 AI 활용 능력 자체를 평가하겠다는 의도가 느껴졌고, 앞으로 이런 방식의 채용 과제가 더욱 보편화될 것 같습니다.
개인적으로는 Claude Code를 더 깊이 활용하며 AI 에이전트를 다루는 능력을 키워야겠다는 동기부여가 되었습니다. 한편으로는 LLM 사용량이 늘어날수록 크레딧 비용으로 파산하는 거 아닌지 살짝 걱정되기도 합니다 ㅎㅎ. 비용 의존성을 줄여보고자 Ollama에서 gpt-oss:20b 모델을 로컬로 돌려 Claude Code와 연동해봤는데, 퀄리티를 떠나 토큰 생성 속도가 너무 느려 실사용이 쉽지 않았습니다. GPU 가격이 내려오면 업그레이드를 진지하게 고민해봐야겠습니다.
결론으로, 위와 같은 코딩테스트 준비를 위해 고생해주신 모든 분들 감사합니다!
'개발' 카테고리의 다른 글
| [Git] Semantic Commit Messages (0) | 2024.01.12 |
|---|---|
| [SQL] 위도와 경도를 사용하여 가까운 지점 찾기 (0) | 2022.09.13 |
| Git 레포지토리에 파일은 남기고 변경 추적만 중지하기 (0) | 2021.01.01 |
