주요 컨텐츠로 이동

엔지니어링 면접 — 채용 담당자가 돋보이는 방법 가이드

Engineering job interview best practices

발행일: 2020년 1월 22일

문화Less than a minute

작성자: Ted Tomlinson

성장 단계에 있는 회사의 엔지니어링 리더에게 가장 중요한 우선순위가 무엇인지 물어보면, 아마도 채용이라고 답할 것입니다. 직업을 선택하는 결정이 회사와 지원자 모두에게 얼마나 큰지 생각해보면, 몇 시간의 면접은 상당히 짧게 느껴집니다. 우리는 직업 면접 과정이 그 시간을 최대한 활용하여 지원자와 Databricks 모두에게 해당 직무가 적합한지 이해하는 데 도움이 되기를 바랍니다. 우리는 여러분에 대해 배우고 여러분이 최선의 결정을 내리는 데 필요한 정보를 얻도록 하고 싶습니다. 이를 위한 가장 좋은 방법 중 하나는 대화와 협업을 강조하는 면접을 설계하는 것입니다. 실제 세상의 문제는 복잡하고 어렵습니다. 우리는 특정 해결책을 보는 것보다 지원자가 추상적인 문제를 어떻게 해결하는지 이해하고 싶습니다.

면접 과정에 들어가기 전에 Databricks의 데이터 팀에 대해 지원자가 무엇을 이해하기를 바라나요?

Databricks가 운영하는 인프라의 규모에도 불구하고, 우리는 비교적 작은 엔지니어링 조직을 가지고 있습니다. 우리는 수백만 개의 가상 머신을 운영하고, 하루에 테라바이트의 로그를 생성하며, 엑사바이트의 데이터를 처리합니다. 우리의 규모에서는 클라우드 하드웨어, 네트워크 및 운영 체제 오류를 정기적으로 관찰하며, 우리의 소프트웨어는 위에서 언급한 모든 것으로부터 고객을 원활하게 보호해야 합니다. 우리는 200명 미만의 엔지니어로 이 모든 것을 수행합니다.

우리의 규모는 각 엔지니어링 과제에 가장 적합한 기술이라고 믿는 것을 채택하거나 만들 수 있는 유연성을 가지고 있다는 것을 의미합니다. 그 이면에는 우리의 인프라의 많은 부분이 아직 성숙 단계에 있다는 것이므로, 많은 이니셔티브에 대한 관심사의 범위는 단일 서비스의 범위를 넘어섭니다. 또한 아직 스타트업이기 때문에 소유권과 책임의 경계가 항상 명확하지는 않습니다. 이는 변경을 쉽게 하고 핵심 집중 영역 외부의 영향에 영향을 미칠 수 있다는 것을 의미하며, 다른 곳보다 프로젝트의 훨씬 더 많은 부분을 소유하게 될 것입니다.

Databricks에서 일한 후 무엇을 마스터하게 될까요? 빅 데이터 및 머신러닝 분야에서 확장 가능한 시스템을 만들 수 있게 될 것입니다. 대부분의 엔지니어는 일상 업무에서 적용 머신러닝을 수행하지 않지만, 우리는 고객을 위해 다양한 산업 분야에서 어떻게 사용되고 있는지 깊이 이해하고 있습니다.

기술 면접 질문에 어떻게 준비할 수 있나요?

우리의 엔지니어링 면접은 45분에서 90분 길이의 기술 및 소프트 스킬 평가의 조합으로 구성됩니다. 일부 기술 면접은 데이터 구조와 컴퓨터 과학 기초에 초점을 맞춘 전통적인 알고리즘 질문이지만, 우리는 실습 문제 해결 및 코딩 평가로 전환하고 있습니다. 알고리즘 질문에서도 지원자는 원하는 경우 화이트보드 대신 노트북에서 문제를 해결할 수 있습니다. 이는 우리가 더 현실적인 환경에서 코드를 작성하는 방식을 파악하는 데 도움이 됩니다. 코딩 질문의 경우, 알고리즘 지식보다는 설계, 코드 구조, 디버깅 및 새로운 도메인 학습에 더 중점을 둡니다. 예를 들어, 일부 기술 질문에서는 익숙하지 않은 언어/프레임워크를 사용할 가능성이 높으므로 문서를 읽고 새로운 영역에서 문제를 해결하는 능력을 보여주어야 합니다. 다른 질문은 기능 사양을 따라 점진적으로 복잡한 프로그램을 구축하는 것을 포함합니다.

또한 지원자의 배경, 업무 경험 및 직무에 따라 면접을 조정합니다. 풀스택 직무의 경우 웹 통신(http, websockets, 인증), 브라우저 기초(캐싱, js 이벤트 처리) 및 API + 데이터 모델링의 기본 사항에 더 많은 시간을 할애합니다. 저수준 시스템 엔지니어링의 경우 멀티스레딩 및 OS 기본 요소를 강조할 것입니다.

