예상되는 Angular 면접 질문
작성자 Aaron Cao · 업데이트

가장 먼저 나오는 것은 변경 감지입니다. 무엇이 검사를 유발하는지, OnPush가 무엇을 바꾸는지, 시그널이 여기에 어떻게 맞물리는지를 봅니다. 그다음은 의존성 주입, RxJS 연산자 선택, 구독 정리입니다. 대부분의 면접 과정에는 실습 문제도 추가되는데, 흔히 service, debounceTime, switchMap으로 만드는 자동완성 검색입니다.
가장 많이 나오는 Angular 개념은?
Angular의 API 표면은 넓은데, 공개된 질문 목록들은 모든 데코레이터가 똑같은 확률로 나올 것처럼 다룬다. 실제로는 그렇지 않다. 이 섹션은 실제로 대부분의 면접 결과를 좌우하는 영역을 다루므로, 연습이 실제 출제 분포에 맞아떨어지게 된다. 크게 네 가지 영역이 지배적이다:
- 변경 감지: 무엇이 검사를 유발하는지, Zone.js가 비동기 API에 어떻게 패치를 적용하는지,
OnPush가 무엇을 바꾸는지, 그리고 시그널이 Angular가 작업을 건너뛰게 하는 방식. - 의존성 주입: 계층적 인젝터,
providedIn, 주입 토큰, 그리고 생성자 매개변수 대신 쓰는inject()함수. - RxJS: Observable과 Promise의 차이, 올바른 연산자 선택, 그리고 컴포넌트가 소멸되기 전 구독을 정리하는 방법.
- 컴포넌트 아키텍처: 독립형 컴포넌트, 입력과 출력, 콘텐츠 프로젝션, 그리고 라이프사이클 훅.
여기서는 버전 인식이 다른 대부분의 프레임워크 면접보다 더 중요한데, Angular가 방향을 바꿨기 때문이다. 독립형 컴포넌트, 내장 제어 흐름 블록인 @if와 @for, 지연 가능한 뷰, 그리고 시그널은 모두 최근 주요 버전에서 등장했으므로, 면접관은 오늘이라면 어떻게 작성할지를 예전 코드베이스의 방식과 대비해 자주 묻는다. 둘 다 알고, 프레임워크가 왜 옮겨갔는지 설명할 수 있는 것이 어느 한쪽 편을 드는 것보다 더 좋은 인상을 준다.
RxJS와 시그널 질문은 얼마나 깊게 들어가나?
연산자 이름보다 훨씬 깊이 들어간다. 수준을 가르는 RxJS 질문은 어떤 평탄화 연산자가 맞는지 고르는 것이다: switchMap은 이전 내부 요청을 취소하므로 자동완성에 적합하고, mergeMap은 모든 것을 병렬로 실행하며, concatMap은 순서를 보존하고, exhaustMap은 하나가 진행 중일 때 새 이벤트를 무시하므로 제출 버튼에 적합하다. 그다음 면접관은 누수 질문을 한다: 컴포넌트가 소멸될 때 수동 구독은 어떻게 되는지, 그리고 async pipe나 takeUntilDestroyed가 왜 이 문제를 없애는지.
시그널 질문은 더 최신이며 보통 API가 아니라 동기에서 시작한다. 시그널이 무엇인지, computed가 그로부터 어떻게 값을 도출하는지, effect는 무엇을 위한 것인지, 그리고 시그널이 컴포넌트 트리를 다시 검사하는 것보다 더 세밀하게 무엇이 바뀌었는지 아는 방법을 왜 Angular에 주는지 설명할 수 있어야 한다. 좋은 답변은 두 주제를 연결한다: 시그널과 OnPush 둘 다 변경 감지가 하는 작업을 줄이지만, 시그널은 검사가 실행되는 시점을 좁히는 대신 읽기를 추적하는 방식으로 그렇게 한다.
면접관은 당신이 최신 기능을 전부 실무에서 써봤을 것이라고 기대하지 않는다. 그들은 마지막으로 작업한 버전이 무엇인지 말하고, 나머지에 대해 명확하게 추론하기를 기대한다.
어떤 라이브 코딩 실습을 예상해야 할까?
대부분의 Angular 면접 과정에는 면접관이 지켜보는 가운데 작은 것을 만드는 과정이 포함된다. 반복적으로 나오는 실습은 회사마다 크게 다르지 않다:
- service에서 API를 호출하고 async pipe로 결과를 렌더링한다.
debounceTime,distinctUntilChanged,switchMap으로 자동완성 검색을 만든다.- 커스텀 유효성 검사기와 눈에 보이는 오류 상태를 가진 반응형 폼을 작성한다.
- 부모와 자식 컴포넌트 사이에 데이터를 전달한 뒤, 이를 service로 끌어올린다.
- 지연 로딩되는 컴포넌트와 가드를 가진 라우트를 추가한다.
예를 들어 중급 프로덕트 직무에 지원한 프런트엔드 엔지니어라면 자동완성을 만든 다음, 응답이 순서 없이 도착하면 어떻게 되는지, 로딩 상태를 어떻게 보여줄지, 사용자가 입력을 지웠을 때 어떤 일이 일어나야 하는지에 대해 추가 질문을 받을 수 있다. 그런 확장 질문이 바로 합격 여부를 가르는 지점이므로, 순조로운 경로만이 아니라 후속 질문들을 연습해야 한다. Angular 면접이 여전히 자주 시작하는 인접 출제 세트, 즉 순수 JavaScript와 TypeScript 기초는 문제 은행 허브에 있다.
실제 면접에서 통하도록 연습하려면?
질문 목록을 읽는 것은 재인식을 키울 뿐 회상을 키우지 않는데, 면접은 누군가 지켜보는 앞에서 회상을 시험한다. 해법은 면접의 실제 형태로 반복 연습하는 것이다: 빈 프로젝트에서 표준 실습을 만들고, 타이핑하면서 변경 감지와 구독에 대한 결정을 소리 내어 설명하고, 방해를 받아도 맥락을 잃지 않는 연습을 한다. 한 번에 한 질문씩 후속 질문과 함께 세트를 말로 리허설하듯 진행하는 것이 모의 면접 연습의 목적이다.
분명히 말해둘 한계가 하나 있다: Angular 라이브 면접은 거의 항상 공유 에디터에서 진행되거나 화면이 보이는 상태로 진행되며, 그 화면에 있는 모든 것이 면접관에게 보인다. 어시스턴트는 준비 단계와 대화 중심 면접에는 어울리지만, 공유 화면 위에는 어울리지 않는다. 어떤 형식이 무엇을 허용하는지는 면접 유형에서 다룬다.