NEWBLUE's

5. 뚜뚜뚜 들리세요? 네 그럼 지금부터 말씀하시면서 풀어주세요! - 라이브 코딩테스트 / 기술 면접 준비하기 본문

순간들

5. 뚜뚜뚜 들리세요? 네 그럼 지금부터 말씀하시면서 풀어주세요! - 라이브 코딩테스트 / 기술 면접 준비하기

newblue 2021. 1. 24. 15:30
반응형

'360시간 만에 개발자 되기 프로젝트'의 다섯 번째 글- '뚜뚜뚜 들리세요? 네 그럼 지금부터 말씀하시면서 풀어주세요! - 라이브 코딩 테스트 / 기술 면접 준비하기입니다. '개발자 구직 과정'에 익숙하지 않은 분이시면 0. 개발자 취업 프로세스 이해하기를 먼저 보시는 것을 권합니다.

 


- D 회사 Data Analyst
- E 회사 Software Engineer
- F 회사 Backend Engineer
- G 회사 Data Analyst / Backend Engineer 동시에 지원
- H 회사 Data Engineer


위와 같이 5개 회사 채용과정 (못 보신 분은 지난 글을 참조하시면 됩니다)은 순조롭게 진행되었다.

 

다섯 바구니에 나눠 담긴 제 달걀은 어떻게 되었을까요?

 

전화코딩 지옥이 시작되다

먼저 3개의 회사는 라이브 코딩 테스트를 한다고 했다. 긴장감을 유지하며 바짝 준비하려고, 하루~이틀 정도만 차이를 두게 한 후 전부 몰아넣었다.

여기저기에서 프로그래밍을 가르친 경험도 많았고, 기본적인 것만 물어본다기에 형식 자체에 대해 큰 준비는 하지 않고 그저 계속 일반 코딩 테스트 준비를 했다. 그리고 그게 화근이었다

참고로 필자는 동행이 있을 때 전화가 걸려오면 괜히 동행이 의식되어서(?) 전화도 잘 못 받는 편이기에, 나가서 받는 편이다. 면접관을 의식하지 않고 편하게 푸는 연습을 하거나, 혹은 적당히 설명하면서 푸는 연습을 했어야 할 텐데 그러지 못했다. 그리고 결과는......

 

E회사 Software Engineer- 라이브 코딩 테스트

구글닥스와 hangout으로 진행되었다. 면접관님께서 조금 늦으셨다. 정각에 인사 담당자분이 한번 들어왔다가 나가셨는데, 그때 잠깐 docs에 메모라도 해주셨으면 좋았을 텐데 센스가 아쉬웠다. 

String shuffle + recursion과 관련된 문제가 나왔다. 바로 recursion을 떠올렸으면 좋았을 텐데, 조건문으로 풀려다가 완벽하게 풀지 못했다.

처음에 조용하게 생각을 하고 있었는데, 면접관님께서 계속 말을 해달라고, 어떤 걸 생각하고 있는지 말씀을 달라고 피드백을 주셨다. 그래서 '침묵을 하지 말자' + '어떻게 풀지?'가 섞여서 제대로 풀지 못했던 것 같다. 삐빅 핑계입니다. 늘 그렇듯, 면접 다 끝나고 그제야 깔끔한 풀이가 생각이 났다. 

그리고 면접이 끝나자마자 떨어졌음을 알았고 역시 감은 맞았다. 

탈락 이유 피드백 

신기하게 피드백을 주셨다. 짧긴 했지만 '귀하의 역량은 훌륭했지만, 한정적인 재원과 TO로 인해서 등등'의 말보다는 훨씬 좋았다. 늘 피드백을 좋아하기에 잘 새겨들었다. '전반적으로 문제에 대한 이해도가 좋고 스마트한 후보자로 판단되지만, 코딩으로 구현하는 부분에 있어 다소 아쉬운 부분이 있었다'

라이브 면접에 익숙하지 않아서 어버버 거리던 모습이 비쳤기에 100% 수용하고 열심히 보충하기로 했다.

 

라이브 코딩 테스트를 본 적이 없으시다고요?  아직 경험해보시지 못한 근사한 일이 남아있습니다:)

 

F회사 Backend Engineer & Data Analyst - 라이브 코딩 테스트

E회사 면접 후 이틀 연속 다른 코테를 보고, 다음 날이었다.

정시에 휴대폰으로 전화가 와서 진행되었다. coderpad.io라는 플랫폼을 이용했다.

준연예인(?) 급의 Head 분께서 직접 진행하셨다. 사실 여기서부터 당황해버렸다. 아니 지난주에 TV 프로그램에서 봤는데

