티스토리 뷰

반응형



  후기를 포스팅 해야하나 말아야하나 고민을 했지만, 저 역시 멤버십을 준비하면서 인터넷과 개인 블로그의 정보를 많이 참고 하였고, 특히나 이번부터 바뀐 면접 전형에 대해 다음번의 지원자들이 조금이나마 참고할 수 있기를 바라며 포스팅합니다.



  제가 지금 다니는 가톨릭대학교는 소프트웨어 멤버십 설명회가 매 학기마다 옵니다. 그 당시 들은 내용이지만 이번 멤버십 25-1기 선발부터는 전형이 조금 바꼈습니다. (사실 저는 24-2 불합격자입니다.) 이전에 있던 On-Site 전형이 사라지고 오로지 Portfolio 전형만 존재하고, 서류 전형 통과한 뒤의 면접이 '코딩(알고리즘) 면접'과 제출한 포트폴리오를 기반으로 진행하는 '보유기술 면접'으로 나뉘었습니다. 포트폴리오 양식도 변경되었는데, 이전까지는 대표 프로젝트 하나만 포트폴리오로 작성해서 제출하면 끝이었지만, 이번 부터는 보유 기술, 전공 수업, 교내/교외 프로젝트, 대표 교내/교외 프로젝트 등 작성해야할 항목이 훨씬 늘었습니다. 포트폴리오를 작성하면서 혼란이 왔던게 '포트폴리오 내용을 전부 PT때 넣어야하나?' 라는 점이었습니다. 이 부분은 좀 더 뒤에 계속 얘기를 풀어보겠습니다.

  훨씬 분량이 증가한 포트폴리오를 약 3일간 밤낮을 지새가며 완성을 하니 18 페이지가 나왔습니다. 24-2기 지원서가 10페이지 정도에 폰트 크기가 좀 더 컸으니, 이번 포트폴리오는 분량이 약 3배정도 증가한 느낌입니다. SECMEM 지원 홈페이지에서 작성하는 내용(학력, 자격증, 자기소개, 대외활동 등)은 그대로 입니다. 하여튼 마감 30분 전쯤에 제출을 하고 약 1~2주 뒤 받은 메일.



  대표 교외 프로젝트가 미완성이라 불안했는데, 어찌어찌 서류 전형을 통과했습니다. 서류합격 메일을 받고 나서 면접까지는 약 1주일의 시간이 주어졌습니다. 저는 그 기간 중 4일 정도를 개발 중이던 프로젝트를 어찌어찌 프로토타입까지 완성하는데 사용하고, 남은 3일을 PT 제작과, 전공 지식 복습에 사용했습니다. 개발하던 프로젝트의 경우 애초에 처음 공부하는 프레임워크를 사용했던 터라 API를 익히는데 꽤 많은 시간을 소모했습니다. 그리고 PT는 아무래도 미완성 프로젝트이다 보니, 포트폴리오에 기재된 다른 프로젝트까지 어느정도 기술하는게 좋을 것 같아 해당 내용을 포함했습니다. 그랬더니 총 64 슬라이드가 나옵니다. 분량에 대한 슬픈 얘기도 뒤에 하겠습니다.

  드디어 기술 면접 전날입니다. PT양이 많은 관계로 시간 부족을 예상, PT내용을 4부씩 인쇄해서 쫄대에 끼워 준비했습니다. 그런데 지난 기술 면접때 고배를 마신적이 있기에 '긴장감' + '내가 모르는 분야를 물어보면 어쩌지?' 하는 마음에 잠이 안옵니다. 그래서 지원한 분야인 운영체제와 시스템 프로그래밍, C++, 알고리즘 책을 싹 다시 봤습니다.. 페이징, 스케쥴러, 가상함수, 동적 계획법 등 복습하는 느낌으로 싹 한번 훑었습니다. 읽다보니 재밌어서 결국 1시간 자고 면접장으로 출발합니다;; (멘붕 시작. 다른 분들은 절대 이러지말고 잠을 충분히 주무세요.. 코딩 면접 때 멘붕옵니다. 그래도 전공 지식은 한 번쯤 다시 훑고 가면 도움이 됩니다.)




  당일 입니다. 압구정에 있는 강남 멤버십(으로 추정되는)에 아침 7시 30분까지 가야합니다. 면접 타임이 오전/오후로 나뉘어 있는데 오전이면 7시 30분, 오후면 12시 30분까지 집합인 듯합니다.

  시간에 맞춰 도착하고, 성적증명서, 재학증명서를 제출하고, 신분증으로 본인확인을 합니다. 그리고 대기실로 가서 코딩 면접을 위한 사전 코딩을 준비합니다. 코딩 면접은 7시 50분 부터 8시 50분까지 1시간 가량 진행됩니다. 문제 난이도는 중/하 로 각각 중 1문제, 하 2문제가 나오는데, 문제 자체가 진짜 어렵거나 DP, 비트마스크 같은 기법을 사용해야하는 문제는 아니었습니다.(갑자기 더 위 난이도의 문제가 궁금해지네요.) 코드 제출은 SSM 전용 프로그램을 사용해 제출합니다. 저같은 경우는 오히려 난이도 중 문제보다 하 문제가 더 어렵더군요. 문제에서 주어진 조건이 애매한 편인데(ex. 문자열의 최소 길이는 주어지는데 최대 길이는 안주어진다거나) 다른 분들은 크게 신경쓰지 않고 푸시는게 좋을 듯합니다. 저는 이러한 예외까지 생각하다가 시간을 너무 많이 잡아먹은 듯합니다. 예외처리보다는 정확한 알고리즘 구현이 더 중요할 듯 합니다. 아무래도 1시간에 3문제를 풀어야하니 대충 1문제 당 20분 내에 해결을 봐야합니다.

  코딩 시간이 끝나면 9시 부터는 진짜 면접의 시작입니다. 아쉽게도 저번까지는 면접 대기 시간 때 노트북을 가지고 PT를 수정하거나 참고자료를 볼 수 있었으나, 이번 부터는 코딩 면접 때의 부정행위를 막기위해 개인 노트북을 볼 수 없습니다. (SSM 회원에게 직접 질문한 내용입니다.) 대기하다보면 앞의 SSM 회원이 명단을 호명하는데 각 타임별로 총 6명, 1조 2명으로 호명되어 나가는데 저는 첫 타자였습니다. 1명이 코딩 면접을 보고 다른 1명이 기술 면접을 30분씩 봅니다. 각각 면접이 끝나면 두 명은 면접실을 바꾸어 다른 면접을 봅니다. 따라서 코딩 면접을 먼저 보게 될지, 기술 면접을 먼저 보게 될지는 운입니다. 저는 기술 면접을 먼저 보고 코딩 면접을 봤습니다.

  첫 타자의 불운이었는지 PT용 HDMI가 불량이라 한 10분~15분 정도 딜레이가 되었습니다. 해당 문제를 해결하고 발표할 때도 PT화면이 노란색으로 나왔습니다. 아래의 제 PT를 보시면 아시겠지만 검은 바탕에 흰 글씨.. 노란색 포인트 글씨.. 초장부터 멘붕이 싹 오더군요. (참고로 면접장의 프로젝트 화면비는 4:3 입니다.) 그래도 최대한 정신을 차리고 준비해온 PT 유인물을 면접관 4분에게 나뉘어 드리고 발표를 시작했습니다. 포트폴리오의 분량이 늘어난 만큼 PT시간도 늘어났을까 했지만 역시 PT는 10~15분 내로 마치는 분량으로 준비하는게 좋을 듯합니다. 총 PT 10분, 시연 10분, 질의응답 10분 정도로 생각하시면 될 듯합니다. 10분동안 64장 PT를 하려하니 빨리빨리 넘어가게 되었는데 덕분에 준비해간 내용들이 면접관님들에게 제대로 전달되지 않았을까 걱정입니다. 개인적으로는 대표 프로젝트만 20장 내외 PT로 발표하는게 가장 적당할 듯 합니다.

  시연을 할 때도 다행히 저번같은 시연 자체에 문제가 발생해 동영상으로 대체해야할 문제는 발생하지 않았지만 PT에서 시간을 너무 많이 까먹어 후딱 끝냈습니다. Qt 프레임워크를 사용한 프로젝트였기에 Linux와 Windows에서의 실행결과를 모두 보여드리려 했으나 Linux에서의 시연만 하고 질의 응답으로 넘어왔습니다. 제가 받았던 질의응답은 다음과 같습니다.

