반응형

안녕하세요. 이번 포스팅에서는 기술 면접 준비 방법 및 꿀팁에 대해서 알아보겠습니다. 면접이 처음이라면, 면접이 어떻게 진행되는지, 무슨 질문을 할지 하나도 몰라서 막막하고 두렵기만 할 텐데, 이런 분들을 위해 상세히 설명드리겠습니다. 저는 네이버, 카카오, 삼성전자, 네이버 클라우드, 신한은행, 당근 마켓 등 약 10개가 넘는 기술 면접을 봤었는데, 그 과정에서 느꼈던 점을 세세하게 말씀드리겠습니다.

 

https://nakco.tistory.com/entry/%EA%B0%9C%EB%B0%9C%EC%9E%90%EB%A1%9C-%EC%B7%A8%EC%97%85%ED%95%98%EA%B8%B0-CSComputer-Science

 

개발자로 취업하기 - CS(Computer Science)

안녕하세요. 이번 포스팅에서는 개발자로 취업하기 위해 공부해야하는 Computer Science 공부 방법에 대해 정리해보겠습니다. Computer Science는 컴퓨터 공학 전공 지식이라고 볼 수 있는데, 대학교에서

nakco.tistory.com

개발자 기술 면접

면접 시작

개발자 기술 면접은 말 그대로 내가 갖고 있는 프로그래밍 기술에 대한 질문을 주로 받게 됩니다. 일반적인 IT 직군이라면, 위의 CS 기반의 질문을 하게 되는데 해당 내용은 위의 링크를 참고하시길 바랍니다. 대부분의 기업이 2 ~ 4명의 면접관과 다대일로 면접이 진행됩니다. 기본적으로 처음에 자기소개를 30초 ~ 60초 정도 진행 한 후, 해당 자기소개에서 궁금한 부분을 질문하거나 아니면 자기소개서 기반의 질문으로 시작됩니다. 따라서 자기소개를 할 때 자신이 가장 자신있는 부분에 대해 궁금증을 유발하는게 하나의 꿀팁입니다. 

 

자기소개서 기반 질문

본격적으로 면접이 시작된다면, 자기소개서 기반의 질문부터 시작합니다. 대부분의 면접에서 제가 적었던 프로젝트 위주로 질문을 받았습니다.

  • 프로젝트에서 어떤 역할을 맡았는지,
  • 어떤 기술을 썼는지,
  • 해당 기술을 쓰면서 어려웠던 점은 무엇이 있었는지,
  • 배포까지 해봤는지,
  • 안했다면 왜 안했는지,
  • 아쉬웠던 점은 무엇이 있는지,
  • 더 발전시킨다면 어떤 방향으로 할 생각인지

프로젝트를 적었다면 위의 내용에 대해서는 꼭 한번 정리를 해 보시길 바랍니다. 대부분이 해당 질문들을 했었고, 현장에서 해당 질문을 받으면 생각보다 말이 술술 나오지 않았던 것 같습니다. 따라서 자기가 했던 프로젝트를 꼭 다시 리뷰해보고 해당 질문들에 대해 생각해보시길 바랍니다.

 

 네이버나 카카오같은 IT 기업이라면 좀 더 세부적으로 질문이 들어옵니다. 만약 안드로이드 앱 개발을 진행했었다면,

  • 자바를 썼는지 코틀린을 썼는지,
  • 시스템 설계는 어떤 모델을 사용해서 했는지,
  • 왜 해당 모델을 선택했는지,
  • 코틀린 or 자바의 특징은 뭐가 있는지,
  • 어떤 기능을 구현하는데 어떤 기술을 썼고, 왜 그랬는지, 다른 방법을 아는지

등 정말 내가 개발을 진행했는지, 해당 기술의 특성을 잘 이해하고 적용한 것인지 등의 내용을 파악하기 위한 질문들을 합니다. 저는 사실 프로젝트를 할 때 무슨 기술들이 있는지도 잘 모르고, 그냥 되는대로 했기 때문에 해당 질문들을 받았을 때 매우 난처했습니다. 여러분들은 꼭 미리 해당 질문들에 대해 준비해보는 것을 추천드립니다.

 

