더 많은 포스팅 보기 자세히보기

일상

고등학교 졸업예정자의 개발자 취업기(2/2) 면접과정

유도혁 2021. 6. 6. 03:00

면접을 보면서 있었던 일들과 생각, 그리고 면접을 진행하면서 받은 질문들에 대하여 저의 생각과 답변을 적어보았습니다. 그러하여 글이 길어질 수 있는 점 미리 양해 부탁드리겠습니다. 결론부터 말하자면 3개월 동안 총 20곳의 회사에 지원하여 10번의 면접 기회가 주어졌고, 2곳에서 합격소식을 받게 되었습니다.

 

💻 면접 질문

초기에 면접을 보면서 항상 들었던 말은 "긴장하지 않아도 돼"라는 말입니다. 저의 성격 탓에 목소리도 많이 떨고 그 때문에 대답할 수 있는 질문들도 대답하지 못했던 게 아쉬움이 남습니다. 하지만 여러 경험을 쌓아나가며 점차 긴장하지 않고 수평적으로 대화를 할 수 있게 되었습니다.

 

면접관님들은 보통 서류과정에서 제출한 것을 바탕으로 질문을 하곤합니다. 그러므로 본인이 제출한 서류에서 "왜 이 학교에 진학했는지", "왜 이 진로를 선택했는지", "왜 이 기술을 사용했는지", "정말 이 기술을 알고 있는지" 등 꼭 미리 왜? 라는 질문을 미리 해보시기 바랍니다.

 

또한 중요하다고 생각하는 것이 있다면, 하고 싶은 말이 있다면 모두 하는 것입니다. 제가 탈락했던 회사에서는 질문에 대해 대답을 하기 바빴습니다. 하지만 합격했던 회사의 면접에서는 중간중간 제가 하고 싶었던 말을 전부 하였고 저 또한 질문을 많이 하였습니다. 그래서 면접은 소개팅과 같다는 말이 맞다고 생각합니다.

 

너무 기본적인 것이라고 생각하실 수 있습니다. 저는 그 기본조차 제대로 하지 못하여 여러 번 면접에서 좋지 못한 결과를 얻게 되었고 하지만 점점 기본기를 채워나가며 좋은 결과를 얻을 수 있었습니다. 만약 계속 좋지 못한 결과를 받고 계시는 분이 있다면 본인이 기본은 되어있는지 생각해보시기 바랍니다.

면접에서 받은 질문들과 답변을 모아둔 족보

면접을 보고 나서 받았던 질문들을 다시 생각해보며 다음번에는 더 답변을 잘할 수 있도록 족보를 만들어 두었습니다. 그중에서 중요하다고 생각되는 질문과 기억에 남는 질문들의 생각과 답변을 적어보았습니다.

 

자기소개를 해주세요.

가장 기본적인 질문이고, 요즘에는 보통 면접관님께서 먼저 본인 소개를 해주신 다음 자기소개를 해달라고 하십니다. 물론 자기소개 없이 바로 면접을 시작하는 경우도 많아지고 있지만, 좋은 첫인상과 면접관님께 자신을 어필할 수 있는 큰 기회이니 놓치지 말아야 합니다. 그리고 자기소개에서 말한 부분에서 연속적으로 질문을 이어나갈 수 있으니 준비를 철저히 하는 것이 좋습니다.

이 분야를 선택한 이유가 무엇인가요?

보안학교 보안과에서 개발하는 입장이다 보니 학교에 입학한 이유부터 개발하는 이유를 설명할 수 있어야 합니다. 저는 물론 개발을 하는 것이 즐거워 답변하기는 쉬웠습니다.

다양한 기술중에서 이것을 선택한 이유와 이것의 장단점이 무엇인가요?

자신이 사용하는 기술에 대해 정말 잘 숙지하고 있어야 하며, 장단점과 이론적인 부분에서 이유를 잘 알고 있어야 합니다. 기술적인 부분이어서 이에 관하여 할 수 있는 질문들은 정말 끝도 없이 많습니다. 만약 정말 모르는 게 있다면, 먼저 모르겠다고 말한 뒤 이에 대한 부연설명이나 이 부분을 숙지해두겠다고 하는 것이 좋습니다.

약자의 뜻

어느 기술을 쉽게 말할 때 REST(Representational state transfer: 대표적 상태 이전)와 같이 약자를 사용하는 경우가 많습니다. 자신이 설명하는 약자의 풀 네임과 그 뜻을 잘 숙지하고 있는 것이 좋습니다.

