2016년 3월 11일 금요일

쥬니어 개발자의 해외 취업 준비 #14 On site interview(?)

당분간 인터뷰를 보는 회사의 실명은 거론하지 않기로 하였다.

첫째, 그동안은 뭐 누구나 들으면 알만한 회사들 인터뷰 정보를 공유 차원에서 좋을 것이라고 생각 했지만 어차피 이 블로그는 인터뷰 '내용'을 정리하고 공유하기 위한 목적이기 때문이다.

둘째, 왠지 소송의 나라 미국에서 나중에 sue 당할지도 모른다는 불안감도 엄습해 오고..

셋째, 상당히 작은 규모의 회사들도 있기 때문에 그런 정보를 공개적으로 흘린다는 것은 아무래도 그 회사 인터뷰 족보를 만드는 것 같은 느낌이 든다. 그러면 작은 회사들은 점점 인력 채용에 변별력을 잃어갈 것 같은 노파심이 든다... 회사가 뭐하는 곳인지 일일히 설명하기도 귀찮고


좀 그럴싸 한가?



아무튼 나는 이번 여행에서 On site 인터뷰는 못보는줄 알았다.
운이 좋은건가, 아니면 내가 그동안 너무 소극적이었던 걸까? 반쪽짜리 온사이트 인터뷰를 볼 기회가 생겼다.


며칠 전 마이클이라는 리크루터로부터 메일을 받고 나는 통상적인 전화 인터뷰 일정을 잡았다.
약속한 날 전화를 받았는데, 수화기 너머로 조금은 어리버리한 젊은 리크루터의 목소리가 들렸다.

마이클은 내 이력서를 봤는데 마음에 들어서 연락했고, 내가 서니베일에 살고 있냐는 등의 몇가지 질문들을 하더니 바로 인터뷰를 볼 수 있겠냐고 한다.

당연히 흔쾌히 수락을 했지... 그런데 자기들 본사에 와서 인터뷰를 볼 수 있겠냐고 묻는 것이다.

응? 테크 인터뷰도 안 했는데 회사로 오라고?

그 회사의 본사는 멘로파크에 있는데, 레드우드 시티와 팔로알토 사이에 위치한 도시이다. 며칠전에 여행의 막바지에 접어 들면서 렌트카도 반납하고 계속 숙소에서 요양 및 휴식을 취하고 있었지만 이 날 면접을 보기 위해 거금 65달러를 내고 차를 대여했다.

우버를 사용할까도 했지만, 같은날 저녁에 마운틴뷰에 다른 약속이 잡혀서 그냥 차를 빌리는 편이 나았다.
게다가 그날따라 캘리포니아 답지 않게 날씨가 흐려지더니 비가 추적추적 내리기 시작했다.

차를 몰고 280 프리웨이를 타고 달리다가 95번 으로 진입하니 빗방울이 굵어진다. 급기야는 101 국도를 따라 달릴때는 엄청난 비가 쏟아졌다. 그렇게 101에서 다시 94번 국도로 빠져나와 멘로파크로 들어갔다.


도시라고 하기엔 변두리 지역 같은 느낌이었는데, 그곳에는 작은 크기의 몇몇 회사들이 모여 있었다. 작다고 하긴 했는데 왠만한 한국의 중견기업 정도 되는 규모의 건물에 수백~수천명 정도 되는 사람들이 근무할 수 있는 건물들이 줄지어 있다. 실리콘 밸리에는 이런 중견 사이즈 회사들이 굉장히 많다. 잘 알려지지 않아서 그렇지.. 그만큼 산업 전반에 걸쳐 기반을 받치고 있는 튼튼한 하청(?)회사들이 많다는 뜻이다. 그런 회사들을 기반으로 우리가 아는 수많은 공룡 기업들이 하루가 멀다하고 혁신을 일으킬 수 있는 것이다.