그리고 자소서에 어떤 과목에 대해서 적었다면 해당 질문도 들어올 수 있습니다. 예를 들어 '운영체제 수업을 들으면서 OS 동작에 대해 이해하게 되었고 이러한 부분을 생각하며 프로그래밍을 하여 좀 더 효율적인 코드를 작성할 수 있었다' 라고 적었다면, 

  • 운영체제 동작 중 하나를 설명해달라,
  • 어떤 부분을 생각하며 프로그래밍을 하는지,
  • 어떻게 효율적으로 코드를 짜는지,
  • 실제로 효율적으로 프로그래밍한 경험,

등에 대해 질문할 수 있습니다. 여러분이 자소서에 적은 내용들에 대해서는 따라서, 정말 꼬리의 꼬리를 물며 스스로에게 질문해보시고 답변을 미리 준비하시길 바랍니다. 자소서에 적은 내용인데 대답을 못한다면, 자소서를 과장되게 썼다는 인상을 줄 수 있습니다.

 

CS 기반 질문

 cs 기반 질문은 개발자로 취업하기 - CS 편을 보셨다면 잘 준비되어 있을거라고 생각합니다. 일반적인 IT 직군이라면, gyoogle의 있는 항목들 위주로 질문이 들어 올 것이고, 좀 더 세분화 된 직군 (앱 개발자, 백엔드 개발자, 프론트엔드 개발자 ...) 이라면 관련 지식을 주로 질문할 것입니다. CS 기반 질문에서 정말 중요한 점은, 질문에 대해 먼저 선수를 쳐서 아주 세세한 것 까지 자신이 아는 모든것을 뱉어 버리는 것입니다. 물론 너무 길게 대답하면 안되겠지만, 질문에만 대답하는 것이 아니라, 그 이후에 나올 수 있는 질문들에 대해서도 미리 선수쳐서 대답하면 긍정적인 반응을 이끌어 내실 수 있을 것입니다. 


ex) 해쉬가 무엇인지 설명해주세요

 

답 : 해쉬란 데이터를 다루는 기법으로 저장 및 검색이 매우 빠르다는 장점이 있습니다. key 와 value가 한 쌍으로 존재하고 ~~~ 저장의 시간 복잡도는 O(1)입니다. -> 여기까지가 질문에 대한 답변입니다.

추가 : 하지만 한정된 인덱스로 바꾸게 된다면 충돌이 발생 할 수 있고 이를 위한 해결책으로는 체이닝 기법과 매핑 개선 기법이 있습니다. 자바에서는 Seperate Chaining 방식으로 충돌을 해결하는 hash를 사용합니다.


 

여기까지 답한다면 이미 충분히 잘 알고 있다고 느낄 것이고, 꼬리 질문이 들어온다면, chaining 방식이 뭔지, open address가 뭔지, 매핑 개선 기법엔 뭐가 있는지 등이 나올 수 있겠지만, 보통은 저정도까지 얘기하면 이미 알고있다고 생각하고 물어보지 않을 것이고, 제 생각에도 저정도 얘기했으면 이후 질문도 쉽게 답하실 수 있을 것이라고 생각합니다. 질문자가 해당 내용으로 계속 질문하지 않게, 한번에 만족스러운 답변을 해내시길 바랍니다.

 

 

