개요
소마 지원 안 해본 사람 없겠지!?!
작년 3학년에 올라가면서 소마 14기를 지원하여 불합격을 맛본 이후.. 올해는 꼭 합격하고자 실력을 더 다져왔다🔥 4학년 총 학점을 종설 6학점만 남겨왔으니 말 다했다고 생각하고, 올해는 합격할 수 있게 되었다. 합격 후기보다도, 소마 활동을 하고픈 나같은 사람이 있을 것 같아 현실적인 준비 방법에 대해 공유해보려고 한다.🙌 유캔두잇 !!!
[2024 선발 일정]
■ 1차 코딩테스트
- 2월 24일
■ 1차 코딩테스트 합격발표
- 2월 28일
■ 2차 코딩테스트
- 3월 2일
■ 2차 코딩테스트 합격발표
- 3월 6일
■ 심층 면접
- 3.14(목) ~ 3.16(토)
■ 합격발표
- 3.22(금) 2시
준비 과정
본격적인 준비는 1월 16일부터 진행했다. 주변에 소마를 준비하고자 하는 친구들과 함께 스터디 형식으로 진행했으며, 코테/SQL 문제풀이, CS 면접 준비를 진행했다. 만약 소마 준비를 하고자 한다면, 코테 준비가 1순위라고 말해주고 싶다. 서류+코테를 한번에 보는 게 아니라 일단 코테로 커트를 통과해야만 서류가 의미있는 전형이기 때문에, 만약 코테에 자신이 없다면 미친듯이, 열심히, 그리고 잘 해서 자신감을 키우자. 안 되면 다른 거 해야지라는 마인드보다 진짜 하고 싶다면.. 무조건 커트 먼저 통과하도록 노력하자.
난 소마 합격이 간절했기에 딱 1달 반 정도 후회없이 열심히 준비하려고 노력했다. 일주일에 알고리즘 최소 3문제는 꼭 풀고, 더 공부하고 싶은 모자란 유형들은 좀 더 푸는 형태로 공부했다. CS 공부나 프로젝트 리팩토링, JAVA 공부, 인턴 생활도 병행해야 했어서 스터디로 다같이 으쌰으쌰 준비하는 게 많이 도움이 되었다.
코딩테스트
노션 차트에서도 확인할 수 있듯이, 문제를 틀리지 않고 한 번에 맞추기 위해 노력했다. 소마 코테 특성 상 시험 중 테스트케이스 2개 정도만 주어주고 정답 여부를 알 수 없기 때문에, 많이 푸는 것보다 문제 하나하나를 신중하게 풀어야 한다. 테스트케이스를 몇 개 만들어보며 푸는 것도 좋은 방법이다. 카카오 코테 당시에도 Lv3 문제를 이해하기 위해 스스로 테스트케이스를 처음부터 만들어보면서 풀었는데 예상보다 빠르게 해결할 수 있었다.
소마 코테 빈출인 구현, BFS/DFS, 자료구조(를 사용하는 구현) > 그리디, 정렬 > 다익스트라/DP/유니온파인드 순으로 우선순위를 정해서 공부했다.
[1차 코테]
1차는 5문제 중 4솔이어야 합격이었다 😥 1차인데 경쟁률 뭐지.. 조금 당황스러웠다.. 나의 경우 4솔 하였다.
1번 ✅
- 체감 난이도/유형 : B3 / 구현, 연산
- 정말 쉬웠다. 히든케이스도 없을 느낌
2번 ✅
- 체감 난이도/유형 : S5 / 정렬
- 쉬웠다. 문제가 군더더기 없었어서 의도만 잘 이해한다면 이것도 히든케이스 없을 느낌
3번 ✅
- 체감 난이도/유형 : S1 ~ G5 / 자료구조
- 히든케이스가 충분히 나올 수 있다. index 오류도 생길 수 있는 느낌의 문제.
- 기교를 부리기보다는 그냥 문제에서 차례대로 과정을 설명해주는대로 그대로 풀려고 노력했다.
- 히든케이스 하나 만들어서 테스트 해봤고, 의도대로 잘 나왔다.
- 이 문제 실수해서 히든케이스 몇 개 틀린 사람들이 1차 탈이 된 것 같았다.
4번
- 체감 난이도/유형 : G4~G3 / 그리디
- 1시간 남았을 때 풀기 시작.
- heapq를 같이 사용하는 그리디 문제인 것 같은데 계속 의도대로 못 풀고 틀렸다..
- 결국 30분 전에 다른 문제 검토해보는 걸로 전략을 바꿨다.
5번 ✅
- 체감 난이도/유형 : 프로그래머스 Lv2 / group by, min
- 쉬웠다. 두 줄 정도로 해결 가능.
[2차 코테]
2차는 1.5~2솔이 컷이었다. 나의 경우 2.5솔 하였다.
나중에 면접 준비하다가 코테 후기를 찾아봤는데 이분 과 나랑 풀이가 거의 일치해서 놀랐다.
1번 ✅
- 체감 난이도/유형 : S5
- '#'을 기준으로 문자를 가르는 문제였다. 실수 나올 만한 '####' 이런 문자열 넣어보면서 추가로 확인해보았다.
2번 ✅ (효율성❎)
- 체감 난이도/유형 : G5~G4
- 1,5번을 푼 이후 2번을 풀이했다. 나중에 알고보니 DP 유형이라고 해서 앗!! 그렇겠네 싶었던 문제다. 나는 BFS 로 해결했고, 효율성에서는 히든 테케를 못 맞췄을 것 같다.
- N이 300이라 만약에 이 문제부터 풀었다면 더 최적화할 방법을 찾아봤을 것 같다.
- 앞으로는 BFS+시간초과 이슈 일 때 DP를 의심해봐야지.
3번
- 체감 난이도/유형 : G5
- 자세히 못 읽었어서 dfs 인 줄 알았다.
- 나중에 다시 살펴보니 merge sort (분할정복) 기본 코드로 해결할 수 있는 문제였다.
4번
- 보지도 못했음 ㅠ
5번 ✅
- [프로그래머스] 입양 시각 구하기 문제에서 배운 변수 개념을 활용해 풀었다. 아래는 프로그래머스 문제 답 예시이다.
SET @HOUR = -1;
SELECT (@HOUR:=@HOUR +1) AS HOUR,
(SELECT COUNT(*) FROM ANIMAL_OUTS WHERE HOUR(DATETIME) = @HOUR)
FROM ANIMAL_OUTS
WHERE (@HOUR < 23)
- VIEW 개념, 변수(SET @INDEX = -1) 개념, LEFT JOIN, NULL 개념을 응용해서 풀었고,
- 코드 20줄 정도가 나왔다.😅 그래도 하나씩 잘 생각하면서 풀면 직관적으로 짤 수 있는 테이블 문제이다.
SQL 공부
SQL 의 경우 내가 공부한 내용 내에서 해결할 수 있다면 풀고, 아니면 안 풀고 알고리즘 문제로 넘어가는 전략으로 가져갔다. 노션 내에 적어둔 내용은 안보고도 술술 쓸 수 있을 정도로 공부했다.(노션 안에 테스트지 있음) 결론적으로는 1,2차 SQL 문제는 모두 맞을 수 있었다 !
면접
1달 반 스터디 당시 CS 면접 공부도 함께 진행했다. OS/DB/Network 개념 속 주제들을 하나씩 정해 다같이 공부하는 형태이다. '프로세스와 스레드 차이에 대해 설명해주세요' 부터 '프로세스 생성과 소멸은 어떤 system call을 통해 이루어 지나요?' 까지 딥하게 들어가며 서로를 후드러패(?)는 스터디이다. 물론 끝나면 또 정성스럽게 질문 의도에 대해 설명하고 답변에 피드백해준다. 매주 한 주제에 대해 같이 깊게 파보고 이야기하면서 실력이 정말 많이 늘었음을 체감했다. 🍀
추가로, 주변에 소마 면접을 보게 된 동기가 있어서 면접 준비 1주일 간은 매일 구글미트로 서로 자기소개서/포트폴리오를 공유한 후 면접 질문을 던지고 답하면서 준비했다.
면접준비를 하면서, 그리고 인턴 생활을 하면서도 많이 든 생각인데, 자신이 공부했던 내용(그게 CS든, 개발 지식이든, 프로젝트든)에 대해서 잘 설명할 수 있는 능력도 개발자의 중요한 역량이라고 느낀다. "저는 이렇게 생각했기 때문에 이런 스타일로 개발했어요"를 팀원에게 설득하는 과정이 분명 필요하고, 그게 소프트스킬이고 면접을 보는 이유라고 생각한다. 면접 준비도 굳이 공부나 과제라고 생각하지 않고 그냥 "내 개발 과정과 태도에 대해 잘 설명드리고 오자"고 생각하니 마음 편하게 잘 대답할 수 있었다.
크게 다음과 같은 맥락의 질문들에 대답해보면 좋을 것 같다. 아래는 내가 준비했던 면접 내용들이고 이 안에서 크게 벗어나지 않았다. 되도록이면 좀 더 어렵게(빡세게) 준비해 가는 걸 추천한다. 나처럼 스터디를 진행하지 않더라도 혼자 조용한 집에서 계속 중얼중얼 해보고 가는 것도 완전 도움된다.
- 프로젝트
- 자신이 했던 프로젝트에서 가장 기억에 남는 트러블슈팅
- 자신의 프로젝트에서 보완할 부분을 찾고, 어떤 식으로 보완할 수 있을 것인가?
- 최적화 경험을 말해보세요.
- IT 키워드 또는 기술(cs) 질문
- 가용성, 확장성, 보안성 키워드에 대해 한 번 설명해보세요.
- 최근에 알게 된 IT 기술 / 학습한 IT 기술이 있다면 설명해주세요. 어떻게 응용해볼 수 있을 것인지?
- 가장 자신 있게 설명할 수 있는 네트워크 개념
- Transaction이란?
- OS에서 메모리 구조에 대해 아는만큼 설명해보세요.
- 인성
- 업무 우선순위를 정하는 자신만의 기준이 무엇인가요?
- 소마에서 이루고 싶은 것들
- 장래 희망과 그걸 위해 가져야하는 소양은 무엇인가?
- 프로젝트를 하면서 자연스럽게 알게되는 여러 개념들 (특화된 언어/마케팅 ..)
- CI/CD의 장점에 대해 말해보세요. (배포)
- WAS와 Web Server의 차이점은 뭘까요? (Java)
- [추가적으로 마케팅도 해봤다면] 마케팅해봤다고 했는데, 분석도 해보았는지 (ARPU, MAU등)
결과
결론적으로 합격할 수 있었다. 이렇게 소마에 참여하고 싶었던 가장 큰 이유 중에 인턴 회사 생활을 하며 느낀 회의감이나 내가 그리는 개발자로서의 삶에 대한 고민이 가장 컸는데, 이번 소마 활동을 통해 이런 고민점들에 조금이나마 답을 찾아볼 계기가 되었으면 좋겠다.
끝으로 가장 당부하고 싶은 것은 바로 겸손!!, 또 겸손이다. 코테나 면접이나 절대 자만하지 말고 계속 배우는 자세로 꼼꼼하게 준비하면 꼭 합격할 수 있다. 그런 의미에서 주변 사람들로부터 계속 자극받을 수 있는 스터디도 추천한다. 스터디가 긴장감 완화에 최고다.
앞으로 1년동안 열심히 성장할 수 있도록 노력해야지 - 👍👍 올해 약속한 것처럼 조금 더 적극적인 마인드로 임하고 싶다. 화이팅 !!
'회고' 카테고리의 다른 글
[후기] 당근 Summer InternShip Backend 합격 후기 (6) | 2024.07.31 |
---|---|
[책 회고] 가상 면접 사례로 배우는 대규모 시스템 설계 기초 (0) | 2024.06.11 |
[2023 회고록] 3학년을 보내며 .. (10) | 2023.12.31 |
[후기] 2023 KAUPC 문제 출제 후기 (3) | 2023.08.02 |
[해커톤] 2023 KAU Sohot 해커톤 후기 (3) | 2023.06.29 |