안녕하세요! 우테코 6기 최종 탈락 후 강해져서 돌아온 저입니다!!
이번 SW 마에스트로 15기 지원 과정을 겪으며 정말 우테코 6기 급으로 얻은 것이 많아서 회고를 작성해보려 합니다.
이번 지원 과정은 기술적인 부분보다 마인드적인 성장이 훨씬 더 많았던 것 같습니다.
회고를 작성하며 서술해보도록 하겠습니다!
자기소개서
- SW분야의 전문성을 키우기 위해 몰입했던 경험과 도전이 무엇인지, 또한 이러한 성장과정을 통해 얻은 배움
- SW마에스트로 과정 참여를 통해 수행하고 싶은 프로젝트
- 우선 첫 번째 문항에는 제가 처음으로 불편함을 개선하기 위해 만들었던 크롬 확장 프로그램, 알고리즘 스터디, 우테코 6기 프리코스를 서술하였습니다.
크롬 확장 프로그램은 불편함을 개선하기 위해 만들었고 성공적으로 배포까지 해보았다는 것을 적었고 알고리즘 스터디는 제가 직접 만들어 스터디 계획, 스터디 과정을 그렇게 계획한 이유를 차근차근 설명하며 적었습니다. 우테코 프리코스는 저에게 큰 몰입을 경험하게 해준 코스이므로 이에 대해 느낀 점과 성장한 부분에 대하여 적었습니다.
- 그리고 두 번째 문항에는 제가 하고싶은 프로젝트를 서술하였습니다!!
1차 코딩 테스트
- 저는 우선 꽤나 꾸준히 백준이나 프로그래머스에서 알고리즘 문제를 풀어왔습니다. 1차 코딩테스트를 응시할 당시 저의 백준 티어는 골드 3이었습니다!
이 외에도 SW 마에스트로 코딩테스트를 준비하려고 백준의 sw마에스트로 기출 문제집들을 풀어보았습니다!!
- 또한 SQL 대비로는 프로그래머스 고득점 kit 문제들을 한개도 빠짐없이 다 풀어보았습니다!
1차 코딩테스트 문제
- 1차 코딩테스트는 총 5문제가 나왔으며 알고리즘 4문제 + SQL 한 문제가 나왔습니다. 저는 SQL 먼저 풀고 알고리즘을 차례대로 풀었습니다!
😀1번 문제 - 체감 난이도 : Bronze
거리 별 배달료
- 1번 문제로는 간단한 구현 문제가 나왔으며 체감 난이도는 브론즈 정도 됐었던 것 같습니다. 기본적으로 리스트, for, if 문만 다룰줄 안다면 풀 수 있는 문제였다고 생각합니다!
😀2번 문제 - 체감 난이도 : Silver 하위
지그재그 삼각형 넓이
- 2번 문제는 수학이 약간 가미된 구현 문제였다고 생각합니다. 운좋게 보자마자 아이디어가 바로 떠올라서 풀었습니다. 평소에도 알고리즘 문제를 수학과 관련된 문제 푸는 것을 좋아해서 쉽게 풀었던 것 같습니다!!
😀3번 문제 - 체감 난이도 : Silver 상위
CSS 폰트 사이즈 변경
- 3번 문제도 구현으로 해결하였습니다! 크게 알고리즘이 필요하진 않았고 로직을 잘 짜놓은 뒤 문제에 접근하면 풀 수 있는 문제였다고 생각합니다! 저는 dictionary를 이용하여 풀었습니다!!
😢4번 문제 - 체감 난이도 : Gold 하위
나머지에 따라 정렬하기
- 4번 문제도 자료구조 + 구현 문제였던 것 같습니다! 자료구조를 잘 이해하고 로직을 잘 짜야 풀 수 있는 문제였던 것 같습니다. 당시 풀 때는 로직을 잘못 구성하여 시간을 많이 낭비하여 못 풀었었는데 복습할 때는 오히려 50분?정도 만에 풀었던 것 같습니다. 복습했을 때는 deque과 방문 처리 로직을 이용했고 코드는 30줄 정도 나왔습니다! 역시 코딩테스트는 로직을 짜는 것이 중요하다는 생각을 했습니다!!
😀5번 문제 - SQL
사용 언어 그룹 묶기
- 5번 문제는 사람들과 각 사람의 사용 언어가 있을 때 각 사용 언어가 1개씩은 무조건 포함되는 그룹의 최솟값을 반환하는 문제였습니다! 저는 언어 별로 테이블을 묶고 정렬하여 limit 1을 반환하여 문제를 해결하였습니다!!
1차 코딩테스트 후기
- 1차 코딩테스트는 구현 문제가 많이 나왔고 논리성을 검사하는 문제들이 많이 나왔다고 생각합니다. 16기 코테 문제에도 구현 문제가 많이 나올지는 모르겠지만 구현 문제를 꾸준히 풀어보시고 시험이 얼마 안남았다면 프로그래머스 문제를 많이 풀어 프로그래머스 환경과 문제에 익숙해지시기를 추천 드립니다👍