Q1. 프로세스와 스레드의 차이는? 실제 프로그램을 예로 드시오.

A. 스레드는 프로세스 내부에서 동작합니다. 인터넷 브라우저는 프로세스가 되고, 하나의 탭은 스레드가 됩니다.


Q2. Linux와 Micro C Linux의 차이는?

A. 잘 모르겠습니다.


Q3. 리얼타임 운영체제란?

A.시스템이 실시간으로 정보를 처리하는 운영체제 입니다.


Q4. 어셈블러를 공부했다고 기재되어 있는데 어셈블러 명령어 몇 가지만 말해보시오.

A. 값을 복사하는 MOV, 특정 메모리 주소로 뛰는 JMP, 인터럽트를 호출하는 INT 등.


Q5. Secure Coding을 했다면 Web 보안을 어느 정도 알텐데 그럼 SQL Injection이란?

A. 서바가 DB에 질의를 할 때 악의적인 실행이 가능하도록 클라이언트에서 데이터를 조작해서 전송하는 것


Q6. XSS(사이트 스크립팅)과 이를 막는 방법?

A. 웹 페이지 상에 악의적인 동작을 하는 페이지를 링크하거나 이동하게 만들어 사용자가 해당 페이지로 접근했을 때 피해를 주는 것. 데이터를 DB에 저장할 때 특정 태그 문자열을 무효화 시키거나 금지시킴으로써 막을 수 있다.


