주저리주저리

SW 마에스트로 13기 서류, 1, 2차 코딩테스트, 심층 면접 후기

JoJobum 2022. 3. 20.

 

 

자소서

 

 

자소서 문

  1. 소프트웨어분야 전문성을 키우기 위해 남들과 달리 특별한 노력을 한 경험을 서술하여 주시기 바랍니다. (최소 400자, 최대 3,000자 입력가능)
  2. 귀하의 장래희망을 서술하여 주시기 바랍니다. (최소 400자, 최대 3,000자 입력가능)
  3. 귀하께서는 2022년도 「SW마에스트로」 과정에서 동료 연수생들과 협력하여 새로운 프로젝트를 완성하여야 합니다. 어떤 능력을 갖춘 연수생들과 어떠한 프로젝트를 어떻게 수행할 것인지 귀하의 구체적인 계획을 서술하여 주시기 바랍니다. (최소 400자, 최대 3,000자 입력가능)
  4. 2022년도 「SW마에스트로」 과정에서는 연수생에게 장학금, IT기기, 프로젝트 활동비 등을 지원할 예정이며, 본인이 희망하는 온라인 강의와 프로젝트 수행을 도와주는 멘토를 통해 귀하의 SW능력을 향상 및 발전시킬 수 있는 기회를 제공하고 있습니다. 앞으로 귀하께서 본 과정을 통해 이루고자하는 목표가 무엇인지 구체적으로 서술하여 주시기 바랍니다. (최소 400자, 최대 3,000자 입력가능)

 

주저리주저리

일단 이 최대 3천자를 입력하라는 압박... 물론 400자 이상 최대 3000자 라고 안내했지만, 뭔가 뭔가.... 이 3000자에 가깝게 써야 사람이 성의가 있어보이고 열정이 보이지 않는가?? 만약 내가 검토하는 사람이라고 해도 그렇게 생각이 들거라는 생각에 1번 문항을 정말 쥐어짰다. 그렇게 맞춤법 검사 사이트 기준 2800자 정도 썼는데 복붙하니 2500자 정도로 줄더라 글자 세는 기준이 다른 것 같다. 

1번 문항을 그렇게 불태운 후로는 나머지 3문항은 힘들어서 약 1000자 근처로 작성해서 냈다. 사실 약간 코테 2번에 면접까지 본다는 말에 진짜 사람들을 떨어트리는 건 자소서가 아니라 자소서 이후 겠구나 싶어서 자소서는 그냥 진심을 담아 쓰면 되겠다라는 생각으로 내 안에 있는 내용만 적었다.

 

그러한 생각을 증명하듯 일단 서류 합격

 

 

 

 

 

코딩 테스트

 

항상 코딩테스트를 볼 때 느끼는 것이지만 시간 제한과 익숙하지 않은 환경(IDE가 아닌 코딩테스트를 여는 주최측이 제공하는 코딩 환경) 등이 꽤나 나에게 영향을 준다. 물론 그것을 감안해서 준비해야 하는게 시험을 보는 사람이 갖추어야하는 자세이지만, 그냥 괜시리 투덜거리게 된다.

 

이번에 SW마에스트로에서 제공한 환경은 "엘리스"라는 곳이였는데, 궁금해서 좀 더 알아보니 소마 수료생이 만든 서비스인 것 같았다. 자기가 수료한 캠프에서 자신이 만든 서비스를 사용하는 것을 생각하니 좀 멋있다... 

이런 긍정적인 인상을 받으면서 1차 테스트를 응시했는데, 좀 달랐던 점은 한번 썼던 키워드는 다시 사용할 때 자동완성을 지원하는 부분이였다. 예를 들어

static BufferedReader input = new BufferedReader(new InputStreamReader(System.in)); 이런 라인을 작성하면

다음에 static, BufferedReader, input 등등 이런 키워드들을 전부 치지 않아도 밑에 자동완성을 띄워주는, 우리가 인텔리제이로 사용하는 기능을 제공한다. 그래서 이전에 프로그래머스에서 교내 코딩테스트를 봤을 때에 비해 꽤나 편했던 것 같다.

 

 

 

1차 코딩테스트 

 

