어떤 .NET 면접 질문을 예상해야 하나요?
작성자 Aaron Cao · 업데이트

런타임 질문(CLR, 가비지 컬렉션, 값 형식과 참조 형식의 차이), 언어 질문(async와 await, LINQ, 제네릭, 레코드), 프레임워크 질문(ASP.NET Core 미들웨어와 의존성 주입, EF Core), 그리고 장기 실행 서비스의 메모리 누수나 느린 API 엔드포인트 같은 시나리오를 예상하세요. 면접관은 추론 과정을 평가합니다.
.NET 면접은 어떤 런타임 및 언어 질문으로 시작하나요?
면접관은 프레임워크가 시작되는 곳, 즉 런타임부터 질문합니다. Common Language Runtime이 하는 일(어셈블리 로드, 중간 언어의 적시 컴파일, 메모리 관리)을 설명하고, 이어서 가비지 컬렉션을 한 단계 더 깊이 설명할 준비를 하세요. 후속 질문의 흐름은 예측할 수 있습니다. 컬렉터가 세대별로 작동하는 이유, 객체가 살아남아 이후 세대로 넘어가는 조건, 대형 객체 힙의 용도, 그리고 메모리가 관리되는데도 IDisposable과 using이 존재하는 이유를 묻습니다. 마지막 질문에는 컬렉터가 즉시 해제하는 방법을 알지 못하는 파일 핸들이나 연결 같은 비관리 리소스를 들어 답하세요.
- 값 형식과 참조 형식. 각각 어디에 존재하는지, 각각에서 복사가 무엇을 의미하는지, 박싱에 어떤 비용이 드는지 설명합니다.
- async와 await. 대기 중인 작업은 호출 스레드를 막는 대신 해제한다는 점,
async void가 이벤트 처리기에만 사용되는 이유, 그리고.Result를 경고할 때 말하는 교착 상태가 무엇인지 설명합니다. - LINQ. 함정은 지연 실행입니다.
IEnumerable쿼리는 작성할 때가 아니라 열거할 때 실행되며, 데이터베이스 공급자를 대상으로 한 쿼리는 공급자가 이해하는 식만 SQL로 변환합니다. - 제네릭, 인터페이스, 레코드. 제약 조건, 테스트 용이성을 위해 기본 클래스보다 인터페이스를 사용하는 이유, 레코드의 값 동등성이 주는 이점을 설명합니다.
각 항목에 메커니즘과 그에 따른 결과 하나를 함께 답하세요. 대부분의 객체가 일찍 소멸하므로 가장 젊은 세대의 컬렉션 비용이 낮다고 설명하는 것이 면접관이 원하는 수준입니다. 이유 없이 세대 이름만 나열하는 것으로는 부족합니다.
ASP.NET Core와 EF Core 질문은 어떤 형태인가요?
컨트롤러 작성에는 자신 있지만 평소 거의 다루지 않는 내부 동작이 질문으로 나올까 걱정할 수 있습니다. 그 걱정은 타당합니다. 프레임워크 질문이 바로 이 부분에 집중되기 때문입니다. 다음은 보통 질문되는 순서와 각 항목에 따라오는 후속 질문입니다.
- 요청 파이프라인. 미들웨어는 등록된 순서대로 실행되며, 각 구성 요소는 다음 구성 요소를 호출할지 결정합니다. 후속 질문: 인증은 권한 부여를 기준으로 어디에 위치하며, 둘을 반대 순서로 등록하면 어떻게 되나요?
- 의존성 주입 수명. Singleton은 애플리케이션 수명 동안 유지되고, scoped는 요청 하나 동안 유지되며, transient는 확인될 때마다 생성됩니다. 전형적인 함정은 데이터베이스 컨텍스트 같은 scoped 서비스를 singleton에 주입하는 것입니다. 이것이 왜 버그인지 설명할 준비를 하세요.
- 구성과 옵션. 계층화된 소스, 환경별 재정의, 형식화된 설정을 위한 옵션 패턴을 설명합니다.
- EF Core. 변경 추적과 읽기 전용 쿼리에서 이를 꺼야 하는 시점, N+1 문제와 즉시 로딩 또는 프로젝션으로 이를 방지하는 방법, 마이그레이션, 그리고 LINQ보다 직접 작성한 쿼리가 더 나은 시점을 솔직하게 설명합니다.
- 테스트. 인터페이스와 DI 컨테이너가 서비스의 테스트를 쉽게 만드는 방법, 그리고 인메모리 공급자가 실제 데이터베이스에 관해 증명하는 것과 증명하지 못하는 것을 설명합니다.
가장 뛰어난 지원자는 이 요소들을 연결합니다. singleton 백그라운드 서비스 안에서 확인된 scoped 컨텍스트는 단순한 상식 문제가 아니라 면접관도 실제로 출시한 적이 있는 메모리 및 정확성 버그이며, 면접관은 지원자가 명시적으로 범위를 생성하겠다고 답하기를 원합니다.
시나리오 질문은 어떻게 진행되나요?
시니어 면접 과정에서는 증상을 제시하고 지원자의 해결 방식을 관찰합니다. 대표적인 예로, 물류 회사의 시니어 직무에 지원한 백엔드 엔지니어에게 ASP.NET Core API의 메모리 사용량이 며칠 동안 증가하다가 컨테이너가 재시작된다는 문제가 주어집니다. 좋은 답변은 원인을 추측하지 않습니다. 무엇이 변경되었는지 묻고, 정적 캐시나 장기 유지되는 이벤트 구독에 캡처된 객체가 있는지 확인하며, singleton이 보유한 scoped 서비스를 찾고, 대형 객체 힙의 증가를 조사한 뒤, 해결책을 제안하기 전에 메모리 스냅샷을 확인합니다. 면접관은 조사 순서를 평가합니다.
그 밖에 반복해서 나오는 시나리오는 다음과 같습니다. 부하가 걸릴 때만 느려지는 엔드포인트에서는 동기식 데이터베이스 호출부터 async, 연결 풀 고갈, 캐싱까지 살펴봅니다. 공유 컬렉션의 경쟁 상태에서는 동시성 컬렉션과 잠금 옵션의 비용을 설명합니다. 요청 하나가 세 개의 다운스트림 서비스를 호출해야 하는 상황에서는 시간 초과, 재시도, 부분 실패를 처리하는 방법을 다룹니다. 중단 시간 없이 열을 추가해야 하는 마이그레이션도 있습니다. 각 사례에서 제약 조건을 밝히고, 메커니즘을 선택한 뒤, 절충점을 소리 내어 설명하세요.
이러한 질문은 후속 질문과 함께 소리 내어 연습하면 훨씬 쉬워집니다. 모의 면접 모드가 바로 이를 위해 만들어졌으며, 다른 언어 및 직무별 질문 모음은 직무 및 주제별 면접 질문에서 확인할 수 있습니다.
AI 면접 도우미가 .NET 질문에 도움이 될 수 있나요?
명시된 제한 범위 내에서 대화형 라운드에는 도움이 될 수 있습니다. SubcueAI의 네이티브 macOS 및 Windows 데스크톱 앱은 시스템 오디오와 마이크를 캡처하고 로컬 오버레이에 짧은 답변 제안을 표시합니다. 따라서 면접관이 singleton 내부의 scoped 컨텍스트가 왜 버그인지 물으면, 화면에 표시된 메커니즘을 보면서 자신의 말로 설명할 수 있습니다. 브라우저 확장 프로그램은 회의 탭의 오디오만 캡처하여 Chrome과 Edge에서 진행되는 브라우저 탭 통화를 지원합니다. 봇이 통화에 참여하지 않고 회의 페이지에 아무것도 삽입되지 않으며, 설정 방법은 튜토리얼 페이지에 있습니다.
제한 사항도 있습니다. 감독형 평가, 화면 녹화, 회사 관리 노트북, 또는 감독하에 C#을 입력하는 라이브 코딩 과제는 지원 범위를 벗어나며, 코드를 직접 작성해야 하는 면접에서 도우미의 효과가 가장 떨어집니다. 위에서 다룬 런타임, 프레임워크, 절충점 질문에서 가장 효과적입니다. 먼저 이력서를 입력해 제안 내용이 실제로 구축한 시스템을 반영하도록 하세요. 해당 프로필은 이력서 작성 도구에서 관리합니다.