합격!
2차 코딩테스트
- 2차 코딩 테스트 준비로는 dp, dfs, bfs 문제들과 1차와 비슷한 문제가 나올 것에 대비하여 구현 문제들을 많이 풀어보았습니다!
2차 코딩테스트 문제
- 2차 코딩테스트도 1차 코딩테스트와 동일하게 총 5문제가 나왔으며 알고리즘 4문제 + SQL 한 문제가 나왔습니다. 저는 1차 때처럼 SQL 먼저 풀고 알고리즘을 차례대로 풀었습니다!
😀1번 문제 - 체감 난이도 : Silver 하위
- 1번 문제는 그리디 문제였던 것 같습니다. 문자열이 주어지고 문자열을 단어 단위로 잘라서 칸에 넣는 문제였습니다! 저는 문자열을 잘라서 검증하여 조건에 부합하면 넣고 부합하지 않다면 넣지않는 방식으로 로직을 구성하여 풀었습니다!
😢2번 문제 - 체감 난이도 : Gold 중위
- 2번 문제는 DP문제였습니다. 바구니에 떨어지는 사과를 넣은 갯수를 세는 문제였습니다. 나중에 서술하겠지만 저는 5번 문제로 인한 심신미약 상태에 있었고 이후 문제들에 대한 로직을 제대로 짜지 못했습니다. 그로 인해 이 문제는 그냥 패스하게 되었습니다. 복습을 했을 때는 3차원 dp테이블을 만들어 문제를 풀었습니다.
😀3번 문제 - 체감 난이도 : Silver 상위
- 3번 문제는 병합 정렬 문제였습니다. 이번 문제는 포화 이진 트리에서의 모빌 회전 문제였습니다. 다른 알고리즘으로 푸신 분들도 있겠지만 저는 분할 정복 비슷한 알고리즘으로 한 15분 정도로 문제를 빠르게 풀고 넘어갔습니다. sw마에스트로에 코테 시간 제한은 10초 였고 시간 복잡도가 10초는 넘지않겠다는 판단 하에 최적화는 진행하지 않았습니다.
😢4번 문제 - 체감 난이도 : Gold 상위
- 4번 문제는 브루트 포스와 비트 마스킹을 이용한 문제였다고 생각합니다. 이번 문제는 +, x 모양을 이용하여 모든 판을 0으로 만드는 문제였고 제 생각에 백준 14939 불끄기 문제와 상당히 유사하다고 생각합니다. 복습할 때는 완탐과 비트마스킹을 이용하여 풀었고 시험 때는 이 문제에 한 30분 정도 쓴 것 같습니다. 지금 드는 생각으로는 이 시간을 2번 문제에 투자했다면 2번문제를 해결할 수 있지 않았을까라는 아쉬움이 듭니다...
🤔5번 문제 - SQL
- 5번 문제는 변수를 저장하며 이전 열의 날짜와 현재 열의 날짜를 테이블에 정리해주는 문제였습니다. 이전 열의 날짜와 현재 열의 날짜는 leftjoin과 ifnull로 해결하였고 변수를 저장하는 것을 해결하지 못했습니다. 처음에는 row_num으로 값을 불러오는 것을 생각했지만 변수를 저장하는 로직을 생각해내지 못했고 테이블 정렬만 완료한 채로 제출하게 되었습니다. 저는 이 SQL 문제를 가장 오래 풀어 거의 1시간동안 붙잡고 있었는 것 같은데 못풀어서 시험 도중 집중력 관리에 실패했던 것 같습니다. 복습할 때는 @SET을 이용하여 해결하였고 프로그래머스 연습문제에는 등장하지 않는 문법이지만 16기를 도전하시는 분들은 한 번쯤 공부해보고 가시는 걸 추천 드립니다...
2차 코딩테스트 후기
- 2차 코딩테스트는 dp문제가 많이 나왔던 것 같습니다. 또한 SQL 문제가 정말 예상 밖의 문제가 나왔기 떄문에 헤맸던 것 같습니다.. 16기를 준비하시는 분들은 꼭 dp문제들을 많이 풀어보시고 가시는 것을 추천드립니다!!

