NEWBLUE's

1. 정신을 차려보니 졸업이 코앞에 있었다 - 주니어 개발자 면접 후기 본문

순간들

1. 정신을 차려보니 졸업이 코앞에 있었다 - 주니어 개발자 면접 후기

newblue 2020. 9. 2. 20:00
반응형

'360시간 만에 개발자 되기 프로젝트' 의 글입니다. '개발자 구직과정'에 익숙하지 않은 분들이시라면 0. 개발자 취업 프로세스 이해하기를 먼저 보시는 것을 권합니다.

 

사랑하는 학교를 떠나는 날엔 어떤 기분일까 늘 궁금했는데, 코로나 19로 졸업식이 취소되어 예정보다 빨리 학교를 떠나게 되었다

 

정신을 차려보니 졸업이 코앞에 있었다

보통 2월에 졸업하는 경우에는, 구직과정을 9월 ~ 12월 사이에 진행해서 졸업 후 3월부터 (혹은 1월) 바로 출근할 수 있게 준비한다. 하지만 난 당시 맡은 일에 모든 에너지를 투입했었고, 종강을 한 12월 말에서야 부랴부랴 회사들을 알아보기 시작했다.

 

우선 직군을 먼저 정하고 회사를 찾아야했는데, 나는 백엔드 개발자로 정했다. 그 이유는 먼저 솔직하게, 

 

i) 전산학을 전공했지만, 워낙 다른 분야에도 호기심이 많아서 다양한 활동(학생회, 동아리, 교환학생, 봉사활동, 스타트업 등) 들을 하다보니 정작 제대로 개발을 해본적이 많이 없었다. 특히 이 바닥은 좋은 프로젝트를 할 수 있는 수업을 잘 고르거나, 수업 외에도 따로 프로젝트를 하는게 좋지만, 거의 그러지 못했다ㅎㅎㅎ 그래서 약간 개발에 대한 갈증 아닌 갈증(?)이 있어서 나중에 무슨 일을 하든 (이래놓고 백발의 개발자가 될 수도) 개발자로 먼저 시작해보고 싶었다.

ii) 다른 분야는 신입을 잘 뽑지 않아서, 프론트엔드와 백엔드 둘 중에 하나를 골라야했다. (그 중에서는) 백엔드 쪽이 괜히 더 끌리고 더 잘 할 수 있을 것 같았다. 

iii) 직전에 했던 두가지 활동에서 각각 Node.js 백엔드 경험을 가지고 있었다.

iv) 데이터 분야와 연계해서 커리어를 쌓아가고 싶은 생각이 있는데, 그러기 적합했다. 

 

여기에 대외적으로는 보통 (물론 사실이다)

 

v) 보통 사물을 볼 때 보이지 않는 것들(구체적인 원리나 배경)에 더 관심이 많습니다. 과학을 오래 공부한 만큼 특정 시스템의 동작 원리를 깊게 들여다보는 것을 좋아합니다. 

vi) 일상에서도, 일에서도 자동화 하는 것을 좋아해서 반복적인 작업이 있다면 최대한 효율적으로 만드는 것을 좋아합니다.

 

라는 이유를 들곤 했다.

 

어쨌든, 개발을 생각하는 사람이라면 바로 떠올릴만한 A회사와 B회사에 바로 지원했다. 

(지금 생각하시는 바로 그 회사들이 맞습니다.) 서류 결과가 나왔고 다행히 둘 다 합격이었다.

 

A회사는 새해를 맞이하며 1월 1일에 코딩 테스트를 봤다. DFS / BFS가 자주 출제된다는 회사였는데, 정말로 DFS가 나와서 신기했었던 기억이 난다. B회사 코딩테스트에서는 문자열 / 배열 연산과 관련된 비교적 평이한 문제가 나왔다. 다만 시험삼아 (점수를 보고 다시 풀어보려고)문제를 제출해봤는데 다시 제출이 안되서 당황하며 코딩테스트때는 매뉴얼을 잘 읽어봐야겠다는 교훈을 얻었다.

 