Q7. 데이터베이스 설계를 해봤다고 하는데 그럼 정규화란?

A. 중복되는 컬럼들을 제거하거나 함수 종속성 같은 문제를 제거하기 위해 데이터베이스 테이블을 쪼개는 것.


Q8. DB 정규화의 장단점?

A. 정규화를 할 수록 데이터베이스의 크기는 줄어들지만 테이블의 숫자가 늘어나고 결국 Join 연산의 비용이 증가한다.


Q9. Join 연산을 해봤는지?

A. 해봤습니다. 하지만 제가 아는 Join 연산과, 면접관님이 말씀하시는 Join 연산이 같은 것인지는 모르겠습니다.


  질문은 대부분 프로젝트와 포트폴리오의 내용을 위주로 질문을 합니다. 저 같은 경우 운영체제와 시스템 프로그래밍에 관심이 있어 그 분야를 주로 기재해서 관련 질문이 나왔고, 프로젝트 중 약간의 Secure Coding과 Database 설계를 했다고 기재해서 해당 질문도 약간 나왔습니다. 프로젝트의 경우 미완성 프로토타입이었기 때문에 질문이 거의 안 나왔습니다. 위 질문들 중에서 Q2는 정말 몰라서 대답을 못했고, Q3 머릿속에 있는 것을 제대로 설명을 하지 못한 것 같습니다. 그 외 나머지는 적당히 잘 얘기한 듯 합니다. 

  이제 2학년 수료라서 그럴까요. 준비한 것만큼의 어려운 질문이 나오지 않아 아쉽기도 했지만 그래도 대답할 수 있는 범위 내에 질문이 나와 다행이라 생각합니다. 그리고 면접 중 시간이 초과되면 밖에서 노크를 합니다. 덕분에 질의응답 시간이 조금 빨리 끝난 것 같습니다. 더 물어보고 싶은게 많은데 면접을 마쳐야할 것 같다는 면접관님이 말이 아직도 귓가를 멤돕니다. ㅜㅜ.

  저는 멍청하게도 마지막 한마디를 준비하지 않아 마지막 말로 무슨 말을 하고 나왔는지도 기억이 잘 안납니다. 자기 자신을 가장 잘 드러낼 수 있는 마지막 한마디도 준비하시면 좋을 듯합니다. 




  기술 면접을 마치고 나와 이젠 코딩 면접장으로 들어갑니다. 면접 전에 코딩한 코드를 가지고 알고리즘을 설명하는데, 해당 문제를 어떻게 이해했는지와 왜 그런 알고리즘을 사용했는지 설명하면 될 것 같습니다. 저는 솔직히 코딩이 망해서 코드보다는 해당 문제들을 어떻게 풀어야할지 알고리즘 위주로 설명했습니다. 다행히 알고리즘 자체는 잘 세웠던 것 같습니다. 그래도 저처럼 잠이 충분하지 않으면 알고리즘 세워놓고 for문 작성이 안되는 진기한 경험을 할 수 있으니 전날 반드시 수면을 충분히 취하시기 바랍니다(..) 다른 분의 이야기를 들어보니 코딩과 알고리즘이 완벽하면 아예 다른 내용을 물어보기도 한다고 합니다. 지금 생각해보니 각각의 문제에 대해 기본적인 방법 외에 추가적인 방법인 존재했다는 느낌입니다. 예를 들면 for문으로 해결이 기본이라면 recursion을 통한 해결 방법과 같은 추가적인 방법이 존재하는 문제 처럼요. 다음번에 다시 면접을 보게 된다면 이러한 부분을 충분히 고려해 봐야할 듯합니다.


  알고리즘 면접 역시 마치면 이제 집으로 가면 됩니다. 뭔가 아쉬운 마음에 낮 10시부터 편의점에서 맥주한캔 따 마시고 지하철 타고 학교로 왔습니다. 면접보고 돌아오는 길에 이런 생각이 들더군요. 진인사대천명(盡人事待天命).

  실제로 제 전역모에 박혀있는 글귀 입니다. '노력(努力)을 다한 후(後)에 천명(天命)을 기다림'. 내가 할 수 있는 최대한의 노력을 한 뒤는 내 힘으로 어찌할 수가 없는 것 입니다. 약 한달간을 정말 밤낮없이 살았고 최선을 다해 면접봤으니 이젠 결과를 기다려야겠습니다. 후에 이 포스팅에 합격이라는 PS가 붙으면 붙은 것이요, 안 붙었다면 또 어디선가 이글을 보는 누군가와 마찬가지로 또 다른 프로젝트를 준비 중일 겁니다. 끝