우선 나는 소마 코딩테스트가 알고리즘 문제들과 sql 1문제, 웹 관련 1문제로 구성되어 나오는 것을 올초 소마에 관심을 가질 때 알았는데, sql 이나 웹을 건들기 보다는 기존에 준비하던 알고리즘에 더 집중하는 식으로 준비하였다.

하지만 사실 나의 준비 부족이라고도 할 수 있다. 이 시험을 통과하는 것만을 집중해서 준비했으면 웹까진 아니더라도 sql까지는 충분히 시간을 들여 준비하는 것이 맞지 않았나 라고 생각한다. (그래야 안정적일듯...)

 

2시간동안 알고리즘 문제 6문제와 sql 1문제, 웹 1문제인데 우선 나는 알고리즘 6문제에만 집중하였다. 그리고 1차 문제들을 모두 풀고 나서 개인적으로 느낀 난이도는 백준 실버 1~5 정도 수준이였던 것 같다. 평소에 보통 백준에서 문제 하나 잡고 풀면 보통 30분 ~ 1시간 정도 걸려서 해봐야 어떻게 많이 풀지 했는데 난이도가 쉬운 편이라 금방 금방 풀 수 있었다. 밑에 말하겠지만 한 문제가 내용 자체는 어렵지 않았지만 구현하는데 시간이 오래 걸릴 것 같아 제외하고 푸니 5문제를 해결할 수 있었다. 해결했다라고 말했지만 사실 주어진 테스트케이스도 많지 않은데다가 내가 검증을 꼼꼼하게 하지도 못한 상태에서 제출했는데, 맞았는지 틀렸는지 여부도 안알려주니 결국 몇 문제 맟추었냐는 모른다 ㅎㅎ;;

 

문제 내용 작성시에 문제될 수 있다고 해서 일단 문제에 대한 언급은 다 지우도록 수정하였다.

알고리즘 6문제 sql 1문제 1문제 (css 관련) 리뷰 

 

  1. 문자열 관련 문제.
    • 문자열 리스트 받아두고 새로운 키워드 들어올 때마다 키워드 기준으로 문자열 리스트 순회하며 문자열과 키워드를 비교하는 방식으로 체크함 ( 문자열이 키워드보다 짧은 경우는 비교 전에 배제하였음)
  2. 구현, 자료구조 문제
    • 입력 부분 처리하면서 문제 읽는데 구현하는데 시간이 오래 걸릴 것이라 판단하여 후순위로 미룸, 그리고 시간이 부족하여 해결 못함
  3. 암호화, 복호화 문제
    • 암호화 한것을 ex) a->d, b->e 라면 HashMap에 역으로 (d, ('a'-'a') == 0) ,(b, ('e'-'a') == 4) 으로 알파벳 26개를 처리하여 넣어두고 복호화할 문자열을 HashMap에 한 글자씩 넣어 복호화하는 방식으로 해결하였다
  4. DFS 문제
    • 조합 문제라고 생각하였는데 자바로 조합 구현하는 것보다 dfs로 하는 것이 구현이 더 편해서 dfs로 해결하였음. 지금 생각하니깐 그냥 3중 for문으로 구현했어도 됐을것같다
  5. 구현?...
    • Ex) 1,3 에서 2,4,5 입력 받으면 => 1,2,3,4,5 에서 (3분의 1지점) 2 , (3분의 2지점) 4 출력하는 문제
    • Arraylist 에 담아두고 입력 받으면 add하고 라이브러리 이용해서 오름차순 정렬하고 3분의 1지점, 3분의 2지점 위치 출력하였음
    • 3분의 1지점, 3분의 2지점 위치에 규칙이 있어서 그것 활용함 => 초기 상태를 i =1, 3개씩 받기 시작할 때마다 i에 1을 더하면, (3분의 1지점, 3분의 2지점) = (i-1 , 2*i -1) 이 된다
  6. 그래프 문제
    • 나는 다익스트라였나?? 싶었다가 그냥 그래프 탐색으로 해결하였음. 전역 변수를 선언해두고 그래프 탐색하면서 최대 이득 갱신할 때 최대 이득이랑 노드 인덱스를 저장해두는 방식으로 구현하였다.

 

sql 이랑 웹 문제는 아예 안봐서 사실 모른다...ㅎㅎ