브라우저의 렌더링 과정에 대해서 상세하게 설명해주세요.

웹 개발자에게 악명높은 질문이라고 생각합니다. 그만큼 많이 물어보고 중요한 질문입니다. 특히 리액트 개발자에게는 DOM(Document Object Model)의 생성 시점과 연계하여 React Virtual DOM에 대해 질문도 하고, SSR(server-side rendering)과 CSR(client-side rendering)의 차이점과 장단점에 대해서도 물어봅니다.

mac주소가 있는데 ip주소가 필요한 이유가 무엇인가요?

이 질문을 받았을 때 매우 당황한 기억이 있습니다. 당시 많이 긴장하고 있는 것도 있었고 순간 정말 왜 필요한지 생각나지 않았기 때문입니다. 나중에 왜 그런지 찾아보았고, 그 이유로는 MAC 주소는 외부에서 내부의 사설 아이피로 통신 요청을 할 때 사설 아이피는 외부에서 볼 수 없으므로 외부에서는 어떤 사설 아이피가 최종 목적지인지 알 수가 없는데, 이때 최종 목적지의 MAC주소를 알고 있다면 쉽게 최종 목적지에 도달할 수 있기 때문입니다.

http/2 http/3 차이점이 무엇인가요?

처음 이 질문을 들었을 때 매우 당황스러웠습니다. http프로토콜에 버전이 있다는 사실을 처음 접하였기 때문입니다. 나중에 조사해보니 http/2는 TCP방식으로 동작하고, http/3는 UDP방식으로 동작한다는 것을 알게 되었습니다.

시간 복잡도가 무엇인가요?

코딩테스트를 연습하며 시간 복잡도에 관하여 알게 되었습니다. 시간 복잡도의 어려운 수식은 설명할 수 없지만, 개발자는 서버와 클라이언트의 사용자원 최적화와 디바이스의 부하를 방지하기 위하여 짧은 시간 복잡도로 코드를 구상하기 위하여 노력해야 합니다.

개발을 하면서 막히는 부분을 어떻게 처리하나요?

모르는 부분을 검색하여 사용되는 기술을 배우고 이해하려고 합니다.

형상 관리가 무엇이고 직접 해보거나 배워본 적이 있나요? / SOLID 원칙에 대하여 알고 있나요? / 리팩토링을 해본적이 있나요? / 소프트웨어 디자인 패턴에 대해 알고있나요? / 대회에 참가할 때 어떻게 진행하시나요? / 어떤 회사에서 일하고 싶은가요?

모두 협업과 관련된 질문들과 훌륭한 개발자로서 필수인 요소들입니다. 회사는 혼자 일하는 곳이 아니므로 회사에서는 지원자가 회사와 맞는 사람인지와 맞을 수 있는 사람인지 확인하는 중요한 질문입니다. 저도 이 부분을 정확히 숙지하지 못하고 있지만, 중요성을 알고있고 배우고싶은 의지가 있습니다.

N년 후 어떤 개발자가 되실건가요?

바로 위에 질문들과 마찬가지로 회사와 맞는 사람인지 확인하는 질문일 수도 있지만, 이 질문에 대한 대답을 잘 생각해두면 본인에게도 정말 좋다고 생각합니다. 저는 개발을 하는 것이 직업이 되어도 이전과 같이 개발을 재미있게 하고 기술을 탐구해 나가며 훌륭한 개발자가 되는 것이 목표입니다.

지구의 대기권은 어디인가요?

...

이러한 질문 같은 경우는 정말로 정확한 답을 알고 있어서 정확히 대답하는 사람도 있겠지만, 정확한 답을 듣고 싶어서 내는 질문도 아니고 면접관도 답을 모른다고 합니다. 면접관이 이러한 질문에서 보는 점은 답을 찾는 과정이라고 합니다. 그러니 자신이 생각하는 대로 그 생각을 잘 표출할 수 있으면 된다고 생각합니다.

자신을 더 어필할게 있다면?

보통 면접관이 주는 질문은 아닙니다. 하지만 면접을 끝내기 전에 마지막으로 직접 기회를 만들어 답변을 하는 것이 좋습니다.

 

🧐 부족했던 것

기술에 대한 이론