본사에 도착해서 주차를 하고 안내 데스크에 들어가니 많은 회사들이 그렇듯 방문자 체크인을 하고 사진을 찍었다.


그리고 얼마 후 내 인터뷰를 하기로 한 던이라는 사람이 문을 열고 나를 맞이해줬다.
나이가 꽤 있어보이고 얼굴에 연륜이 묻어나는 금발의 백인 아저씨였다. 던은 나를 데리고 2층으로 올라가서 작은 사무실로 안내했다. 1:1로 이야기를 하려는 듯 했다.


얼떨결에 온사이트 아닌 온사이트 면접이 되어 버렸는데, 보통 온사이트 면접은 전화나 온라인 기술 인터뷰를 통과한 지원자들을 본사로 불러서 지원자의 바닥까지 들여다보는 최종 단계이다.

근데 바로 이렇게 회사에 방문해서 면접을 보라니 속으로는 얘들이 좀 급하게 사람을 뽑나... 하는 생각도 들었지만 기업 문화나 면접 방식은 회사마다 천차만별이니 그러려니 했다.


처음에는 그냥 간단한 백그라운드 체크만 하고 30분 정도면 끝날 줄 알았다.

던의 첫 질문은 역시 통상적이고 당연한...

What brought you to this company?
(직역하면 무엇이 너를 여기로 이끌었니?  그러니까 지원 동기가 뭐냐..라는 질문이다.)


나는 지난 3년간 임베디드 소프트웨어 엔지니어로 일을 했는데 그 회사는 영상 보안장비를 만들던 회사였어. 거기서 안정적인 디바이스 소프트웨어를 설계하고 만드는데 기여를 했지. 그런데 문뜩 변화가 필요하다고 생각했고, 내 커리어를 바꾸고 싶어졌어. 사실 영상 보안 장비가 사람들을 위한 디바이스라고는 하지만, 결국은 사람들을 감시하는 목적이잖아? 그래서 뭔가 더 실질적으로 긍정적인 방향으로 사람들에게 도움이 되는 디바이스를 만들고 싶더라고. 게다가 자동차 업계는 여기 실리콘 밸리 뿐만 아니라 전 세계적으로 핫하잖아? 그래서 이 회사에서 만드는 디바이스에 관심이 많고, 지원하게 됐지.


잘 기억은 안나지만 이런식으로 첫 질문부터 나는 굉장히 긍정적인 어투로 내 생각과 지원 동기를 어필했다. 지원동기는 예전부터 전화 인터뷰를 통해 수없이 많이 받은 질문인데, 지금 생각해 보면 그동안 첫 질문에 어필을 잘 하지 못했던것 같다.. 왜냐하면 첫 질문과 지원 동기는 지원자에 대한 첫 인상, 적극적인 자세, 말하기 능력 등을 종합적으로 판단할 수 있는데 적극적이고 진솔하게 대답을 하지 못했던 것 같다. 그래도 인터뷰를 하다 보면 많이 는다.  무엇보다 인터뷰에서는 인터뷰어보다 말이 많아야 한다.



첫 질문이 끝나자 인터뷰어는 바로 기술적인 질문들을 했다.


지난 회사에서 무슨일을 했고 너의 주된 역할이 뭐였어?

아까 말했듯이 영상 보안장비를 위한 임베디드 소프트웨어 개발을 했어. 주로 임베디드 리눅스 어플리케이션 개발을 했고, 간혹 디바이스 드라이버나 커널도 조금씩 건드렸어. 네트워크 카메라로부터 영상을 받고 저장장치에 저장하고 화면에 출력하는 기능들이 주로 많았고, UI도 자주 수정하면서 구현했지.

음, 그래 여기다가 아키텍쳐를 설명해 볼래?


인터뷰어는 대뜸 우리가 앉아있던 테이블에다가 마커펜을 올려놓더니 그려달라고 했다.
테이블 위에는 유리가 있어서 화이트보드처럼 사용할 수 있게 되었다.
나는 내가 구현했던 시스템의 구조를 그려가며 설명하기 시작했다.