list 안에서 특정 원소를 찾기 위해서 binary search를 직접 구현하는 내용이었다. 처음부터 패기 있게 (python) list.index 써도 되냐고 물어봤는데, 무엇인지 모르셨다가 설명해드리니 (당연히) 안된다고 하셨던 기억이 난다.

항상 혼자서 문제를 풀 때마다 binary search 나오면 구글에 binary search 검색해서 해당 부분 복붙하거나 아니면 python bisect 같이 라이브러리 홈페이지를 보고 썼었던 내 모습이 아주 빠르게 지나갔다ㅎ.ㅎ 물론 그래도 비교적 익숙했기에 바로 슈슈슉 풀고 테스트 케이스까지 제시했는데, 아 binary search의 기본 조건문에서 약간 실수가 있었다는 것을 종료 직전에 발견하게 되는데...... (이후 중략)

Data Analyst와 관련해서는 프로그래밍 지식보다는 실제로 

- DAU가 감소했다면? 어떻게 하실래요?
- SQL 실무에서 사용하신 적이 있나요? 어떻게 사용하셨나요?
- 실무에서 데이터 가지고 임팩트를 내본 적이 있나요?

라는 질문에 대해 꼬리의 꼬리를 무는 식으로 진행되었다. 아무래도 학교에서의 이론 지식과 6개월 내외 프로젝트 경험으로는, 대답하기 쉽고 어려움을 떠나 아예 대답이 불가능한 질문들이 많았다.

이번에는 지난번 E회사와는 다르게 의식적으로 말을 계속하려고 했다. 그랬더니 오히려 면접관님께서 너무 말 많이 안 하셔도 된다고, 적당히 2~3분에 한 번씩 뭐하셨는지만 말씀해주시면 된다(!)고 하셨다.

그리고 면접이 끝나자마자 떨어졌음을 알았고 역시 감은 맞았다(2)

탈락 이유 피드백

이번엔 반대로 '의식적으로 말을 많이 해야지'라는 생각으로 면접에 들어갔는데, 그래서 오히려 꼬여서 계획했던 대로 안 풀렸다. 2번 극단적으로 태도를 바꾸고 나서 내 페이스를 깨달았달까ㅎㅎ

Data Analyst의 경우에는 실무와 비슷한 경험(최소한 Kaggle)이 없으면, 아무리 영혼까지 끌어모아도(?) 면접에서 말할 내용이 거의 없다는 사실도 깨달았다. 그래서 대부분의 회사들에서 2~3년 이상의 경력을 요구하는 것 같기도 하다. 

 

원래 삼세판인거 다 아시죠? :)

 

H회사 - Data Enginner 라이브 코딩 테스트 및 1차 기술 면접

2 연속 탈락을 경험하고, 이제야 어떤 느낌으로 준비해야 될지 깨달았던 것 같다. 

H회사는 1차 온라인 코딩 테스트가 따로 있었다. SQL, 알고리즘에 대해서 이틀에 나눠서 2시간씩 시험을 봤다. 

- 알고리즘 테스트는 문자열, 리스트를 다루는 위주로 나왔다. 아무래도 Data Engineer라서 ETL 관련 문제가 출제된 것으로 보인다.
- SQL의 경우 WINDOW FUNCTION, JOIN, CASE 문이 적절히 조합되어 출제되었다. WINDOW FUNCTION은 SQL 코테의 단골 메뉴(?)인 듯하다.

다행히 합격통보를 받았다. 이번에는 그래도 4일 정도 준비할 시간이 있었다. 

i) 푸는 것과 ii) 설명하는 것과 iii) 풀면서 설명하는 것은 미묘하게 다르기에, 계속 예상 문제를 뽑아놓고 풀면서 설명하는 연습을 했다. 사실 전화 면접의 난이도는 그렇게 어렵지가 않아서 코딩 테스트 사이트들에 있는 기초적인 알고리즘들 (스택, 큐, 문자열 연산, 눈물의 이진 검색 등)을 연습했다. 구글에 입사한 지인에게 듣기를, 실제로 재직자에게 모의 인터뷰를 많이 연습한다고 한다.

- 리스트에서 합이 n이 되는 두 원소를 빠르게 찾는 방법과 관련된 문제가 출제되었다.
- 처음에 직관적으로 O(n^2)로 풀고, 두 번째로는 python dictionary를 사용해서 O(nlogn)으로 풀었다.