마무리

 보통 기술면접은 현업을 하고 있는 개발자들이 참여하고, 그 분들도 대부분 CS 지식을 까먹었을 것입니다. 그러니 너무 긴장하지 말고! 그분들도 인터넷을 찾아 질문을 가져오거나, 현업에서 하는 내용들에 대해 물어볼터이니, 자신의 직무에 맞게 잘 준비하시길 바랍니다. 자신이 알고있는 모든 것을 다 말하는 것이 중요하고, 자기소개서에 있는 모든 내용을 잘 숙지하시는 것도 중요합니다. 개발자 면접은 경험상 그렇게 딱딱하지 않고, 다들 편하게 해주는 경향이 있어 너무 긴장하지 마시고 자신있게 표현하시길 바랍니다.

 자기소개서와 마찬가지로 말을 할 때 항상 두괄식으로 말하고, 바로바로 답변하지 말고 조금 생각을 정리한 후 답변하시길 바랍니다. (네 답변 드리겠습니다 라고 하면서 생각을 하거나, 질문을 그대로 말하며 네 ~ 해쉬테이블이란~~ 하면서 생각을 정리) 또한 말하다가 잘못말하고 있다고 느끼면, 죄송합니다. 다시 답변드리겠습니다. 하고 다시 말해야지, 틀린 것을 계속 고집하시면 안됩니다.

 이상으로  개발자 기술 면접 포스팅 마치도록 하겠습니다. 더 궁금한 점 있으면 댓글로 남겨주시면 성실히 답하겠습니다. 개발자, 취준생 여러분 항상 응원하겠습니다. 감사합니다.

반응형
반응형

안녕하세요. 이번 포스팅에서는 개발자로 취업하기 위해 공부해야하는 Computer Science 공부 방법에 대해 정리해보겠습니다. Computer Science는 컴퓨터 공학 전공 지식이라고 볼 수 있는데, 대학교에서 4년간 배우는 지식이다 보니 범위가 매우 많게 느껴질 수 있지만, 중요한 부분부터 차근차근 공부해나가도록 합시다. 처음에 공부하시는 분이라면, 어디서부터 어떻게 공부할지 매우 막막할 수 있는데, 우선 입문하기 좋은 사이트 먼저 추천드리겠습니다.

 

https://github.com/gyoogle/tech-interview-for-developer

 

GitHub - gyoogle/tech-interview-for-developer: 👶🏻 신입 개발자 전공 지식 & 기술 면접 백과사전 📖

👶🏻 신입 개발자 전공 지식 & 기술 면접 백과사전 📖. Contribute to gyoogle/tech-interview-for-developer development by creating an account on GitHub.

github.com

 

해당 사이트에 들어가보면 Computer Science 과목들이 카테고리별로 잘 정리되어있고, 각각의 항목에 대해 간단히 정리가 되어있습니다. 우선은 해당 사이트를 보면서 전반적인 개요에 대해 이해하고 시작하는 것을 추천드립니다.

 

Computer Science 스터디

 우선 저는 학교 동기든, 같이 취준을 하는 친구든, 모르는 사람이든 4명정도 모아 스터디를 진행하는 것을 추천드립니다. 혼자서 많은양을 공부한다면 시간도 많이들고, 제한적인 정보만 습득할 수 있습니다. 따라서 스터디를 통해 주제를 나누고, 서로 해당 부분에 대해 토의하면, 기억에 남는것도 많고 더 deep 하게 공부하실 수 있을 것입니다. 저는 스터디를 어떻게 진행했는지 공유드리겠습니다.

 

1. CS 스터디 구하기

 저는 처음에 대학 동기 8명과 함께 스터디를 진행했습니다. 하지만 워낙 친했던 사람들이였기 때문에, 체계가 잘 잡히지 않았고, 잡담하는 시간도 많아 집중이 잘 되지 않았습니다. 따라서 차라리 모르는 사람들과 진행하는게 낫다고 판단하여, 캠퍼스픽이라는 곳에서 스터디원을 구했습니다.

https://www.campuspick.com/

 

캠퍼스픽

대학생 커뮤니티, 동아리, 공모전, 대외활동 등 즐겁고 유익한 정보가 한 곳에!

www.campuspick.com

