본문 바로가기

무신사 2차 코테 후기

@정소민fan2026. 2. 16. 19:35

무신사 2차 코테도 합격했다

사실 얼마전에 다른 회사에 최종 합격해서 면접을 볼까 말까 고민하고 있는데

무신사 사옥은 어떤지 궁금해서 일단 가보기로 했다

여기는 인턴이고 합격한곳은 정규직이기도 하고

 

아 그리고 무신사측에서 코테 관련 내용을 외부로 공유해도 된다고 했다

AI agent 활용 능력을 평가하는 시험이었는데 나는 처음에 딱히 변별력이 없을거라 예상했다

근데 의외로 많은 취준생들이 agent 활용을 제대로 못하는듯 했다

 

무신사 측에서 codex를 지원해주는데 나는 클로드 max를 구독 중이었기 때문에 클로드만으로 문제를 풀었다

oh-my-claudecode라는 플러그인을 통해 여러 에이전트를 병렬로 사용해서 시간을 더 줄일 수 있었다

 

문제

대학교 수강신청 사이트를 만들어야했다

여기서 중요하게 보던 것은 동시성 처리, agent 활용 능력, 문제에 적혀있지 않아도 필요한 기능을 파악하고 추가하는 능력 등이었다

그리고 필요한 초기 데이터도 넣어줘야 함 (이 부분에서 패스워드 암호화에 따른 빌드 지연이 생겨서 시간을 좀 잡아먹었다)

 

내가 사용한 프롬프트도 넣어야 했고, agent에게 전달할 요구사항을 작성한 문서도 같이 제출해야했다

뭐 문제 자체를 LLM에 넣어버리고 돌려버리는 수도 있겠지만 내 경험상 그러면 전혀 좋은 산출물이 나오지 않는다

그래서 REQUIREMENTS.md 문서에 세세하게 요구사항을 입력했다

대강 맛보기로 보여주면

## 시나리오
이 프로젝트는 대학교 수강신청 시스템을 개발하는 프로젝트입니다\
다음은 필요한 기능 목록입니다\
1. 학생 목록 조회
2. 강좌 목록 조회
3. 교수 목록 조회
4. 수강신청
5. 수강취소
6. 내 시간표 조회
7. 회원가입/로그인/로그아웃 등 인증/인가

## 필수 요구사항
- 수강신청 시 트래픽이 몰려 동시성 문제가 발생할 수 있습니다. 이를 방지하기 위해 Redis 기반 분산락을 이용해 **대기열**전략을 구현하세요.
  - [100명 요청] → Redis Sorted Set (대기열) → Worker가 순서대로 1명씩 처리하는 식으로 해결하세요
- 수강신청 시 강좌의 정원을 절대로 초과해서는 안됩니다
- API 문서는 Rest Docs을 사용하지만 Swagger UI를 사용해야합니다. 필요한 의존성이 있다면 추가하세요.
  - API 문서는 docs/ 디렉토리에 포함해야합니다.
  - API 문서 요구사항은 다음과 같습니다.
    1. 모든 엔드포인트의 요청/응답 형식 명시
    2. 에러 케이스별 응답 정의 (HTTP 상태 코드, 에러 메시지)
    3. 형식 자유 (Markdown, OpenAPI 등)
    4. 평가자가 API 문서만으로 테스트를 작성할 수 있을 정도로 구체적이어야 함
    5. 요청/응답 예제를 포함
- 컨트롤러를 제외한 모든 기능은 단위 테스트를 거쳐야 합니다. 수강신청의 경우 반드시 동시성 테스트를 거치세요. 테스트 시에는 TestContainer를 사용하도록 해야 합니다. port는 랜덤으로 사용하세요.
  - 컨트롤러는 Rest Docs를 구현해야 하므로 **MockMvc**를 이용한 통합 테스트가 반드시 필요합니다.
- 서버 정상 구동 확인을 위해 **GET /health** 엔드포인트가 필요합니다.

## 인프라 구현사항
- N+1 문제를 피하기 위해 fetch join과 batch size를 고려하세요
- 추후 확장성을 고려하기 위해 **헥사고날 아키텍처**로 구현하세요
- 인증/인가는 **Spring Security**를 이용해 JWT 발급으로 구현해야합니다. 액세스 토큰/리프레쉬 토큰을 사용하고, 리프레쉬 토큰은 쿠키를 사용하세요.
  - 리프레쉬 토큰은 Redis로 관리합니다. 리프레쉬 요청이 들어오면 Redis에 존재하는지 확인하고, 있다면 액세스 토큰을 재발급하고, 기존의 리프레쉬 토큰은 무효화한 다음 새로 발급하세요
  - 로그아웃 요청이 오면 리프레쉬 토큰을 무효화합니다.
- @Query를 이용한 기능이 있다면 반드시 **@DataJpaTest**로 테스트를 구현하세요.
  - 테스트 시에는 실제 DB를 사용해서는 안됩니다. H2 인메모리 데이터베이스를 사용하세요
  - 테스트를 위한 테스트 데이터를 만들어서 사용하세요.

## 빌드 구현사항
- docker-compose를 이용해 spring + redis + mySql이 한번에 작동하도록 구현하세요.
- readme.md에 프로젝트 빌드 방법, 서버 실행 방법, API 서버 접속 방법 등을 작성하세요.

한 이정도? 이것은 순수하게 내 지식으로 입력해둔 프롬프트다. LLM을 사용해서 작성한 문서가 절대 아니다

이정도는 써줘야 내가 원하는 퀄리티의 결과물이 나오더라

물론 이외에도 각 엔티티 간의 관계, 필드 등을 직접 다 정의했다

이후에 LLM을 통해 어색한 표현이 보이는 구절을 수정하거나, 구현 전에 이해가 되지 않는 요구사항은 다시 질문하도록 했다

 

분산 락을 통해 사용한 이유는 이 시스템이 분산 환경으로 전환될때까지 예상해서 써두었다

헥사고날 아키텍처로 구현하라고 요구한 이유도 그 때문이다 (사실 이 부분에서 패키지 구조도 명시해뒀으면 더 좋았을 듯)

 

도커 컴포즈를 통한 배포 용이성도 챙겼고, 학년별 수강신청 기간/수강신청,취소 이력 추적 등 명시되어있지 않은 기능도 많이 구현해뒀기 때문에 사실 충분히 합격권이라고 예상하고 있었다

 

agent 활용 능력은 사람마다 정말 천차만별인것 같다

요새 다른 사람들의 에이전트 활용 방식을 보고 있는데 git worktree를 사용해서 병렬에 병렬로 돌려버리는 사람도 있고

아 그리고 oh-my-claudecode는 max를 구독하고 있다면 꼭 써보면 좋겠다

 

갑자기 더 쓰기가 귀찮아지네

 

다음에는 취업 후기나 쓰러 와야겠다

 

 

'일상' 카테고리의 다른 글

취업 후  (2) 2026.03.29
정소민fan
@정소민fan :: 코딩은 관성이야

코딩은 관성적으로 해야합니다 즐거운 코딩 되세요

목차