기존의 두 코딩 테스트보단 확실히 한결 나았다. 준비를 어느 정도 했었어서 그런지, 억지로 의식해서 말하기보단 자연스럽게 진행되었다. 면접관님께서 종종 던지는 질문에 빠르게 대답하거나 동시에 힌트를 얻을 수 있었다. 좋은 의미로 핑퐁핑퐁 하며(?) 진행되었다. (돌이켜보면 내 마음가짐만 변했지, 전 면접관님들도 큰 차이가 없었을 것이다.)

면접 직후의 감은 나쁘지 않았다. 그리고 얼마 지나지 않아 첫 라이브 코딩 테스트 합격의 기쁨을 누렸다ㅎ.ㅎ 만세(!)

 

H회사 - Data Enginner 2차 기술면접

일주일 정도 후 2차 면접을 봤다. 코로나로 인해서 화상면접으로 진행되었다.

면접관이 3명 다 다른 곳에 계셨는데, 그중 1분이 차 조수석으로 추측되는 곳에서 이동하고(?!) 계셨다. (심지어 소음이 생겨서 계속 마이크를 껐다 켰다 하셨다.....!) 정말 자유로움(?)의 끝판왕을 보여주는 회사였다. 

3문제 정도 문제를 같이 풀고 설명하는 식이었고, 다음에는 일반적인 인성/기술 면접이 진행되었다. 


- list 순회하며 연산 수행하기

- Binary Tree가 Binary Search Tree인지 체크하기

- Stack 2개로 Queue 구현하기 (그렇습니다. A회사와 같은 문제였습니다!)

 

- 데이터 관련 경험, 꼬리에 꼬리를 무는 질문

- DB 인덱스 관련 경험, 꼬리에 꼬리를 무는 질문(2)

- 인공 신경망 

- 머신러닝 cross validation

- overfit vs underfit


기술면접에서 느낀 건 역시 경험의 부족함이었다. Data Enginner라서 그런지, 데이터 / DB 관련 질문이 대부분이었다. 추가로 회사에서 머신러닝 파이프라인 관련 역량도 기대했는지, 머신러닝 분야에 대한 질문도 있었다.

지식과 관련해서는 어느 정도 적당히 대답할 수 있었는데, 총평은 A라기보단 B+ 정도랄까. 경험과 관련해서는 역시 영혼을 끌어모아도 수업 관련 프로젝트 정도밖에 없었다. 끝나고 나니, 압도적으로 지식 관련 답변을 잘한 것도 아니고 관련 경험이 많은 편도 아니라서 높은 확률로 떨어질 것 같다는 생각이 들었다. 그리고 역시 결과는 맞았다.

무슨 일이든 다 그렇겠지만, 면접도 운칠기삼인 게 잘 아는 분야의 질문만 나올 수도 있고 전혀 모르는 분야만 나올 수도 있다ㅎㅎㅎ 특히 경력 직의 경우에는 본인의 경험을 토대로 질문하겠지만, 신입은 그럴만한 경험이 많지 않아서 일반적인 지식을 물어볼 테고 더 여러 상황에 좌우될 수밖에 없다. 그러니 많은 분야에 대해서 차분히 잘 준비하는 수밖에 ㅎ.ㅎ

 

회사 규모가 클수록 기본기를 갖춘 사람을, 반대일수록 즉시전력감(?)을 선호하는 것 같아요. 물론 둘 다 되면 좋겠지요.

 

D회사 채용과정

D회사는 비교적 다른 회사들과 결이 다른(?) 경험이었다.

지원하자마자 이틀 후에 바로 면접을 보게 되었다.

굉장히 급하게 사람을 뽑고 있어서 약간 경계되기도 했는데, 인원을 채용해야 하는 이유가 있다고 하셨다.

알고 보니 새로 데이터 팀이 생길 예정인데, 팀을 초기부터 만들 팀장급을 뽑는다는 것이었다.(!) 그 말을 듣자마자 아마 떨어지겠고, 혹여나 붙어도 가지 않아야겠다고 생각했다. 우선은 어느 정도 만들어진 조직에서 좋은 시스템에 대해서 한 번 익숙해지고 싶었기 때문이다. 그리고 결국엔 큰 조직의 신생 팀으로 오게 되는데


D회사 - Data Analyst 1차 CEO 면접 (인성+기술 약간)

일반적인 회사와는 다르게, 임원 면접이 먼저였다. 20여분 정도 회사의 비전과 목표에 대해서 설명해주셨는데, (사실 거의 다 찾아봤기에 알고 있는 사실이긴 했다.) 이 또한 역시 흥미로웠다.

- 왜 Data 분석가가 되고 싶으신가요?