해당 사이트에서 스터디 - 프로그래밍 카테고리로 들어가면 다양한 스터디를 구할 수 있는데, 직접 구인글을 올려도 되고, 다른 사람의 구인글을 통해 들어가셔도 좋습니다. 저는 직접올렸고 생각보다 많은 사람들이 문의를 해주어서 스터디를 경성하는데 큰 어려움이 없었습니다.

 

2. CS 스터디 진행 

 스터디를 결성했다면, 체계적으로 서로에게 도움을 주며 진행하는 것이 중요 할 것입니다. 저희는 1주일에 1번 만나는 것으로 결정했고, 스터디룸 하나를 3시간정도 빌려 진행했습니다. 첫번째로, 위에서 소개해드린 규글 사이트에 컴퓨터 구조, DB, 자료구조, 네트워크, 운영체제, Software Engineering, 알고리즘 총 7개의 항목이 있는데, 1주일에 2개의 항목을 공부하는 것을 목표로 했습니다. 네명 모두 2개의 항목에대해서 공부하되, 개인이 특정 항목을 맡아 더 자세하게 공부를 해와서 발표하는 식으로 진행했습니다. 발표를 하면서 헷갈리거나, 자신이 알고 있는 정보들을 서로 토의하며 더 deep하게 공부할 수 있었습니다. 네명이 공유 파일을 하나 만들어 (저희는 노션에 진행) 각 항목에 대해 자세히 정리를 하였고, 토의를 하며 자료를 강화했습니다. 이렇게  진행하여 3주만에 CS를 한번 훑을 수 있었습니다.

 

3. 개발자 기술 면접 준비

 대부분은 CS 공부를 기술면접 준비를 위해서 할 것입니다. 저희는 따라서 자료 정리를 마친 후 바로 기술면접 준비를 시작했습니다. 자신이 면접에 갈 기업이 있다면, 해당 기업의 질문들을 모았고, 아니면 이곳 저곳 면접 질문 후기들을 모아 한명씩 돌아가며 실전처럼 면접을 진행했습니다. 단 이때, 하나의 질문만 하는 것이 아니라, 그 질문에 계속 꼬리를 물고 깊게 파고 들어가며 진행했고, 저희가 정리했던 자료들에서도 질문을 하며, CS 지식들을 머리에 우겨넣었습니다. 저는 실제로 스터디에서 했던 질문들이, 기업에서 그대로 나오는 경우가 많았고 정말 도움이 많이 됐었다고 생각합니다. 여러분도 단순히 공부만 하지 말고, 이렇게 실전 면접 형식으로 진행해보는 것도 괜찮을 것이라고 생각합니다. 

 

컴퓨터 공학 자격증 준비

 컴퓨터 공학과 관련 자격증은 정말정말 많은데 기왕 공부할 거, 자격증도 함께 딴다면 1석 2조의 효과를 누릴 수 있을 것입니다. 저는 정보처리기사와 SQLD를 같이 준비했고, 준비를 하면서도 1석 2조라는 생각에 긍정적인 마인드로 공부를 할 수 있었던 것 같습니다. 앞 포스팅에 해당 자격증들에 대해 써놓은게 있어 공유드리겠습니다.

https://nakco.tistory.com/entry/%EA%B0%9C%EB%B0%9C%EC%9E%90%EB%A1%9C-%EC%B7%A8%EC%97%85%ED%95%98%EA%B8%B0-%EC%A0%95%EB%B3%B4%EC%B2%98%EB%A6%AC%EA%B8%B0%EC%82%AC

 

개발자로 취업하기 - 정보처리기사

개발자로 취업하기위해서는 프로젝트 경험과 학점 같은 것도 중요하지만, 꾸준히 Spec Up을 하는것도 중요합니다. 자소서에 한줄이라도 더 추가해야 취업시장에서 우위를 점할 수 있습니다. 우리

nakco.tistory.com

https://nakco.tistory.com/entry/%EA%B0%9C%EB%B0%9C%EC%9E%90%EB%A1%9C-%EC%B7%A8%EC%97%85%ED%95%98%EA%B8%B0-SQLD

 