지금까진 성과를 내고 싶어 프로젝트와 대회를 준비하며 서비스를 개발하기 위하여 완성도에 치중한 나머지 기술 관련 이론에 대해서는 소홀히 했던 점이 많습니다. 여러 면접을 봐보며 서류 과정에서는 실력을 보고, 면접에서는 정말 실력이 있는 사람인지 확인하는 부분이 있다고 생각합니다. 면접 때문만이 아니라 훌륭한 개발자가 되기 위하여 도구의 사용법과 정보도 잘 알고 있어야 도구를 100% 사용하는 것을 느끼게 되었습니다.

메모장 코딩

평소 개발하면서 편한 IDE와 Google의 힘을 빌리고 있습니다. 그러다 보니 면접에서 메모장 코딩을 시키는 회사도 있었는데 어떻게 개발할지 알고리즘은 구상되었지만, 필요한 라이브러리 함수가 생각나지 않아 그 부분에서 정말 많이 부족함을 느끼며 이 모습은 제가 원하는 개발자가 아니라는 점을 인지하게 되었습니다. 그러하여 평소 많은 연습을 해야겠다고 느끼게 되었습니다.

 

🤝 회사 선택

보통 스타트업을 선택하는 이유는 더욱 많은 것을 배우기 위함이라고 합니다. 회사가 작을수록 부서가 세분화 되어 있지 않아 한 명이 해야 하는 일이 많으며 여러 경험을 할 수 있기 때문이라고 생각합니다. 이러한 경험을 하기 위해 중견기업에 다니시는 분이 시리즈 A투자를 받은 3년 차 기업에 자신의 여러 복지와 연봉이 줄어드는 디메리트를 갖고 이직하시는 것을 보게 되었습니다. 저는 어차피 스타트업에 가는 김에 누군가가 돈을 주고 얻는 경험을 돈을 받으면서 경험할 기회라고 생각하여 다음과 같은 기준을 세워 선택하게 되었습니다.

 

  • 투자유치: 투자를 하는 사람들은 자기 돈을 그냥 빌려주지 않습니다. 저보다 많은 기업을 봐본 사람들의 눈을 무료로 사용할 수 있는 지표라고 생각합니다.
  • 성장 속도: 성장 속도가 빠를수록 빠른 시간내에 회사의 규모에 따른 경험을 할 수 있으리라 생각합니다.
  • 수익 모델: 아무리 좋은 기업이어도 수익 모델이 확실하지 않으면 자금 문제에 시달릴 수 있다고 생각합니다. 물론 수익모델이 없어도 그만큼의 기술력을 먼저 성장시키는 경우도 좋겠다고 생각합니다.
  • 사용자 타켓층: 수익 모델이 확실하지만 사용자가 적으면 아무 소용이 없다고 생각합니다.
  • 분위기: 고등학교에 진학하고 왜 그토록 다른 부모들이 특목고, 외고, 과고에 자식을 보내려고 하는지 느끼게 되었습니다. 그만큼 분위기는 중요하다는 겁니다.
  • 성장할 수 있는 환경

 

🎯 배운점

이번 구직은 저에게 사회에 진출하는 첫걸음이 되었습니다. 구직 전후를 비교하자면 스마트폰에 설치된 어플리케이션 수가 많아졌습니다. 이는 극단적으로 말하자면 제가 알고 있는 회사 정도가 세상에 있는 회사라고 인지하며 지내고 있다가 세상에는 수없이 많은 회사가 있고 종류도 다양하다는 것을 알게 되었고 여러 어플리케이션을 사용해보며 지식을 넓혀가고 있게 되었습니다.

부족한 점을 알 수 있었다

면접을 보다 보면서 놓치고 있는 부분들을 많이 알게 되었습니다. 보통 답변하지 못한 질문들을 바탕으로 부족한 점을 채워나갔습니다. 어느 면접관님께서는 저의 부족한 점이나 면접에 대한 피드백을 주시기도 하였습니다. 심지어 저의 포트폴리오를 보시고 메일로 직접 훌륭한 개발자가 되기 위해 배워야 하는 것들을 알려주시는 고마운 분들도 계셨습니다. 덕분에 구직하면서 많은 것을 배울 수 있었습니다.

깃허브와 블로그의 중요성

아무리 자신이 배운게 많다고 해도 타인은 그것을 알 수 없습니다. 그리고 사람은 계속해서 지식을 떠올리지 않으면 잊어버리기 쉽기 때문에 기록하는 습관이 중요하다고 생각합니다. 덕분에 면접에서 깃허브의 올린 코드에 질문들 받기도 하였고 블로그를 보시며 이 친구는 이런걸 배웠구나 라고 하시기도 하였습니다.