안녕하세요? 삼각형입니다.
카카오브레인을 떠나기로 결심하고 Qualcomm에 지원했습니다. 지원한 포지션의 채용공고는 다음과 같습니다.
Deep Learning SW Engineer – Qualcomm Research
Preferred Qualifications:
- Master's degree in Computer Science, Engineering, Information Systems, or
related fields.
- 2+ years of experience with Machine Learning frameworks (e.g., PyTorch,
TensorFlow, Keras).
- 2+ years of experience in embedded system development and optimization with
application to a specific problem domain in ML (e.g., NLP, multi-media).
- 2+ years of experience with one or more programming languages suitable for
machine learning (e.g., Python, R, C, C++)
- 2+ years of experience using statistics and probability (e.g., conditional
probability, Bayes rule).
- 1+ years of experience with low level interactions between operating systems
(e.g., Linux, Android, QNX) and Hardware.
- 1+ years of experience with NVIDIA software library such as CUDA
- 2+ years of experience working in a large matrixed organization.
- 1+ years of work experience in a role requiring interaction with senior
leadership (e.g., Director and above).
Minimum Qualifications:
- Bachelor's degree in Computer Science, Engineering, Information Systems, or
related field and 4+ years of Hardware Engineering, Software Engineering,
Systems Engineering, or related work experience.
OR
Master's degree in Computer Science, Engineering, Information Systems, or
related field and 3+ years of Hardware Engineering, Software Engineering,
Systems Engineering, or related work experience.
OR
PhD in Computer Science, Engineering, Information Systems, or related field
and 2+ years of Hardware Engineering, Software Engineering, Systems
Engineering, or related work experience.
채용공고를 살펴본 후, 카카오브레인에서 시도하려 했던 딥러닝 최적화 작업을 이 팀에서는 충분한 지원을 받으며 원활하게 수행할 수 있을 것이라는 생각이 들었습니다. 이 포지션이 저와 꼭 맞는다고 생각하여 바로 지원하기로 결정했습니다.
첫 단계는 서류 전형이었습니다. 이 포지션에서 요구하는 기술 스택을 대부분 갖추고 있었기 때문에, 서류 전형을 어렵지 않게 통과할 수 있었습니다.
다음 단계는 코딩 테스트였습니다. Qualcomm의 코딩 테스트는 다른 회사들의 코딩 테스트와는 다른 양상을 보였습니다. 일반적인 코딩 테스트가 BFS, DFS, 정렬, 탐색, 동적 계획법, 그래프 문제 해결에 초점을 맞추는 반면, Qualcomm의 코딩 테스트는 C++, Python, 프로그래밍, 알고리즘, 데이터 분석, 객체지향에 등에 대한 다양한 문제를 포함했습니다. 문제 자체의 난이도는 비교적 낮았지만, 많은 수의 문제를 짧은 시간 내에 해결해야 했습니다. 알고리즘 문제의 난이도에 대해 궁금해하실 것 같아 예시를 들자면, 주어진 배열에서 두 번째로 큰 수를 선형 시간 내에 찾는 수준의 문제가 출제되었습니다. 코딩 테스트에서 가장 큰 난관은 데이터 분석 문제였습니다. 데이터 분석에 필요한 전문 지식이 부족하여 이 부분의 문제들을 거의 해결하지 못했습니다. 그러나 다행히 다른 영역에서 좋은 점수를 얻어서 코딩 테스트를 통과할 수 있었습니다.
다음 단계는 전화 면접이었습니다. 이 면접에서는 제가 지금까지 해온 일에 대해 자세히 질문을 받았습니다. 또 코딩 테스트도 진행 되었습니다. 사실, 이미 코딩 테스트를 한 번 치른 후에 또 다시 코딩 테스트를 보게 되어 상당히 당황스러웠습니다. 게다가 이번 문제들의 난이도는 이전 코딩 테스트보다 더 어려웠습니다. 머리가 하얘졌지만, 금세 침착함을 되찾고 문제들을 차분히 하니씩 해결해 나갔습니다. 며칠 후 전화 면접을 통과했다는 이메일을 받았습니다.
다음 단계는 과제 테스트였고, 이를 받았을 때 상당히 놀랐습니다. 이미 코딩 테스트를 치뤘고, 전화 면접에서도 코딩 테스트를 본 상태였기 때문이었습니다. 제 프로그래밍 능력은 충분히 검증되었다고 생각했기 때문에 과제 테스트를 받았을때 조금 당황했습니다. 하지만 지원자로서 할 수 있는 일은 주어진 과제를 최선을 다해 해결하는 것 뿐이었습니다. 난이도는 특별하게 어렵지 않았지만 알고리즘, 자료구조, 딥러닝 관련 수학 지식이 없으면 쉽게 해결할 수 없는 문제들이었습니다. 제한된 시간 내에 모든 문제를 풀고 제출했고, 다음 날 과제 테스트를 통과했다는 이메일을 받을 수 있었습니다.
다음 단계는 대면 면접이었습니다. 이는 총 7라운드로 구성되어 있었고 이틀 동안 진행되었습니다.각 라운드마다 2명에서 3명의 면접관이 참석했으며, 지금까지 경험한 면접 중에서 가장 많은 면접관을 만나는 기회였습니다. 대면 면접의 진행 방식은 전화 면접과 크게 다르지 않았습니다. 저의 배경, 컴퓨터 공학, 딥러닝에 대한 지식을 질문 받았고 코딩 테스트를 보기도 했습니다. 특히 한 라운드에서 딥러닝 관련된 문제를 많이 불어봤는데, 제 지식이 그렇게 깊지 않아 모두 대답을 할 수 없었습니다. 하지만 그 과정에서 딥러닝에 대해 더 배울 수 있어 재미있었습니다. 면접관들은 모두 친절했고, 이 경험을 통해 Qualcomm에 대한 좋은 인상을 가지게 되었습니다.
지금까지 너무 많은 면접을 봐서 더 이상의 면접은 없겠지라고 생각했으나 제 오산이었습니다. Qualcomm에서 추가 면접이 진행하자고 했습니다. 추가 면접도 대면 면접이었으며 컴퓨터 공학에 대한 전만적인 질문과 코딩 테스트를 보았습니다. 특히 코딩 테스트에 많은 시간을 소모했는데 주어진 문제를 해결하면 다른 요구사항을 제시하며 코드를 수정하도록 하였습니다. 또한 코드를 변경할 때마다 시간 복잡도도 물어봤습니다. 면접이 어려웠지만 다행히 통과하여 오퍼를 받을 수 있었습니다.
참고
감사합니다.