내가 개발한 장비는 이기종 프로세서로 구성된 멀티미디어 SoC였어. 여기 이렇게 하드웨어 계층에, 프로세서가 여러개가 있었지. 범용 OS인 리눅스가 올라가는 AP(Application Processor)가 있고 ARM Cortex-A 아키텍쳐야. 그 밖에 하드웨어 코덱, DSP, 그리고 코덱을 제어하기 위한 서브 프로세서 등등이 있고 여기엔 프로세서 벤더가 제공하는 RTOS를 썼고...
네트워크로부터 영상이 전송되면 리눅스 커널의 네트워크 스택에 있겠지.. 그 위에 우리 회사 플랫폼 레이어가 있고, 그 위에 내가 어플리케이션을 개발했고...


거기 전송된 비디오는 어디에서 디코딩을 하지?

응, 그건 여기 하드웨어 코덱에서 디코딩을 하기 때문에 두 OS간에 제공되는 특별한 IPC 메커니즘을 통해서 데이터를 전송하고...블라블라..


둘 간에 공유 메모리 영역이 있어?

응, 메모리 영역을 두 프로세서가 나눠 쓰는데 그 중에 공유 메모리 영역이 조금 할당되어 있지 그래서... 블라블라...

여기에서 어떻게 오버헤드를 줄였지?

무거운 영상 데이터를 상위 레이어로 올릴때 마다 카피를 하는 코드들이 있더라고 그래서 제로 카피로 구조를 바꾸는 등등...




RTOS와 리눅스에서 어플리케이션 개발을 하는데 가장큰 차이점은 뭐지?

RTOS에서 너가 프로그래밍을 할 때 멀티태스킹으로 구현했어?

각 태스크는 무슨일을 했지?


던은 기다렸다는 듯이 질문들을 쏟아내기 시작했다.




불과 몇달전 이었지만, 한동안 안쳐다보던 시스템 구조를 머릿속에서 끄집어 내느라고 꽤나 애먹었다. 모든 질답을 다 기억할 순 없었지만 분명한 사실은 인터뷰어는 그 분야의 전문가(실제 개발팀의 팀장급)이고 내가 어떤 일을 했을지 대충 짐작을 하고 있는듯 보였다. 그리고 내가 시스템을 완벽하게 이해를 하고 개발을 하고 있었는지, 단순히 코더로 일을 하고 있었는지를 들여다 보려는 것 같았다.

회사에서 시스템 구조를 제대로 파악하고 호기심 있게 들여다 보면서 일을 하지 않았더라면, 단순히 API를 짜집기 해서 어플리케이션 모듈이나 꼬메고 앉아 있었다면 이런 인터뷰를 보는 것이 불가능하겠다 라는 생각이 들었다. 그리고 조금 더 자세한 부분까지 더 파고들면서 공부를 했으면 좋았을 것이라는 생각이 든다...




OpenCV랑 OpenCL 했다고 써있네, 경험이 있니?

OpenCV는 짧게나마 회사에서 프로토 타입을 만들때 사용했는데 비전 알고리즘을 만들고 윈도우 어플리케이션을 구현했어. 그 외에는 개인적인 관심으로 혼자 공부하고 있지.
OpenCL은 내가 GPGPU에 관심이 있어서 혼자 공부하고는 있는데 쉽지는 않아. 그렇지만 최신 OpenCV에 CUDA나 OpenCL 을 이용할 수 있도록 지원이 되고 있어서 그런 모듈들을 임베디드 보드에서 테스트 해봤었지.


드론 연구를 할 때는 무슨 일을 했지?

그 때 나는 드론의 자동항법 제어를 위한 임베디드 시스템과 강성 실시간 시스템을 설계하고 구현했지. 항공과랑 코웍했는데 그 사람들의 알고리즘을 실제 코드로 구현을 하고 시스템을 통함했어. 센서도 연결하고...

