본문으로 바로가기
반응형
[관련글]


미국 취업 과정에서 온사이트 인터뷰는 가장 이질적인 경험 이었습니다. (회사마다 다르지만) 오전부터 오후까지 진행 되는 릴레이 방식의 1:1 인터뷰는 그 동안 한번도 경험 한적이 없기 때문입니다. 무엇보다도 긴 시간 동안 진행되다 보니 뒤로 갈수록 지치고, 이전의 인터뷰가 머리속에 남아 매 순간 마다 집중 하기가 어려웠습니다. 인터뷰의 질문은 (1) 퀴즈 형태의 순발력 및 사고력 테스트, (2) 학부 수준의 기초 지식, (3) 업무에 필요한 구체적인 지식과 경험 그리고 (4) 인성에 관한 질문으로 구분 되는것 같습니다. 저는 영어가 부족하기 때문에 질문을 정확히 이해하지 못하였을 때는 다시 설명을 요청 하였으며, 애매 모호한 조건의 경우 인터뷰어의 의도를 파악하려고 노력했습니다. 그럼 이번 글도 기억나는데로 저의 온사이트 인터뷰 경험을 이야기 하겠습니다.  


Brainchip

제가 온사이트 인터뷰를 하기 이전에 다른 분께서 이미 인터뷰를 하셔서 미리 예상문제를 얻을 수가 있었습니다. 예상문제 덕분에 (문제 자체가 어렵지 않지만) 퀴즈 형태의 질문에 당황하지 않고 그 순간을 넘길 수 있었던 것 같습니다. 총 4번의 인터뷰가 이루졌으며, 약 3시간 30분 동안 진행되었던 것 같습니다. 


  • 첫번째 인터뷰 (Director)
    • 간단한 이력 소개 
    • (미국에서 사용되는) 스위치 2개로 구성되어 있는 전등의 회로 구현
      • 잠시만 생각해보면 xor 로 구현되어 있다는 것을 쉽게 알수 있습니다. 다만 질문 자체가 논리게이트를 사용하지 않고 구현하는 것이었기 때문에 질문을 모르고 즉석에서 생각해서 답변을 해야 했다면 꽤나 당황스러웠을 것같습니다.  
    • 엘레베이터 순서도 구현 
      • 엘레베이터의 동작을 순서도로 그려봐 라고 요청을 해왔습니다. 우선 순서도를 작성하기 전에 엘레베이터의 동작을 정의 하기 위하여 사용될 버튼의 종류를 확인하고, 인터럽트의 경우도 (예를 들어 1층에서 5층으로 올라가는 도중 3층에서 up 버튼을 누르면 3층에서 멈춘 다음 다시 5층으로 올라가기) 고려해야 하는지 물어 보았습니다. 간단한 형태로 구성해 보라는 말에 기본적인 동작만 지원하는 순서도를 작성하고 왜 이렇게 설계하였는지 설명을 하였습니다. 설명 이후에는 위에서 질문한 인터럽트 기능을 추가하라는 요청을 받았으며, 그 이후에는 긴급 멈춤에 대한 기능도 요구하였습니다. 
    • 두번째 인터뷰
      • 약 30분간 이력 소개 및 질문
      • 2:1 MUX를 이용하여 게이트 표현 
      • 뉴런네트워크에서 방대한 레지스터를 가장 빠르게 셋팅하는 방법에 대하여 토론을 나누었습니다. 오래되어서 기억은 나지 않지만 broadcasting 방법을 어떻게 구현하면 효과적인지 이야기 나누었것 같습니다. 
    • 세번째 인터뷰
      • 약 15분간 이력 소개 및 질문 
      • AMBA 버스 프로토콜
        • AHB, APB와 AXI를 파형을 그려가면서 설명 하였으며, AXI의 Stream과 ACE 프로토콜은 정확히 모른다고 답변하였습니다. 추가적으로 AHB-Light slave interface를 가지는 SRAM 컨트롤러를 설계해 보라고 해서 write buffer를 이용한 간단한 회로를 그리고 동작을 설명하였습니다. 
    • 네번째 인터뷰 (COO)
      • 간단한 이력 소개, 현재 연봉 및 비자 상태 확인 

    정신없이 온사이트 인터뷰를 마치고 "수고했고, 빠른 시간에 연락 줄께." 라는 COO의 마지막 인사를 듣고 난 이후에 긴장을 풀수 있었습니다. 살면서 이렇게 긴장 하면서 인터뷰를 했던 것은 처음인 것 같습니다. 다행이 큰 실수는 없었고, 질문에 대하여 적절히 답변을 하였기 때문에 인터뷰 이후에 아쉬움은 남지는 않았습니다. 다만 영어를 편안하게 구사하지 못하여 생기는 자괴감은 어쩔 수 없었습니다. 특히 micro architecture 에 대한 이야기를 할 때 나의 의미가 정확히 전달이 되지 않는 느낌이 들때는 정말로 많이 답답하였습니다.

    좋은 경험이라고 생각하고 기대도 하지않았는데 인터뷰 다음날 이메일을 통하여 오퍼를 받았습니다. 다른 분들께서 얼마나 힘들 준비하셨는지 옆에서 보아왔기 때문에 첫번째 전화 인터뷰, 첫번째 온사이트 인터뷰에서 오퍼까지 받은 것이 믿어지지 않았습니다. 알고보니 COO가 (함께 정리해고 된) 이전 메니저와 개인적으로 친분이 있는 사이였으며, 인터뷰 이후에 reference check를 하였다고 합니다. 다행이 메니저께서 저를 좋게 말씀해 주셔서 빠른 시간에 오퍼를 받을 수 있지 않았나 싶습니다. 

    Qualcomm

    이전 글에서 밝혔듯이 급하게 온사이트 인터뷰가 결정된 경우 입니다. 인터뷰는 오전 10시 부터 오후 3시까지 이루어 졌으며, 매니저가 직접 스케쥴을 알려 주었습니다. (인터뷰 시작 후에 HR 에서 온사이트 인터뷰 스케쥴을 이메일로 받았습니다.) 이미 Brainchip 의 최종 오퍼에 승인을 한 상태 였고 Samsung의 온사이트 인터뷰도 초청을 받은 상태였기 때문에 경험을 쌓는다는 기분으로 큰 부담없이 온사이트 인터뷰를 진행 할 수 있었습니다. 또한 퀴즈 형태의 질문 보다는 업무에 필요한 경험 및 지식 위주로 질문을 받아서 크게 당황할 일은 없었습니다.  


    • 첫번째 인터뷰 (Director / 현재 매니저)
      • 간단한 이력 소개 
      • 구현하였던 L1 캐시 및 loop buffer의 micro architecture 설명 
      • 스케쥴 관리 및 팀웍에 대한 질문 및 향후 커리어(엔지니어 VS 매니저)에 대한 질문
      • 이후 팀 소개 및 만약 함께 일하게 된다면 담당해야 할 업무를 설명 주었는데 위의 질문보다 더 많은 시간을 할애 했던 것 같습니다. (일반적으로 듣기만 해서 시간이 더 길게 느끼어 졌을 수도 있습니다.)
    • 두번째 인터뷰
      • 간단한 이력 소개 및 질문
      • 프로세서의 파이프라인에 대한 질문 
        • 설계하였던 5단 프로세서를 예를 들면서 답변을 하였습니다. 
        • Hazard 케이스 및 instruction prefetch 에 대하여 추가 질문을 받았습니다. Hazard 케이스는 교과서적인 답변과 함께 어떻게 forwarding path를 구현하였는지 위의 파이프라인 기반으로 설명을 하였습니다. 그리고 instruction prefetch는 설계하였던 프로세서가 IF와 ID 중간에 instruction queue 가 있었기 때문에 prefetch가 아닌 prediction에 비중을 두어서 설계하였다고 동문서답을 하였습니다. 
      • 간단한 arithmetic 연산 및 Lint error 해결 방법 
      • 패턴에 대한 sequence detector 구현
        • 매 clock 마다 랜덤하게 변하는 1bit 입력에 대한 패턴을 검출하는 회로로 이미 널리 알려진 인터뷰 문제였기 때문에 큰 어려움은 없었습니다. 
    • 세번째 인터뷰
      • 점심식사
        • 이전에 회사에서 했던 일과 이직 하려는 이유를 물어 보았습니다.
      • Power down 및 power up sequence 질문 
      • CDC(Clock Domain Crossing) 에 대한 질문 
        • 처음에는 간단한 질문으로 시작하였으며, Async FIFO 및 버스 프로토콜에 적용할 CDC 기법에 대하여 질문 받았습니다. 또한 convergence / re-convergence의 예와 해결책에 대한 질문도 받았습니다. 
    • 네번째 인터뷰
      • 간단한 이력 소개
      • Round robin arbitration 회로 구현
        • 기본적인(교과서적인) 회로 구현 이후에 현재 인터뷰어가 설계하고 있는 모듈을 예로 들면서 어떻게 arbitration 을 구현할지 다음과 같이 질문 했습니다. "4개의 Master가 있으면 각 master의 request는 1cycle 이후 Ack 를 받아야 하고, 해당 request는 destination에 도달하는데 수십 cycle이 필요한데 어떤 방법으로 arbitration을 구현하면 될까?" (질문 내용이 정확히 기억나지 않네요. 이런식의 질문이었다 정도로만 읽어주시기 바랍니다.) 
        • 순간 destination까지 수십 cycle이 필요하다면서 Ack 신호를 어떻게 1cycle에 만들지? 라는 생각에 당황을 하였으며 처음부터 방향을 잘못 잡아서 엉뚱한 답변을 하였습니다. 이후 몇번의 힌트를 받고 계속 회로를 수정해 나가긴 했지만 시간이 부족하여 완성은 시키지 못하였습니다. 
    • 다섯번째 인터뷰
      • 간단한 이력 소개
      • L1 및 L2 cache miss 에 따른 프로세서 성능 계산
      • Cache coherence protocol 에 대한 질문 
        • 실무로 다루어 본적은 없다고 말을 하였으며, MESI 프로토콜을 아는데까지 설명을 했었습니다. 
      • 10년 뒤의 모습에 대한 질문 


    전반적으로 인터뷰 분위가 좋았지만 네번째 인터뷰에서 너무 횡설 수설을 하여 큰 기대를 할수 없었습니다. 막연히 'Qualcomm이 되면 얼마나 좋을까?' 라는 생각에 집에 도착하자마다 thank-you email을 보냈습니다. 약 한 시간후에 'Your interview result is positive. HR should be contacting you soon.' 이라는 답변을 받았는데 지금 다시 생각해봐도 매니저가 화끈하게 저를 밀어 주었던것 같습니다. (무엇때문에 저를 좋게 보았는지 아직도 수수께기 입니다.) 


    Samsung

    HR을 포함하여 총 7번의 인터뷰를 오전10부터 오후 3시까지 진행하였습니다.이미 두번의 온사이트 인터뷰에서 좋은 결과가 있었기 때문에 즐기는 기분으로 인터뷰를 하려고 노력을 하였습니다. 하지만 생각과 달리 인터뷰는 힘들게 진행되었습니다. 나의 의도가 정확히 전달이 되지 않는 느낌을 자주 받았으으며, 약간의 논쟁도 있었기 때문입니다.  


    • 첫번째 인터뷰 (HR 인터뷰)
      • 삼성에 관한 간단한 소개  
      • 비자 및 합법적 신분 여부 확인  
    • 두번째 인터뷰 
      • 간단한 이력 소개 
      • Round robin / Priority Arbiter를 HDL로 기술  
      • Asyn FIFO을 HDL로 기술 
      • 산술 연산에서 발생하는 overflow와 underflow 처리 방법 
      • 게이트를 트랜지스터로 표현하기
    • 세번째 인터뷰 
      • 간단한 이력 소개 
      • FIFO depth에 관한 질문 
        • Write clock, read clock, burst length를 제시하며 FIFO의 depth를 구하는 퀴즈를 주였습니다. 하지만 read clock이 write clock 보다 3배나 빨랐기 때문에 FIFO가 필요없는 조건 이었습니다. 혹시 몰라서 data를 read 할 때 dealy 조건이 있는지 물어 보았지만 idle 상황을 가정하라고 말에 이 조건은 FIFO가 필요 없다고 말을 하였습니다. 
        • 인터뷰어가 웃으면서 다시 생각해보라는 말에 종이에 수식을 적어가면서 증명을 해 보였습니다. 인터뷰어는 미리 준비해온 종이와 자신이 제출한 퀴즈를 비교하면서 문제의 조건을 조금씩 수정 하였습니다. 하지만 몇 번의 수정에도 원하는 답변을 못 이끌어 내었는지 분위기는 싸한 느낌이었습니다. 
      • SRAM 데이터의 패턴 검출 문제 
        • 다행이 버스의 입력 데이터를 on the fly로 패턴 검출을 한 경험이 있어서 어렵지 않게 접근 할 수 있었습니다. 제시한 micro architecture 에 대하여 area에 대한 약간의 트집은 있었는데 delay 없이 연속적으로 SRAM에 접근하기 위하여 필요한 부분이었기 때문에 performance 관점에서 답변을 하였습니다.  
    • 네번째 인터뷰 (Hiring Manager)
      • 점심 식사 
        • 현재 자신의 팀소개 및 저의 이전 경력에 대한 이야기를 주로 하였습니다. 
      • 벡터 그래픽 구현 경력에 대한 질문 
        • 담당 업무, 설계한 모듈, overview 수준의 architecture 에 대하여 질문을 하였습니다. 
      • 퀴즈 형태의 문제 (문제가 정확히 기억 나지 않습니다.)
        • 세개의 박스에서 가장 적은 횟수로 공을 찾는 방법
        • 물건을 훔친 범인을 찾기 
      • 다섯번째 인터뷰 
        • 간단한 자기 소개
        • UVM 및 검증에 대한 질문 
          • UVM은 사용한 경험이 없다고 대답을 하였는데 약간 비웃는 듯한 느낌을 받았습니다. 인터뷰어는 계속 핸드폰을 보면서 건성 건성 질문을 하였고, 저도 점점 질문에 대한 대답을 단답형 형태로 하게 되었습니다. 
        • 약 15분도 지난 이후 급한 미팅도 있고, 자신은 검증 엔지니어이기 때문에 특별한 질문이 없다면서 미안하지만 다음 인터뷰어와 인터뷰를 진행하면 좋겠다고 하면서 먼저 자리를 비웠습니다. 
      • 여섯번째 인터뷰 
        • 간단한 자기 소개
        • 1024 bits random 입력에서 첫번째 '1'의 위치 찾는 문제 
          • 처음에는 256 bits씩 4부분으로 나누에 병렬로 검색하는 방식의 회로를 그렸습니다. 몇번의 질문과 답변 이후 입력 width는 1M bits 까지 증가하였고, 병렬 검색 방식에 대한 타이밍 문제가 제기 되었습니다. 그래서 파이프라인 형태의 회로를 수정해 나갔는데 latency 문제와 Area 증가를 문제 삼았습니다. 좀 생각을 하다가 "난 Area 증가 없이 이 방법을 해결 할 수 없다. 혹시 힌트가 있느냐?" 라고 질문을 하였습니다. 그랬더니 이 정도면 충분히 질문을 한것 같다고 하면서 다음 질문으로 넘어갔습니다. (아마도 어떤 식으로 문제를 해결해 나가는지 살펴 본것 같습니다.)
        • 설계한 L1 캐시 설명
          • 이력서의 xx% 에너지 효율 향상이라는 말이 무척 관심이 간다면서 지적재산에 위반되지 않는 범위 내에서 설명을 요청했으며, 캐시 메모리의 구성 방법 및 메모리 접근 횟수를 줄이기 위하여 적용한 기법등을 간단히 소개 하였습니다. 
          • 메모리 구성 방법에서 여러가지 의견 교환이 있었는데 (영어의 부족으로) 의미가 정확히 전달되지 않아서 많이 당황하기도 하였습니다.  
      • 일곱번째 인터뷰
        • 담당자가 없어서 첫번째 인터뷰어가 대신 하였으며, 온사이트 인터뷰의 피드백을 요청하였습니다. 


      인터뷰를 마치고 너무나 많은 실수와 의사소통의 문제 때문에 이전과는 다르게 '합격 안되겠다.' 라는 확신이 들었습니다. 그리고 다른 분들의 온사이트 인터뷰에서 힘들었던 경험담이 이해가 되기 시작하였습니다. 의무적으로 Thank-you email을 보냈지만 아직까지 답변이 없습니다.  




      제가 지원한 position이 RTL 설계 엔지니어 였기 때문에 micro architecture에 관한 질문이 많았지만 (이전 글에도 말씀드렸듯이) 저보다 먼저 구직 준비를 하신 동료 분들의 SoC분야에 대한 인터뷰 질문들이 무척 많이 도움이 되었습니다. 그렇기 때문에 이 글을 보시는 분들께 모든 (합리적인) 수단을 동원하여 최대한 많은 인터뷰 질문들을 정리 해보시길 추천드립니다. 그리고 간단한 회로라도 손으로 꼭 그려보며 연습하시기 바랍니다. 


      다음으로 연봉 협상 및 오퍼 수락에 관한 이야기를 해야 하지만 처음에 말씀드렸듯이 빨리 취업을 해야 하는 상황이었기 때문에 특별한 이야기가 없습니다. 혹시 다음에 이직을 하게 되면 연봉 협상에 관한 이야기를 쓸 수 있지 않을까요? 

      반응형