합격!
심층 면접
- 정말 깨달은 것도 많고 성장한 것도 많은 심층 면접이었습니다.. 우선 저는 끝마친 프로젝트는 없었고 프로젝트는 프론트엔드 프로젝트와 진행중이었던 Spring 프로젝트가 있었습니다. 포트폴리오에 이를 넣을까 고민하다가 끝내 넣게 되었고 프로젝트를 시작하게 된 계기와 프로젝트에 사용하였던 기술들을 나열하여 넣게 되었습니다. 기술들을 나열하는 것은 정말 피하고 싶었지만 제가 할 줄 아는 것들을 어필하기 위해 넣게 되었습니다. 그 당시 프로젝트의 진행 상황은 oauth2를 이용한 로그인 구현, session+redis를 이용한 세션 정보 관리, aws ec2를 이용한 서버 구축을 했었습니다. 포트폴리오 작성 후 session 방식을 jwt 토큰 방식으로 변경하게 되었고 이를 변경한 이유와 위 사용 기술들의 도입 이유와 특징, 차이점 등을 복습하고 갔습니다. 제가 준비한 예상 면접 질문은 다음과 같습니다.
- 예상 면접 질문이 길어서 소마 면접을 준비하시는 분이 아니라면 우측의 실제 면접 칸으로 넘어가시는 것을 추천드립니다!!
예상 질문
인성 질문
- 소마에 참여하게 된 계기
- 5년 뒤 되고 싶은 개발자 모습과, 그걸 위해 하고 있는 노력
- 5년 내에 가장 유망할 기술과, 이를 소마에서 어떤 아이디어에 적용할지
- (개발 역량이 없는 지원자 대상) 현재 개발 역량이 없는데, 짧은 소마 기간 동안 이를 어떻게 극복할지
- 자신이 어떤 지식을 받아들일 때 보편적으로 하는 행동은?
- 자신이 개발을 하는 이유는?
- 팀 프로젝트에서 협업 경험을 하면서 불화나 이런 부분 있었는지 해결 방안까지
- sw 마에스트로에서 얻어가고 싶은 것은 무엇인가요?
- 코딩테스트 준비하면서 많은 생각이 들었을 텐데 어떤 부분이 부족하다고 느꼈고 어떻게 극복하고 있는지
- 내가 생각하는 소프트웨어 개발이란?
- 프로젝트에서 맡고 싶은 포지션과 이유는
- 팀원들끼리 사용하는 기술 스택이 다르다면?
- 프로젝트 마감기한이 다 되었다면 어떻게 대처?
- 코드 작성하는 규칙은 팀원끼리 어떻게 상의할 계획인지?
- 기업가정신이란?
- 왜 뽑혀야하는지
- 뽑고싶은 팀원
- 팀원이 도중에 도망간다면?
- 학업과 소마 병행 가능한지?
- 멘토님과 내 의견 충돌은 어떻게 해결할 것인가
- 팀 간의 갈등이 생기면 어떻게 해결할 것인지
- 팀원과 갈등이 생기면?
- 팀장 역할을 좋아하는지 팀원 역할을 좋아하는지?
- 올해 자신이 소마를 꼭 해야 하는 이유?
- 안 하고 싶은 팀원이 있다면 그 이유
- SW 마에스트로에 어떤 식으로 기여를 할 수 있는
- 개발과 관련된 최신 트렌드
- 프로젝트에 있어서 가장 중요한 것이 뭐라고 생각하나요?
- 하고 싶은 프로젝트가 너무 작지는 않는지?
- 자신의 기술적 강점이 무엇인지? (경험 위주로)
- 생활 속에서 문제를 해결하기 위해 알고리즘 적용해본 사례가 있는지?
- 소마 과정에서 배우고 싶은 현업이 무엇인지?
- 팀원을 구할 때 어떤 팀원을 구하고 싶고, 그 팀원에게 나를 어필할 수 있는 부분은 무엇인지?
- 팀 프로젝트를 하는데 있어서 팀원들이 참여 의지가 없다면 어떻게 대처할 것인지
- 하고 싶은 프로젝트는 무엇이고 어떻게 진행할 것인지?
- 소마 프로젝트에 자신이 기여할 수 있는 기술은?
- 소마가 지원하는 혜택을 어떻게 활용할 것인지?
- 팀 프로젝트 진행하면서 하고 싶은 것 기술, 프로젝트 아이디어는 어떤 것이 있는지.
- 본인이 가장 자신 있는 IT 기술과 수준, 이를 기반으로 한 협업 경험
- 뽑힐려면 딴 사람을 떨어뜨려야 하는데 자신이 뽑혀야 하는 자신의 강점을 말해봐라
- TodoList의 반대인 NotTodoList 그러니까 하지 말아야 할 것들의 목록이 있다면 무엇을 작성하고 싶은지
- 연수생들 중 내가 이것은 상위 10% 안에 든다고 생각하는 능력
- 팀원으로서의 스스로의 장단점을 말씀해주세요.
- 마지막으로 하고 싶은 말이나 준비했는데 답변하지 못해서 아쉬웠던 부분
기술 질문
- RESTful API란?
- RESTful API의 특징
- RESTful API의 장단점
- REST API 종류?
- GET vs POST
- POST vs PUT, PATCH
- PUT vs PATCH
- IT기술이 사회적 문제 해결에 도움을 주는 예시
- SW마에스트로에서 참여하게 될 프로젝트에 도입할 신기술의 예시 하나를 들고, 어떻게 팀원들을 설득할지 설명하라
- 소마에서 팀 프로젝트 시 새로운 기술을 적용할 때 끝까지 못할 수도 있는데 이에 대한 해결 방법
- 객체지향에 관심 있는 것 같던데 디자인패턴이 뭔가요?
- 최근에 사용했던 디자인 패턴이 뭔가요?
- 해당 디자인 패턴의 문제점?
- 해당 디자인 패턴을 어떤 기능에 적용해 보셨나요?
- 전략패턴이란?
- 기록을 슬로건으로 내거시던데 기억이 파편화되는 상황에 대한 해결책이 있나요?
- 기록을 중요시하시는 것 같던데 로그를 수집하거나 따로 관리해 본 경험이 있나요?
- 프레임워크란
- 사용해본 프레임워크의 특징
- 사용해본 프레임워크 장단점
- 가장 좋아하는 언어와 해당 언어의 장단점
- 가비지 컬렉션이란
- 자바 컴파일 과정은?
- Java와 C의 차이? C와 Python 차이?
- 컴파일 언어와 인터프리터 언어의 차이?
- 우리가 주소창에 url을 칠 때 어떤 방식으로 view가 렌더링 되는지 아는 대로 설명
- DI에 대해 설명?
- DI를 통해 구현체를 변경하는 것은 보통 인증 처리에 많이 사용될 텐데 이를 구현해 본 경험이 있으신가요?
- HTTP 특징?
- 쿠키란?
- 세션이란?
- jwt(JSON Web Token)란?
- RDB의 특징
- NoSQL의 특징
- In-Memory DB의 특징
- NoSQL DB와 RDB의 차이점에 대해 설명해주세요
- Redis
- Redis를 사용한 이유는 무엇인지?
- redis persistence → 장애 발생 가능성 높음, 캐시용으로 사용한다면 off
- 캐싱 전략
- 발생가능한 문제점
- AWS 관련
- EC2?
- AMI(Amazon Machine Images)
- EBS( Elastic Block Store )란?
- S3(Simple Storage Service)
- RDS(Relational Database Service)
- VPC(Virtual Private Cloud)
- SWAP 메모리란?
- 여러 SW기술적 발전 중 세상에 가장 큰 영향을 준 것?
- 무중단 배포와 방식?
- 라우팅 : 네트워크에서 경로를 선택하는 프로세스
- 로드 밸런싱(부하 분산) : 서버에 가해지는 부하를 분산해주는 것(트래픽을 균등하게 분배)
- 분산처리에 대해 아는 대로 말하세요
- AWS를 사용해본 것 같은데, 클라우드란 무엇인가요
- AWS에서 보안 그룹 서브넷 설정은 어떻게 했나요?
- 실제 프로젝트를 배포한다면 생기는 기술적 문제점과 그 해결책
- WAS와 Web Server의 차이점은?
- 애자일 방법론
- nginx란?
- 도커란?
- 클러스터란?
- Process vs Thread
- 데이터베이스란
- 데이터베이스 관리 시스템이란
- 데이터베이스가 필요한 이유
- 캐시란?
- 캐싱이란?
- 데이터지역성이란?
- Spring DI에 대해 설명해주세요
- 가장 최근에 블로그에 작성한 게시글은 무엇인지?
- 최적화경험이 있는지?
- 병렬 처리와 분산 처리의 차이점
- oauth2란?
- oauth2 흐름
- 왜 oauth2만 사용?
- 추상 클래스와 인터페이스의 차이
알고리즘 관련
- 정렬 알고리즘 시간 복잡도
- 알고리즘을 설계할 때 중점적으로 생각하는 것은
- 알고리즘의 정의
- 코드의 효율성을 확인하는 기준이 무엇인지 (답: 시간복잡도, 공간복잡도)
- 코딩 테스트 문제에서 어떤 알고리즘 및 자료구조를 쓴 것인지?]
- 예상 질문은 이정도를 준비하였습니다!! 인성 질문은 저의 생각을 한 번 정리해보는 용도로 생각을 글로 정리해보았고 기술 질문은 키워드를 핵심으로 외워 준비하였습니다!!
실제 면접
- 소마에서 실제 면접 질문을 유출하지 말라는 것을 보아 정보 유출에 신경을 많이 쓰는 것 같아 받았던 질문을 언급하지는 않겠습니다!!
저희 분과는 100% 기술 질문이 들어왔고 인성 질문이나 알고리즘 질문은 하나도 들어오지 않았습니다!! 심지어 마지막으로 하고싶은 말도 안 물어보셨습니다..
- 대부분 아키텍쳐에 관해 묻는 질문들이 나왔고 몇몇 면접관 분들께서 프로젝트가 없어서 질문하기가 까다롭다는 말을 해주셨습니다.. 이럴 때를 대비하여 열정이라도 보여드리려고 인성 질문이나 코테 대비 질문들을 많이 준비해갔는데 저희 분과가 프로젝트 기술 위주로 질문하는 분과였는지 크게 도움이 되지는 않았고 프로젝트가 빈약했던 저의 패착이었던 것 같습니다..
- 하지만 깨달은 점은 많습니다!! 프로젝트를 할 때 어느 쪽에 중점을 둬야할지 깨달았고 앞으로의 방향성에 대해서 많은 생각을 하게 되었습니다!!
- 이는 회고에서 담아보도록 하겠습니다!!
최종 회고
-
저는 이번 프로젝트를 진행할 때 공부 -> 프로젝트 적용이나 필요한 내용 공부 -> 프로젝트 적용과 같은 방법으로 프로젝트를 진행하였습니다.
하지만 이번 면접을 겪으며 프로젝트를 진행하는 것도 중요하지만 기반 지식들을 차근차근 쌓는 것도 중요하다는 생각을 하게 되었습니다.
프로젝트를 수행한다고 프로젝트에 사용했던 지식들이 내 것이 되는 것이 아니고 공부를 따로 한다고 그 지식을 프로젝트에 바로 쓸 수 있는 것이 아니기 때문에 프로젝트를 진행할 때 공부를 깊게 하는 것이 중요하다는 생각이 들었습니다.
그래서 저는 기존의 프로젝트 코드를 다 삭제하고 처음부터 다시 진행하여 필요한 내용 공부 -> 정리 및 기록 -> 프로젝트 적용과 같은 방식으로 프로젝트를 해보려 합니다. 너무 배포하고 면접을 준비하는 것에 급급하여 중요한 기초를 놓치게 되었고 이는 저에게 큰 도움이 되지는 않았다고 생각합니다.
또한 컴퓨터 지식들도 깊은 이해들이 필요하다는 생각이 들었습니다. 컴퓨터 지식을 얕게 알고있었던 저는 예상 질문의 추가 질문을 생각해볼 때 막막함을 느낀 경우가 많았고 이 부분에 대해서도 많은 성장이 필요하다고 느꼈습니다.
-
이번 소마 15기 지원 경험은 저에게 정말 많은 깨달음과 저의 부족함들을 마주하게 된 순간이라 생각합니다.
때로는 실패하는 경험이 저를 더 크게 성장시켜준다는 생각이 들게하는 계기가 되었습니다.
저는 이번에 마주한 부족함들을 피하지않고 어렵더라도 꼭 극복해낼 것입니다.
다음 회고까지 더 성장해서 돌아오겠습니다!!!😁😁