준비를 위해 세 가지를 추천합니다:

  1. 온라인에서 코딩 질문을 찾아 완전히 해결하는 연습을 하세요. 이는 솔루션을 보지 않고 완전한 작동 코드와 테스트를 만드는 것을 의미합니다. 테스트를 만드는 것이 중요합니다. 일부 기술 질문에는 여러 단계가 있으므로 면접 중에 빠른 편집/컴파일/디버그 루프를 위해 테스트 하네스를 신속하게 설정할 수 있어야 합니다. 이는 일상 업무에서와 마찬가지입니다.
  2. 컴퓨터 과학 기초를 복습하세요. 일반적인 데이터 구조, 각 메서드의 런타임 및 메모리 사용량, 그리고 사용할 언어에서의 인터페이스를 아세요. GitHub의 이 기술 면접 핸드북은 다양한 데이터 구조에 대한 좋은 개요를 제공하지만, 멀티스레딩, 동시성, 잠금 및 트랜잭션과 같은 시스템 개념도 공부해야 합니다.
  3. 모의 면접을 보세요. 모의 직업 면접의 시간 압박과 대화는 실제 면접 전에 편안함을 느끼는 좋은 방법입니다. 친구에게 모르는 질문을 하고 필요에 따라 힌트를 주도록 하세요.

Dev Tools 팀의 Haoyi는 우리가 면접을 어떻게 구성하고 무엇을 찾는지에 대한 통찰력을 제공하는 효과적인 프로그래밍 면접을 진행하는 방법에 대한 훌륭한 블로그 게시물을 작성했습니다.

웨비나

Databricks 101: 실용적인 입문서

면접 중에 가장 흔하게 보는 실수는 무엇인가요?

이제 우리가 무엇을 찾고 면접을 어떻게 준비해야 하는지에 대해 다루었으므로, 엔지니어링 직무 면접 중에 의식적으로 하지 않아야 할 몇 가지 사항이 있습니다.

가장 중요한 것은 직무에 대한 열정이나 관심 부족입니다. 기억하세요, 여러분도 회사를 면접하고 있으며, 여러분이 적합한 사람을 찾기 위해 투자하고 있다는 것을 보여주는 것이 중요합니다. 낮은 열정, Databricks 제품에 대한 익숙하지 않음, 질문을 하지 않는 것, 그리고 일반적으로 면접관에게 전체 대화를 주도하도록 의존하는 것은 모두 여러분이 관심이 없다는 신호입니다. 여러분이 여러분의 기술과 관심사를 탐구하는 면접 과정을 원하는 것처럼, 우리도 어려운 질문을 하고 우리를 알아가는 데 시간을 할애하는 지원자를 좋아합니다.

기술 면접의 경우, 지원자가 작동하지 않을 해결책을 추구하고 있다면, 구현에 많은 시간을 소비하기 전에 그것을 깨닫도록 돕습니다. 면접관이 질문을 하고 있다면, 다른 경로로 여러분을 안내하려는 것일 가능성이 높습니다. 단일 경로 해결책에 고정되기보다는, 잠시 멈춰서 새로운 힌트나 질문으로 접근 방식을 재고하세요. 면접관은 아마도 같은 질문을 수십 번 했고 다양한 접근 방식을 보았을 것이라는 점을 기억하세요. 또한 팀이 비슷한 방식으로 도움을 제공하는 실제 환경에서 여러분이 어떻게 반응할지 보고 싶어 합니다.

업무 이력 및 소프트 스킬에 초점을 맞춘 면접의 경우, 구체적인 예를 들어보세요. 일반적인 일반화로 시작하는 것은 괜찮지만, 과거 업무 이력의 구체적인 예가 질문에 어떻게 답하는지에 대한 이야기를 들려주세요. 업무 경험에 대해 이야기할 때는 (1) 문제를 명확하게 정의하고, (2) 해결책, (3) 결과, (4) 개선에 대한 성찰을 포함하도록 노력하세요. 잘 생각한 답변을 제공하는 좋은 방법은 STAR 면접 응답 기법을 사용하는 것입니다.

팀의 성공적이고 영향력 있는 엔지니어들에게서 (현재 및 과거 모두) 본 자질은 무엇인가요?

Databricks와 같은 스타트업에서 성공적인 엔지니어에게서 본 가장 중요한 자질은 책임감입니다. 우리는 빠르게 성장하고 있으며, 매주 많은 새로운 과제를 가져오지만, 책임이 팀 간에 어떻게 분담되고 우선순위가 어떻게 결정되는지는 항상 명확하지 않습니다. 훌륭한 엔지니어는 현재 팀의 책임에 국한되지 않고 가장 영향력 있는 문제를 발견하여 해결함으로써 이러한 모호함을 처리합니다. 때로는 직접 해결책 구축을 돕는 것을 의미하지만, 종종 다른 사람들이 작업을 우선시하도록 동기를 부여하는 것입니다.