- 머신러닝과 딥러닝의 차이가 무엇인가요?
(컨설턴트 출신 비 개발자 CEO였기에, 비전공자에게 설명을 잘하는지 판단하기 위해 설명하신 것으로 추측된다.)

- 특정 회사의 문제와 관련해서 어떻게 머신러닝으로 해결할 것 같은지?

- 라벨링이 없는 데이터의 경우 어떻게 사용할지? (기존 데이터가 라벨링이 안 되어있는데, 활용을 하고 싶으셨다)

 

D회사 - Data Analyst 2차 CTO 면접 (기술+인성)

돌이켜보면, 경험했던 기술면접과는 조금 결이 달랐다. 다른 회사들은 해당 직군에 사람이 필요해서 그 '직군'에 맞는 면접을 봤었는데, 이번 면접은 그 '직군'에 잘 맞냐도 중요하지만 '개인'에 대해서 궁금해하는 것 같았다.

- 프로그래밍을 모르는 분이랑도 같이 잘 일할 수 있나요? (가게 될 팀에 아직 개발자가 없었다ㅎ.ㅎ)

- Python SQL R 숙련도 순으로 나열해주시고, 경험을 알려주세요

- Git 사용해보셨어요? 왜 사용하는 것 같아요? Git을 사용하기 전이랑 요즘이랑 차이가 무엇일까요?

- 위치 데이터를 저장한다고 생각해봅시다. 예를 들어 x값 y값 두 가지만 있다면? 해당하는 데이터 스트럭쳐 어떻게 하실래요?

- 일반적으로 편의점에서 맥주 4개를 묶어서 파는데, 새로 대항할 아이템을 만든다면 어떻게 만드실래요? 어떻게 조사하시고, 결과는 어떻게 분석하실래요?

- 데이터에서 아웃라이어를 어떻게 제거하실 것 같나요? 

- 평소에 공부를 어떻게 하고 계신가요? (!)

D회사 - Data Analyst 3차 실무자 면접 (인성+기술 약간 )

Top Down 면접의 폐해(?)이자 이득인진 잘 모르겠지만, 실무자분들께서 물어보시는 대부분의 질문이 1차, 2차에서 먼저 CEO/CTO 분께서 먼저 물어보셨거나, 아니면 내가 물어봐서 답을 알고 있는 내용들이었다. 그래서 늘 빠르게 답변을 드렸고, 오히려 필자가 회사/팀에 대해 질문을 더 많이 드리게 되어 후반부로 갈수록 오히려 면접자가 아닌 면접관이 되어버린(?) 느낌이었다. 

소규모 팀이어서 그런지, 면접관분들과 필자의 성향이 잘 맞을지에 대한 질문도 꽤 있었다.

- 왜 데이터 애널리스트가 되고 싶나요?

- 왜 우리 회사에 오고 싶으신가요?

- 가장 인상 깊었던 프로젝트는?

- 데이터 애널리스트 필요역량 3가지는 뭐라고 생각하시나요?

- 문제를 해결한 경험은? 구체적으로 알려주세요.

- 데이터 아웃라이어 해결 방법은?
(CTO님과 주고받은 대화를 복붙 하니, 오 저희가 정말 그렇게 하고 있어요(!)라고 하셨다. 이 글을 보실 일은 없겠지만 진실은 이랬습니다.)

- 일할 때 조용한 편이신가요? 아니면 반대이신가요? 

- 점심에 밥 같이 먹는 걸 선호하시나요, 아니면 혼자 드시나요?


총평 및 탈락 이유 피드백

지금까지 본 모든 면접들 중에서 손에 꼽힐 정도로 화기애애하게 재밌었다(?) 그래서인지 총 3시간 반을 쉬지 않고 했는데도 그렇게 지치지 않았던 것 같다. 다만 내가 합류하게 되면 기술 백그라운드를 가진 사람은 나 혼자 일 것 같았기에, 신입이 가기보단 기존 기업에서 기본기를 다진 경력 직군이 새로운 문제를 풀고 싶을 때 가면 좋을 것 같다고 생각했다. 그리고 회사의 선택도 나와 같았다ㅎㅎ

 

다섯 바구니에 나눠담아도 위험한 건 마찬가지였네요ㅎ.ㅎ 이제 하나 남았습니다.

 

G회사 - Backend Enginner 라이브 코딩 테스트 및 면접

G회사는 면접 볼 때의 면접관의 '태도'에 대해서 많이 느끼게 해 준 회사였다. 나중에 회사에서 면접관이 되거나 면접관을 교육하게 된다면 생각날만한 경험이었다.