당시의 일정상 길게 준비를 못하고 각각 반나절 정도 바짝 준비해서 면접에 들어갔다.


[회사 A / 백엔드개발자 / 1차 기술 면접] 

A회사는 1:3 면접이었다. 

 

- CV 관련 질문

  - 프로젝트에서의 역할

  - 예전에 못했지만, 지금 한다면 잘 할 수 있을 것 같은 프로젝트가 있다면

  - Node.js, Django 질문

- GET POST 차이

- 데이터베이스 ORDER BY 구현

- 데이터베이스 인덱스 구현

- 프로세스 vs 스레드

- 프록시

- 동기와 비동기

- 싱글레톤 패턴 구현

- 자바 garbage collection 최대한 자세하게

[회사 B / 백엔드개발자 / 1차 기술 면접] 

B 회사는 1:1로 3번 면접을 봤다.

 

첫번째 면접

- 브라우저에 example.com에 접속해서 id/pw을 입력해서 로그인 하는 과정을 최대한 자세하게

- https / http 차이

- 데이터베이스 보안(과 관련해서 최대한 자세하게)

- 첨부파일이 있는 게시판 만드는 방법(을 최대한 자세하게)

- NAS vs 일반 서버

- 1~1000 사이의 값을 가진 100만개 레코드의 중간값을 구하기

 

두번째 면접

- node.js 싱글스레드의 장점?

- 안드로이드 패턴

- 디자인패턴

- oop

- 링크드 리스트 / 어레이 상황(삽입/삭제/검색)별 시간복잡도

- 인터페이스

- 앱스트랙트 메소드

- 싱글톤

- 세마포어  / 뮤텍스

 

세번째 면접

- 브라우저에 example.com에 접속해서 id/pw을 입력해서 로그인 하는 과정을 최대한 자세하게 (2)

- 사용하는 B 회사 서비스

- 해당 서비스에서 사용할 것 같은 기술/알고리즘

- 다이직스트라 알고리즘

- 두개의 스택으로 큐 만들기

 

 

깔끔하게 하루만에 연락이 왔다. 둘 다 보기 좋게 탈락이었다. 비록 준비를 제대로 못하고 봤지만 대략 개발 면접이 어떻게 진행되는지 알 수 있었다. 앞으로 면접 준비를 어떻게 해야할 지 감이 왔다. 당시의 피드백은 다음과 같다.


불합격 이유 및 피드백

- 전반적으로 백엔드 개발에 대한 지식이 부족했다 -> 네트워크, 데이터베이스 관련 내용 공부 보충하기

- 디자인 패턴에 대한 공부도 전혀 안 되어 있었다 -> 관련 내용 보충하기

- A회사 B회사 둘다 Java 관련 프레임워크들을 주요하게 사용하고 있었는데 관련해서 충분히 준비하지 못했다 -> (Java가 메인인 회사를 지원한다면) 미리 준비하기

- 이력서에 Node.js관련 내용이 많았는데 제대로 대답하지 못했다 -> Javascript / Node.js / 관련 프레임 워크 질문 정리

 

기타 팁

 

- 대부분 단답형 질문이 아니라, 나의 밑천(?)을 드러낼때까지 계속 질문에 질문이 이어 들어온다 ->  데이터 구조및 알고리즘을 포함해서 경우 자주 나오는 다양한 영역에 대해서 깊고 충분하게 공부하자

- 어설프게 아는 내용들을 CV에 적지 말자 -> 반대로 생각하면, CV에 적은 내용들 위주로 물어볼테니 맞춰서 준비하자


이 정도로 정리 할 수 있었다. 지금 생각해도 이때 두 면접 경험이 다음 면접 준비에 있어서 많은 도움이 되었다.

이렇게 면접의 맛(?)을 한 번 보니 2월 말이었다.  다음 행선지도 정해지지 않았지만, 어느새 졸업이었다.

반응형