그리고 결과 발표는 코딩테스트를 본 토요일로부터 5일 후인 목요일에 메일로 발표가 났고, 나는 본인 추정 8문제 중 5솔로 합격했다. 사실 5솔하고 딱 제출했을 때 최종도 아니고 1차 테스트라 합격을 어느 정도 자신 했지만 메일로 결과보고 너무 기뻐서 주변에 자랑하면서 주접 떨었던건 ㅎㅎ... 지금 생각하니 좀 부끄럽

 

 

 

 

 

 

2차 코딩테스트

 

2차 코딩 테스트는 1차 테스트 2주 후에 봤는데 정말 그 사이에 문제를 한 3문제 풀었나... 스스로 자신감이 많이 떨어졌다. 학교 수업듣고, 팀 프로젝트 구상하며 서류 작업한게 주제 관련해서 문제가 생겨서 갈아엎고 다시 구상하고 서류작업해서 제출하는 등 문제가 발생해서 시간이 없었다.... 변명이긴 하지만 ㅎㅎ... 이런 문제가 생겨도 놀거 쉴거 다 챙겨서 생긴 문제긴 하다. 아무튼 뭔가 1차 때 보다 녹슨 상태에서 2차를 응시하게 되었는데 

2차는 알고리즘 3문제에 sql 1문제 웹 1문제이다.

 

알고리즘 3문제 sql 1문제  1문제 (javascript 관련) 리뷰 

 

  1. 조합 문제
    • 유저별로 특정 선호도를 넘기는 메뉴들을 담은 이차원 리스트를 만들어 두고,
    • 제거하는 메뉴를 비트마스킹을 이용한 조합으로 구성하고
    • 조합의 경우 별로 손님수를 이차원 리스트를 돌며 세고 최대 손님 수를 갱신해가며 찾는 방식으로 구현하였다.
  2.  유니온 파인드 문제
    • 핵심은 친구의 친구는 친구다 라는 것에서 유니온-파인드를 활용해서 이를 처리했다.
    • 그리고 두번째 포인트가 소수점 2번째 자리까지 표기 등 세세한 뽀인트가 있었다 (나도 이 부분에서 살짝 잘못 처리한 거같은 느낌이다)
  3. 14500번: 테트로미노 (acmicpc.net) 와 컨셉은 비슷하나 다르고 더 어려웠던 문제
    • 처음에는 블록을 놓고 놓고 하면서 백트래킹으로 해결하려고 했는데, 경우의 수도 많고 안될 것 같았다.
    • 생각을 하다 보니 DP로 해결할 수 있을까? 라는 생각이 들었으나 구체적인 방안도 생각나지 않았고 시간도 충분하지 않아 1,2번을 검토하다가 끝냈다

 

웹 문제 같은 경우 동일하게 문제를 읽지도 않았고, sql 문제는 시도하기 위해 읽어보았지만 준비가 안된 나는 풀 수 없는 난이도였다.

결국 알고리즘 3문제 중 2문제를 간신히 푼 그것도 한 문제는 좀 구멍이 뚫린 채로 내버려서 이 글을 생각보다 일찍 게시하게 되었다. 아직 결과는 안나왔지만 어느 정도 떨어질걸 예감을 해서...  결과가 나오면 결과가 나오는대로 업데이트는 할 예정이다.

 

3.22 (화요일, 테스트 이후 3일 후) 오후 2시에 발표가 나면서 2차까지 합격하여 면접으로 넘어갔다는 소식을 알리며...

 

 

 

 

 

 

심층 면접

 

 

심층 면접은 코엑스 컨퍼런스 홀에서 이루어졌고 같이 소마를 준비하시던 분의 계산에 의하면 6타임 * 5조 * 5명 * 4일간 으로 얼추 600명 정도 면접을 보지 않겠냐 라는 예상으로 최종 합격자가 250명인 걸 감안하면 경쟁률 2.xxx 대 1의 상태였다. 

나는 2번째 날의 오후 시간대였는데 아침에 가서 카페에서 준비하였는데, 멀리 걷기는 싫고 근처에서 찾는데 카페가 안보여서 잠바쥬스? 라는 곳에서 기다리면서 준비했다. (와이파이도 제대로 안터지고 아주 비추천한다,,, 그리고 나중에 찾았는데 컨퍼런스 홀 1층에 카페가 있더라)

 