개발자로 취업하기 - SQLD

안녕하세요. 이번에는 개발자로 취업하기 2편. SQLD 자격증에 대해 알아보겠습니다. SQLD(SQL Developer)는 Database 관련 자격증으로 정처기보다 훨~~씬 따기 쉽습니다. 그리고 정보처리기사와 마찬가지

nakco.tistory.com

 

 이 외에도 다양한 자격증이 있으니, CS 공부도 할 겸 1석 2조의 효과를 누리시길 바랍니다.

 

자기소개서에 쓴  CS 지식

 규글에 나오는 것들을 모두 공부했다면, 기본적인 CS 공부는 한 것이지만, 면접은 대부분 자기소개서 위주로 질문을 하기 때문에, 자신이 적은 내용에 대한 지식 또한 필수적으로 공부를 해야합니다. 예를 들어 내가 java를 사용하여 어떤 프로젝트를 했다고 적었으면 Java 언어에 대한 공부를 진행해야합니다. 자바의 특징은 무엇인지, 상속화, 캡슐화 등등은 무엇이고 언제 쓰는지 등, 직접 써본 경험이 있는지까지 생각하며 공부해야합니다. 저는 첫 면접때 java에 관한 질문에서 이론적인 부분은 잘 대답했는데 써본적이 있냐는 질문에서 턱 막혔습니다. 언제 쓰는지, 써봤는지 정리를 해두시면 좋을 것 같습니다. 또한 삼성 자기소개서에서 시스템프로그래밍 수업에서 어셈블리 언어를 사용해봤다 적었는데, 아주 간단한 어셈블리어 질문에도 대답을 못하여 당황했던 경험이 있습니다. 따라서 자기소개서에 쓴 내용은 꼭!꼭! 공부해놓으시길 바랍니다.

 

마무리

CS 지식은 그 범위가 광범위하나, 저는 저 규글에 있는 지식 외의 범위에서 질문을 받아본 적은 없습니다. 명심해야할 것은 겉핥기 식으로 공부하시면 안되고 꼭 꼬리의 꼬리를 물고 아주 deep하게 공부를 하셔야합니다. 제가 정말 잘대답했다고 생각했고, 실제로 면접관분들이 서로 마주보며 고개를 끄덕였던 질문이 있습니다.

 

질문 : 퀵 소트와 머지 소트의 차이점에 대해 설명해주세요.

 

퀵 소트는 ~~ 이고, 머지 소트는 ~~입니다. 차이점은 퀵소트는 보통 빠르지만, 최악의 상황에선 머지소트보다 더 성능이 안좋고, 추가적인 공간을 할당해야한다는 단점이 있습니다. 

 

까지만 말하면, 잘 대답한 것은 맞으나, CS 준비를 잘 한 사람이라면 누구나 할 만한 대답입니다. 저는 여기에 추가로 

 

머지소트는 안정적이고, 최악의 상황에도 O(nlogn)의 시간복잡도를 갖기 때문에 많은 양의 데이터를 처리할 때는 머지소트가 더 적합합니다. 개발 언어들에 내장된 라이브러리에서도 실제로 머지소트로 되어있는 부분이 많은 것으로 알고 있고, 제가 주로 사용하는 Python 언어에서는 Merge Sort와 Injection Sort를 합친 Tim Sort라는 알고리즘을 사용하는 것으로 알고 있습니다.

 

 이렇게 매우 딥한 부분까지 말씀을 드리니, 정말 만족해하셨고 면접도 합격 할 수 있었습니다. 따라서 여러분들도 질문에 대해서만 답변하는 것이 아니라, 사용 사례, 보완 사례, 등등 더 deep하게 들어가서 말씀드리면 성공적인 면접이 될 수 있을 것입니다.

 

이번 포스팅은 여기서 마무리하겠습니다. 개발자, 취준생 여러분 항상 응원하겠습니다.

 

반응형

+ Recent posts