여기서 I2C통신이나 SPI통신을 했는데 이건 언제 썼어?



나는 다시 마커펜을 들고 드론 시스템을 설계한 내용을 테이블에 그렸다..


여기서 RTOS가 PID제어를 하고, 여기 펌웨어에서 센서 정보를 받는데 I2C 통신을.. 그리고 여긴 UART로 AP와 통신하고.. 펌웨어는 OS없이 Micro C프로그래밍으로 했고..
여기 이렇게 태스크를 두개로 심플하게 디자인했어. 하나는 센서 데이터를 모아주고 하나는 제어 알고리즘을 연산하고 제어 신호를 모터로 보내고....




폭풍 인터뷰가 끝나고 인터뷰어는 간단하게 회사 내의 소프트웨어 개발팀이 어떻게 구성되어 있다고 설명해 주고는, 내가 관심이 있는 분야가 어딘지를 물었다.

나는 커널과 디바이스 드라이버쪽의 로우레벨 시스템 소프트웨어 보다는 좀 더 상위 레이어에서 어플리케이션과 멀티미디어 응용에 관심이 많다고 했다. 미들웨어와 어플리케이션을 설계하고 구현하는 것이 좋다고..


그러자 던는 내가 시간이 괜찮으면 다른 사람과 또 이야기를 해보지 않겠느냐고 하였다.


나는 흔쾌히 수락하고 두번째 인터뷰어를 기다렸다.



이번에는 젊고 키가 큰 백인이 첫번째 인터뷰어와 함께 인터뷰룸으로 들어왔다.
그리고 첫번째 인터뷰어는 나에게 이 사람과 이야기를 해 보라고 하고는 방을 나갔다.


두번째 인터뷰어도 나에게 몇가지 질문들을 하고는 어플리케이션 레벨에서의 경력들을 주로 물어보았다.


너 어플리케이션과 UI, 멀티미디어 쪽 응용등에 관심 많은거 같은데, Qt같은거 써봤니?

음, 사실 학생때 간단한 프로그램 만들어본것 말고는 없었고, 전에 있던 회사는 자체 플랫폼을 사용했는데 나랑 내 팀원들 몇몇이 그걸 적용해 보고 싶어해서 서베이도 좀 했어. 근데 실제로 제품 개발로 연결은 못했고.


OpenGL 경험이 있니?

많이는 없지만 대학 연구 조교로 있을 때 무인항공기를 모니터링하는 GCS 시스템을 개발했는데 그 때 비행체의 자세 정보를 쉽게 알 수 있도록 3D 모델로 표현을 하도록 구현했는데 OpenGL 을 사용했어.



두번째 인터뷰어는 자기는 이 회사에서 미들웨어팀을 리드하고 있고, 아까 왔던 첫번째 인터뷰어는 로우 레벨의 커널 및 디바이스 드라이버 등을 담당하는 팀의 리더라고 하였다.

그리고는 나에게 또 질문이 있느냐고 하였다.



나는 항상 질문을 꼭 하려고 한다. 회사에서 어떤 기술을 쓰고 앞으로 이런 기술들을 응용할 생각이 있는지 등등...

자동차 전장 시스템에서 OpenGL을 사용해서 UI를 구현할 계획이 있니?
GPU 도 사용하니?



그렇게 인터뷰가 끝나고 다시 첫번째 인터뷰어가 오더니 인터뷰가 어땠느냐고 물었다. 그리고는 오늘 와줘서 고맙다며 악수를 청하고는 나를 문앞까지 데려다 주었다.


그렇게 내 생에 첫 실리콘벨리 에서의 반쪽짜리(?) 온사이트 인터뷰가 끝났다.

다음 온사이트 인터뷰도 오라고 했으면 좋겠다만..