이번의 소프트마에스트로 심층 면접이 이전과 다른 점이 있었는데 그것은 바로 포트폴리오 발표였다

그리고 첫날 면접 본 사람들의 후기에 의하면 포트폴리오에서 중점적으로 질문이 나오고 그외로 이제 이전 기수들이 많이 적어놓은 인성 쪽, 코테, 서류 때 냈던 자소서 관련 질문들이 들어온다는 것이다. 그래서 카페에서 포트폴리오 발표랑 몇 가지 예상 질문들에 대한 예상 답변을 준비하는 등 나름대로 준비를 하다가 올라갔는데, 첫 면접이기도 하고 좀 그냥 처음엔 가볍게 지원한 것인데 면접까지 와버리니깐 진짜 나도 소마에 붙고 싶은 마음이 점점 더 커져서 간절해서 더욱 떨렸다. 

그래서 이제 엉덩이를 못 붙이고 1시간 정도 일찍 왔더니 일찍 못 들어간다고 진행 요원분들한테 듣고 앞에 벤치에서 앉아서 준비했던 것들 읽다가 들어갔다. 들어갈 때 이제 저런 개발자 들이 좋아하는(?) 스티커 2장과 소마 소개 책자, 그리고 면접비 3만원을 빳빳한 봉투에 넣어 주셨다. 

각 대기실에 대기하다가 면접 시간 한 7~5분 남기고 면접장 앞으로 이동해서 간단한 진행 설명 듣고 시간이 되어 입장했다.

 

 

어.... 우선 결론부터 말하자면 말아먹고 왔다.

 

사실 현재 4학년에 전공 과목 꽉꽉 채워 듣고 있는 중이라 면접 준비를 제대로 하지 못했다고 변명하고 싶지만, 사실 단기간에 해결될 수 있는 문제가 아니였던 것 같다. 우선 내가 개발하거나 프로젝트하면서 뭔가 알게 된 사실, 이론적인 지식들을 머리에 암기해놓는 것이 진짜 약하다. 그것은 학생 시절 공부하면서도 느낀게... 약간 느낌이 I/O 속도는 남들보다 살짝 더 빠르지만 용량이 좀 딸리고 휘발성이 강한 느낌?? 변명의 변명이다.

 

그래서 포트폴리오 쓸 때부터 본격적인 기술 면접으로 들어가면 내가 강점을 보여주기 보다는 사실 제대로 대답하지 못하여 단점을 많이 보여드릴 것 같아 좀 의도적으로 프로젝트를 설명할 때에도 기술적인 부분보다는 프로젝트 자체와 거기서의 내가 한 역할 그리고 거기서 배운 점을 중점으로 준비해서 발표를 했다. 근데 이제 3분 발표라 꽤 빡빡하게 구성했는데 내가 너무 떠는 바람에 살짝 느려지고 중간에 시간초과나서 하고 싶은 말을 다 못하고 발표를 마쳤다.

 

같은 조에 있는 5명들이 다 발표를 마친 순간에는 그냥 뭐 나쁘지 않았다 솔직히 누가 특출나 보이지도 않았고 오케이 할만해 할만해 라고 생각하고 있는 상태

 

5명의 면접관님들이 한 분씩 전체에게 개별 질문을 하거나 공통질문을 하는 방식으로 진행되었다. 

 

나한테는 이제 길찾기 프로젝트에서 A* 알고리즘이나 다익스트라 알고리즘에 대해서 언급했는데 A* 알고리즘에 대해서 설명해주세요 라고 첫 질문이 들어왔을 때 아차... 싶었다. 근데 사실 포트폴리오에서 어떠한 이유로 위에 언급한 알고리즘을 사용하지 않게 되었고 다른 방식으로 문제를 해결했다는 부분에 대해 까지 말했지만, 나는 당시에 A* 알고리즘을 겉핥기 식으로 공부했었고 솔직히 머리에 하나도 내용이 남아있지 않았다. 그래서 좀 생각하다가 모른다고 했다. 

 