G회사의 경우 지원 후 한 2주 정도 후에 느지막이 연락이 왔다. 

정시가 되기 1분 전에 전화를 주시면서 '혹시 시간 괜찮으세요?'라고 물어보시는데 목소리와 인성에 반해버렸다(?)

두 개 정도 문제를 풀고, 그 이후에 여러 가지 문답으로 구성되어 있었다. 특이하게, 프로그래밍 문제를 푸는 방식을 말로 설명해달라고 하셨다.


문장에서 단어 뒤집기

문장에서 단어 횟수 세기

프로세스와 스레드 차이

시간 복잡도에 대해서 아는 대로 설명하기

RESTful 하다는 의미는?

node.js로 api 만들어본 경험

쿠키와 세션의 차이?

로그인 한 사용자를 대상으로 인증서를 어떻게 발급해야 옳을지?

MD5 해시를 사용하는 이유?

RDB 사용해본 경험?

DB 트랜젝션과 관련해서 아는대로 설명하기

깃 사용 경험?


쿠키와 세션 관련 질문, 인증서 관련 질문만 제대로 답하지 못했고 나머지는 잘 대답했다. 구글에서 '개발자 면접'이라고 검색했을 때 나오는 질문들로만 질문 주시고 별다른 팔로잉 질문도 없으셨기에 솔직히 무난하게 붙을 줄 알긴 했다.

탈락 이유 피드백

잘 봤다고 생각했는데 떨어진 최초이자 마지막 면접이었다. 쿠키/세션 관련 인증의 질문이 중요하다고 생각하셨거나, 아니면 다른 질문들에 대해서 질문이 떨어지기가 무섭게 단답식으로 말씀드렸다는 점에서 주입식 인재(?)라는 느낌을 받으셨을 수도 있겠다고 생각했다.

어쨌든 그래서 서버의 인증과 관련한 원리를 다시 공부하고, 어떤 질문이더라도 내 표현으로 소화시키는 연습을 조금 더 해야겠다고 할 일에 적어두었다. 

직접 쓰기 부끄럽지만 필자도 말을 예쁘게 하는 편이라는 말을 종종 들을 때가 있는데, 이분은 따뜻함 끝판왕(?)이셨기에 떨어졌지만 면접 태도의 여운이 남았다. (최근의 언론을 통해 큰 규모의 투자유치를 받았다고 들었는데, 응원합니다. 사업 번창하세요~)

여러 시행 착오 끝에, 면접 직후 느낌과 합격결과와의 상관관계를 밝혀냈습니다. '잘 본 것 같다'가 아니면 조용히 다시 준비를 하면 됩니다 :=)

 

1라운드 총평

그렇게 지난 화에서 열심히 지원했던 5개의 기업은 모두 다 떨어졌다.

스타트업이 시장에서 프로덕트 마켓 핏을 찾아가는 것처럼, 유사하게 조금씩 구직시장에서 나 - 회사/직군 핏을 맞춰가는 것 같은 미묘한 느낌이 들었다. 기분탓일지도모른다. 오히려 준비가 100% 되어있지 않은 상태에서 다양한 직군들의 면접 과정을 거치니 부족한 점이 무엇인지 빠르게 알 수 있었다. 동시에 '과연 그 부족한 점을 단기 / 장기적으로 채우길 진정 원하는가?'라는 질문에 대한 답을 찾아가는 과정 또한 흥미로웠다.

조금 더 관심 영역을 넓혀 볼까 했었기에, 주로 엔지니어가 대부분이었던 1라운드(?)에 비해 2라운드는 조금 다양한 직군들로 구성되어 있었다. (탈락 소식을 듣자마자 바로 다음 기업을 지원해서 항상 채용 프로세스 중인 회사 개수를 거의 유지했었다.)

그중 세 개만 먼저 언급하자면,

재밌어 보여서 지원했던, J회사 Data Analyst

지인의 추천으로 보게 된, K회사 Research Engineer

가 있고, 그리고 Data Enginner로 면접을 봤던 H회사에서, Product Manager가 더 어울리는 것 같으니 해당 포지션으로 면접을 다시 보겠냐는 연락이 왔다. 모든 가능성에 열려있는 편이라서, 곧바로 응했다.

 

그리고 얼마 안 있어 바로 면접을 보게 되었는데......

(과연 2-1라운드의 결과는 어떻게 되었을까요? 제가 원하는, 저를 원하는 회사와 직군을 잘 찾을 수 있을까요? 다음 화에 계속됩니다)

반응형