아래는 제가 발표했던 PT 내용 중 일반 프로젝트 하나와 대표 프로젝트만을 짜집기 한 PT 입니다. 참고만 하시고 분량은 따라하지 마세요..





(2016. 04. 09)

결과적으로는 25-1도 떨어지고 25-2 까지 떨어졌습니다만

그 동안 스타트업도 뛰어보고 여러가지 개발 커뮤니티 활동을 해본 결과

소프트웨어 멤버십만이 능사는 아닌 것 같습니다.

저 역시 비슷한 또래의 개발자들과의 커뮤니케이션 + 개발 경험 + 대기업 버프를 고려해 멤버십을 지원을 했었지만

멤버십과는 지독하게도 연이 없었습니다. 연이 아니다 생각하여 딱 삼세판 하고 접었습니다.

그러고 난 뒤 한 1년 정도 다양한 경험을 겪어보니 멤버십 뿐만이 아니더라도 많은 길이 보였습니다.

물론 저 당시 멤버십에 붙어버렸으면 지금의 제 모습과는 많이 달랐을거라고 생각합니다.

삼성이라는 초거대기업 입사를 99% 보장하는 멤버십의 안정적인 커리어도 충분히 매력적이지만 

이런 저런 풍파를 겪으며 개발 커리어를 쌓아 나가는 것도 나쁘지 않은 것 같습니다.

이 글을 읽으시는 분 중에 멤버십에서 탈락하신 분, 탈락하실 분 모두

너무 낙심하지 마시고, 주변의 다른 개발 커리어를 찾아보세요.

분명히 재밌을 겁니다.


- 멤버십만 3번 떨어진 덜 떨어진 개발자 올림 -



반응형
프로필사진

Yowu (Yu Yongwoo)

흔한 Node.js/Java 백엔드 개발자입니다
Ubuntu와 MacOS 데스크탑 개발 환경을 선호합니다
최근에는 vscode와 IntelliJ를 사용하고 있습니다
vscode에는 neovim, IntelliJ는 ideaVim
개발용 키보드는 역시 HHKB Pro 2 무각입니다
락 밴드에서 드럼을 쳤습니다

최근에 올라온 글
최근에 달린 댓글
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함
Total
Today
Yesterday