그리고 연속으로 들어온 질문이 길찾기 서비스를 구현할 때 자동차 도로의 종류의 개수를 아시나요? 물어봤는데 진짜 당시 내 머릿속은 ???? 그냥 머리가 하얘져버렸다. 왠 뚱딴지 같은 질문이지 싶었고 당황한 나머지 너무 빨리 모르겠다고 말해버렸다. 지금 생각해보면 아마 논리적 사고로 추론하는 과정을 보고자 한 게 아닐까?? 라는 생각도 들지만 진짜 그건 좀 생각이 정리되고 나서 지금에서야 드는 생각이지 면접 당일날 난 진짜 나한테만 왜 이런 질문을 한거지라는 생각이었다.

 

그 이후로는 공공 와이파이가 서울에 많은데 이를 활용하여 어떤 서비스로 시민들에게 도움을 줄 수 있을까? 나 팀프로젝트를 진행하는데 자신이 기여할 수 있는 부분 등의 공통 질문을 받고

 

코테 관련해서 2차 1번 문제에서 비트마스킹으로 조합을 구현해서 푼 부분에 대해서 질문하셔서 그 부분은 깔끔하게 대답하고 이때 좀 만회해야겠다 싶어서 이전 질문에 대해서 보충해도 되냐고 여쭙고 당시 프로젝트가 도보 길찾기에 관한 부분이라 자동차 도로에 대한 조사가 부족했다 라고 질척거렸다... ㅎㅎ.... ( 이때까지만 해도 논리적 사고 전개를 보려고 낸 질문일 수도 있다는 생각을 전혀 못함, 아닐 수도 있지만... )

 

그리고 마지막에 하고싶은 말 있냐고 물었을 때 맨 처음 알고리즘 관련 질문에서 기반 데이터가 없어서 A* 알고리즘를 쓸 수 없는 상황이라 공부를 하다 말아서 잘 몰랐던 것이고, 그냥 API에서 결과 들고와서 보여준게 아니라 나름의 알고리즘을 적용해서 서비스를 구현하였다라고 또 질척거렸더니 면접관님이 살짝 웃으시면서 "아 괜찮습니다 허허" 이러셨는데 이게 난 약간 "(그거 아니여도 떨어질 건데 뭐 대답 못했어도) 괜찮습니다 허허" 로 들렸다. ㅋㅋㅋㅋㅋㅋ 약간 지금 부정적인 사고에 잡아먹혀서 그런 것도 있겠지만 내가 당시 느꼈을 땐 그랬다 ㅋㅋㅋㅋ....

 

 

 

 

아무튼 이렇게 아주 시원하게 말아먹고 나오니 그냥 후련했다. 그냥 진짜 딱 하나 미련 살짝 남는건 마지막 어필할 수 있는 시간에 참가 의지에 대한 어필을 좀 강하게 할껄 그랬나?? 라는 미련이 남는 것을 제외하면 그래도 하고 싶은 말은 다 뱉고 나와서 후련했다. 하지만 열받는 건 또 열받는 거라 별마당 도서관 앞 이마트 24에서 아이스크림 하나 먹으며 식혔다.

 

내 자체 평가로는 탈락각이 매우 날카롭게 잡힌 것 같았다. 일단 내 앞 순번 사람은 진짜 좀 기술적으로 준비도 많이 해서 관련 질문하였을 때 아주 기깔나게 대답하니깐 그 흔히 말하는 꼬리 질문이 이어졌고 그에 대한 대답들도 잘 해냈던 것으로 보였다. 그러한 흐름이 합격에 가까운 흐름이라고 생각하면 거의 반대의 흐름이라 해도 무방해서 탈락할 느낌이다. 진짜 떨어지면 너무 아쉽고 진짜... 맘이 아프긴 할거 같은데 그래도 그동안 코테 준비한 것이 빛을 발했던 것이 좋았고 면접을 볼 수 있었던 것도 좋은 경험이었다고 생각하겠다. 그리고 소마 면접 탈락한 후기글은 잘 없던데 아마 내가 좀 대표 주자가 될 수 있지 않을까 라는 생각도 하면서 마무리짓는다.

 

나중에 결과 나오면 추가 업데이트 하겠다.

 

====22.04.08 오전에 날라온 문자로 면접탈락 후기글(진)에서 최종 합격 후기글로 변했다는 점을 알리며====

반응형

댓글