2024년 5월, Amazon에서 소프트웨어 개발 엔지니어(SDE) 역할을 위해 인터뷰할 기회가 있었습니다. 채용 담당자가 LinkedIn을 통해 나에게 연락하면서 모든 것이 시작되었습니다. 항상 신나는 일이라 기분 좋게 놀랐습니다.
채용 담당자는 전문적이고 명확하여 프로세스와 역할에 대해 필요한 모든 세부 정보를 제공했습니다. 몇 가지 메시지를 주고받은 후 1차 면접인 코딩 평가에 대한 테스트 링크를 받았습니다. 평가는 HackerRank에서 호스팅되었으며 두 가지 코딩 질문으로 구성되었습니다.
질문은 간단했지만 약간 길었습니다. 분석 내용은 다음과 같습니다.
1. 첫 번째 질문: 바코드 생성
작업은 미리 정의된 일부 매개변수를 기반으로 바코드를 생성하는 것이었습니다. 질문이 본질적으로 복잡한 것은 아니었지만 모든 조건이 충족되었는지 확인하려면 세부 사항에 주의가 필요했습니다. 저는 이 문제에 체계적으로 접근하여 문제를 더 작은 부분으로 나누고 JavaScript로 솔루션을 구현했습니다. 효율성과 명확성에 중점을 두어 생성된 바코드가 예상 형식과 제약 조건을 충족하는지 확인했습니다.
2. 두 번째 질문: 배포 상태에 따른 배열 처리
이것은 데이터 조작 작업에 가깝습니다. 입력은 각각 배포 ID와 배포 상태가 있는 개체로 구성되었습니다. 내 목표는 이러한 입력을 기반으로 배열을 반환하는 것이었습니다. 문제는 단순해 보이지만 극단적인 경우도 있었습니다. 예를 들어, 일부 객체에는 키가 누락되어 있어 처음에는 눈에 띄지 않았습니다. 그러나 초기 솔루션을 제출한 후 그러한 극단적인 경우를 고려해야 한다는 것을 깨달았습니다. 이러한 시나리오를 처리하기 위해 신속하게 코드를 수정하여 누락된 키로 인해 오류나 불완전한 결과가 발생하지 않도록 했습니다.
나는 JavaScript를 사용하여 두 가지 질문을 모두 해결했으며 내 솔루션이 숨겨진 테스트 사례를 포함하여 모든 테스트 사례를 통과했다고 확신했습니다.
Amazon은 후보자가 모든 테스트 사례를 통과하고 모든 코딩 문제를 해결하면 프로세스를 진행하는 경향이 있습니다.
그 후 리크루터로부터 전화가 와서 면접을 진행 중이며 현장 면접으로 진행한다고 합니다. 준비하는데 5일이 걸렸어요.
3년 전부터 원격근무를 하고 회사에 가본 적이 없어서 면접보다는 사무실이 더 무서웠어요??
아마존 사무실에 갔는데 이미 후보자가 거의 없었습니다. 우리는 모두 인터뷰를 하러 나갔습니다. 그날 저는 3번의 기술면접을 가졌습니다.
1차 면접은 문제 해결 중심의 인터뷰였습니다. 면접실에 들어가자마자 면접관님이 반갑게 맞이해 주셨는데요. 세션 내내 계속 웃어주셔서 긴장이 풀렸습니다.
그는 나에게 종이 한 장을 건네주며 시스템 오류, 네트워킹, 네트워크 계층과 관련된 몇 가지 질문을 제시했습니다. 그가 사용한 접근 방식은 특히 흥미로웠습니다. 그는 나에게 기본적인 해결책을 먼저 생각하라고 요청했습니다. 본질적으로 문제를 처음부터 해결하도록 격려해 주었기 때문입니다. 내가 답변을 제공하자 그는 시나리오를 약간 변경하여 각 단계마다 복잡성을 더했습니다.
예를 들어, 그는 네트워크 장애에 대해 논의한 후 대화를 네트워크의 더 깊은 계층으로 전환하고 표준 솔루션이 작동하지 않으면 어떻게 할 것인지 물었습니다. 이로 인해 가장 일반적인 문제부터 복잡한 문제까지 시스템의 다양한 실패 지점을 창의적으로 생각하고 고려하게 되었습니다.
인터뷰에서 밖에서 기다리라고 했더니 한 채용담당자가 와서 2차로 가겠다고 하더군요.
다음 라운드는 데이터 구조 및 알고리즘(DSA)에 대한 심층 분석이었습니다. 이번 면접관은 Amazon의 선임 SDE였습니다. 그녀는 종이 한 장을 들고 나에게 인사를 하고 꽤 크고 복잡한 질문을 던졌다. 읽으면서 주요 목표는 그래프에서 최단 경로를 찾는 것임을 금방 깨달았습니다. 이런 유형의 문제는 인터뷰에서 흔히 볼 수 있지만 그녀가 반드시 포함시켰던 극단적인 사례가 포함될 때는 까다로울 수 있습니다.
문제와 다양한 시나리오를 완전히 이해하기 위해 몇 가지 명확한 질문을 했습니다. 자신감이 생기자 나는 해결책을 찾기 시작했습니다. 즉, 종이에 의사 코드를 직접 작성하는 것이었습니다. 내가 접근 방식과 논리를 설명하는 동안 그녀는 내가 왜 특정 결정을 내렸는지, 그래프의 다른 부분을 어떻게 처리하고 있는지 물으면서 계속해서 더 깊이 조사했습니다. 나는 그녀에게 내 사고 과정을 안내하고 절충안과 최적화에 대해 논의했습니다. 다행히 문제를 완전하고 정확하게 해결할 수 있었습니다.
그녀는 내 그래프 솔루션에 만족한 후 나에게 시간과 공간 복잡도에 대해 물었고 나는 이를 분석하고 설명했습니다. 성취감을 느끼며 라운드가 잘 진행되고 있다는 생각이 들었습니다.
그러나 그녀는 곧 또 다른 더 어려운 질문으로 넘어갔습니다. 이번에는 동적 프로그래밍(DP)과 관련된 질문이었습니다. 문제는 특정 규칙을 따르는 방식으로 다양한 작물을 심어야 하는 매트릭스와 관련이 있었습니다. 이것은 좀 더 복잡한 질문이었고, 나는 그것을 완전히 이해하는 데 시간을 들였습니다. 모든 제약 조건과 극단적인 경우를 다루었는지 확인하기 위해 몇 가지 질문을 했습니다.
의사코드 솔루션을 작성했지만 완전히 최적화되지 않았습니다. 그녀는 나에게 몇 가지 테스트 사례를 제공했고 내 코드가 그 중 약 80%에서 성공적으로 실행되었지만 여전히 실패한 예외 사례가 있었습니다. 나는 이 시점에서 불안해졌고 그녀는 그것을 알아차렸습니다. 다행스럽게도 그녀는 유용한 힌트를 제공했고 저는 솔루션을 더욱 최적화하려고 노력했습니다. 최선을 다했음에도 불구하고 완전히 해결책을 찾을 수 없었습니다. 아마도 신경이 곤두섰기 때문일 것입니다.
밖에서 다시 기다렸는데 이번 라운드에 별로 만족하지도 자신하지도 않았는데 채용 담당자가 다시 와서 다음 라운드는 시스템 디자인이라고 하더군요. 너무 행복했어요!
오늘의 마지막 라운드는 시스템 디자인 인터뷰였는데, 지금까지 가장 긴장되고 힘들었던 세션이었습니다. 면접관은 Amazon 아키텍처 팀의 일원이었고 처음부터 이번 라운드가 어려울 것이라는 것을 알 수 있었습니다. 우리는 과거 프로젝트와 이전 작업에서 내린 디자인 결정에 초점을 맞춰 내 이력서에 대한 토론으로 시작했습니다. 그는 제가 작업한 시스템의 아키텍처에 대해 몇 가지 질문을 했고, 제가 선택한 디자인과 절충점을 자세히 조사했습니다.
이 초기 논의 후 그는 저에게 특히 비디오 스트리밍 기능에 초점을 맞춘 교육 기술 플랫폼용 시스템을 설계해 달라고 요청했습니다. 목표는 교사가 실시간 비디오 세션을 스트리밍하고 학생들이 해당 세션을 온라인으로 참석할 수 있는 시스템을 설계하는 것이었습니다.
우리는 높은 수준의 아키텍처부터 시작하여 비디오 서버, 데이터베이스, API와 같은 주요 구성 요소를 논의했습니다. 저는 많은 수의 사용자를 처리하고 원활한 비디오 스트리밍 경험을 보장하기 위한 저의 접근 방식을 설명했습니다. 그는 라이브 영상 플랫폼에서 중요한 확장성, 안정성, 지연 문제에 대해 지속적으로 질문했습니다.
우리가 높은 수준의 디자인을 다룬 후에 그는 대화를 낮은 수준의 세부 사항으로 옮겼습니다. 여기서 논의가 더욱 기술적으로 발전했습니다. 우리는 시스템 최적화, 엣지 케이스 처리, 최악의 시나리오에서도 사용자에게 원활한 경험 보장을 위한 다양한 접근 방식을 모색했습니다. 사용자 트래픽 급증을 처리하고 다운타임을 최소화하는 등 다양한 문제에 대한 솔루션과 대안을 제시하면서 스스로 생각해야 했습니다.
면접관은 계속해서 다양한 시나리오를 제시했습니다. 비디오 서버가 다운되면 어떻게 될까요? 네트워크 정체를 어떻게 처리하시겠습니까? 서로 다른 지역에 있는 학생들의 짧은 대기 시간을 어떻게 보장합니까? 각 시나리오에는 상세한 답변이 필요했고, 가능성과 디자인 패턴에 대해 논의하는 데 완전히 몰입했습니다.
전체 인터뷰는 약 1시간 30분 정도 진행됐고, 끝날 무렵에는 너무 지쳤습니다. 그것은 정신적으로 지쳤지만 또한 내가 이제까지 본 인터뷰 중 가장 통찰력 있는 인터뷰 중 하나였습니다. 우리는 다양한 건축적 과제를 탐구했는데, 이는 전통적인 인터뷰라기보다는 협력적인 문제 해결 세션에 더 가까운 느낌이었습니다.
그래서 오전 9시에 아마존 사무실에 가서 저녁 5시에 나왔더니 라운드를 다 마치고 리크루터가 관리 라운드를 진행한다고 하더군요. 아직 예정되지 않았습니다.
부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.
Copyright© 2022 湘ICP备2022001581号-3