우리가 특히 경력이 초기에 있는 사람들에게 초점을 맞추는 두 번째 자질은 배우고 성장할 수 있는 능력입니다. 지식의 파생물은 종종 지원자의 현재 기술 능력보다 더 중요합니다. 우리가 해결하고 있는 많은 엔지니어링 문제는 따를 수 있는 기존 템플릿이 없습니다. 이는 가장 낮은 수준의 CPU 명령어부터 브라우저에 렌더링되는 시각화 방식까지 더 큰 시스템을 고려하기 위해 추상화 계층을 지속적으로 통과해야 함을 의미합니다.

이러한 자질을 면접에서 어떻게 보았을까요? 책임감을 많이 보이는 엔지니어는 과거 업무에 의존했던 인접 시스템에 대해 자세히 이야기할 수 있습니다. 예를 들어, 특정 스토리지 계층 또는 빌드 시스템의 강점과 약점, 그리고 그 이유를 알고 있습니다. 또한 팀을 더 효과적으로 만들기 위한 변경 사항을 자주 만듭니다. 도구 개선 또는 프로세스 변경을 통해서입니다. 성장은 과거 업무에 대한 성찰을 통해 나타납니다. 완벽한 해결책은 없으며, 훌륭한 엔지니어는 다음에 무엇을 할지 또는 다르게 할지를 알고 있습니다. 많은 지원자들이 성장 기회가 다음 직업을 선택하는 주된 기준이라고 말하지만, 그들은 이미 성장을 위해 무엇을 하고 있는지 이야기할 수 있어야 합니다. 아마도 그것은 사이드 프로젝트, 최근에 배운 새로운 기술, 개발 환경 개선 또는 현재 역할에서 육성하고 있는 멘토 관계일 것입니다.

팀에서 어떤 문제들을 해결하고 있나요? 이러한 문제들을 성공적으로 해결하기 위해 어떤 기술을 갖춘 인재를 찾고 있나요?

Databricks Workspace 팀은 지원해야 할 제품 사용 사례가 상당히 광범위하며, 팀원 대부분이 풀스택으로 업무를 수행합니다. 저희는 새로운 기술을 빠르게 배울 수 있는 능력을 보여준 제너럴리스트를 찾고 있습니다. 또한 저희는 고객과 긴밀하게 소통하므로 사용자를 깊이 이해하여 요구사항을 구체화할 수 있는 엔지니어가 필요합니다. 팀원 중 일부는 과거에 직접 스타트업을 창업했거나 스타트업에서 초기 멤버로 일한 경험이 있습니다.

어떤 역할을 맡게 될지 가장 잘 이해하는 방법은 “무엇을 마스터하게 될 것인가?”라고 질문하는 것입니다. Workspace 팀의 경우 세 가지 주요 기술을 마스터하게 됩니다.

  1. 새로운 기술을 빠르게 학습하는 능력. Workspace 팀은 탐색적 작업과 프로토타입 작업을 많이 수행합니다. 팀에는 제품 감각과 기존 기술을 새로운 문제에 적용하는 능력을 결합해야 하는 제너럴리스트가 많습니다. 좋은 예로는 Databricks 호스팅 클라우드에서 Databricks Clusters를 실행하기 위해 오픈 소스 Jupyter를 적용하는 것이 있습니다. 또 다른 예로는 실시간 웹 클라이언트에 GraphQL API를 통해 업데이트를 스트리밍하는 pub/sub 인프라를 구축하는 것입니다.
  2. 데이터 과학, 머신러닝 및 데이터 분석 관련 워크플로우. 저희는 이러한 페르소나를 위한 제품을 구축하고 있으므로 다양한 산업과 규모의 고객에 있는 데이터 과학자 및 데이터 엔지니어의 일상적인 워크플로우를 깊이 이해하게 될 것입니다. 이 팀의 엔지니어는 고객 및 현장 엔지니어링 내의 내부 고객 챔피언과 정기적으로 소통합니다.
  3. JVM 기반의 확장 가능한 웹 서비스 설계. 저희 팀은 상태 저장 노트북 및 Workspace의 핵심 백엔드를 담당하며, 종종 저희 규모의 서비스에 고유한 설계 문제에 직면합니다. 팀의 모든 구성원은 리소스 기본 요소(cpu/memory/io/network)에 대한 깊은 이해를 개발하고 분산된 내결함성 아키텍처에서 사용을 최적화하는 방법을 배웁니다.

Databricks는 저희가 이야기한 특성을 체화한 소프트웨어 엔지니어를 끊임없이 찾고 있습니다. 현재 저희가 해결하고 있는 몇 가지 과제에 관심이 있다면, 저희 채용 페이지를 확인하고 인터뷰를 신청해 주세요!

Ted Tomlinson은 Databricks의 엔지니어링 이사입니다. 그는 Databricks의 대표적인 협업 노트북 제품과 다양한 환경에서 대화형 데이터 과학 및 머신러닝을 지원하는 데 사용되는 서비스를 담당하는 Workspace 팀을 관리합니다.

(이 글은 AI의 도움을 받아 번역되었습니다. 원문이 궁금하시다면 여기를 클릭해 주세요)

게시물을 놓치지 마세요

관심 있는 카테고리를 구독하고 최신 게시물을 받은편지함으로 받아보세요