Dart/Flutter 주니어 기술면접

Dart 주니어 (1~3년) 프레임워크 5문항 조회수 37 · 2026-08-04 (화) 12:31:07
1 Flutter Widget
Easy

Q. Flutter에서 StatelessWidget과 StatefulWidget의 차이점은 무엇이며, 각각 어떤 상황에서 사용해야 하나요?

위젯의 상태 변화 가능성과 rebuild 메커니즘을 중심으로 생각해보세요.

A. 모범답안

StatelessWidget은 생성 후 상태가 변하지 않는 불변 위젯으로, 한 번 빌드되면 다시 그려질 필요가 없는 정적인 UI에 사용됩니다. StatefulWidget은 내부 상태를 가지며 setState() 메서드를 통해 상태 변경 시 UI를 다시 그릴 수 있습니다. 텍스트나 아이콘처럼 변하지 않는 UI는 StatelessWidget을, 사용자 입력이나 애니메이션처럼 동적으로 변하는 UI는 StatefulWidget을 사용합니다. StatefulWidget은 State 객체를 별도로 관리하여 위젯 트리가 재구성되어도 상태를 유지할 수 있습니다.

핵심 포인트
  • • StatelessWidget은 불변이며 상태 변경이 없는 위젯
  • • StatefulWidget은 setState()로 상태 변경 및 UI 재빌드 가능
  • • State 객체를 통한 상태 관리 메커니즘 이해
답변에 넣으면 좋은 키워드
StatelessWidget StatefulWidget setState State 객체 rebuild 불변성
실무에서는

버튼 클릭 시 카운터가 증가하는 UI나 폼 입력 처리 등 대부분의 인터랙티브 화면 구현에 사용됩니다.

Follow-up 질문

setState() 메서드를 호출하면 Flutter 내부적으로 어떤 과정을 거쳐 UI가 업데이트되나요?

2 Dart 비동기
Medium

Q. Dart에서 Future와 async/await의 관계를 설명하고, 비동기 처리 시 주의해야 할 점은 무엇인가요?

Future는 비동기 작업의 결과를 나타내는 객체이며, async/await는 이를 다루는 문법적 설탕입니다.

A. 모범답안

Future는 비동기 작업의 미래 결과를 나타내는 객체로, 작업이 완료되면 값을 반환하거나 에러를 발생시킵니다. async 키워드는 함수가 Future를 반환하도록 만들고, await 키워드는 Future가 완료될 때까지 기다렸다가 결과값을 추출합니다. async/await를 사용하면 then() 체이닝보다 동기 코드처럼 읽기 쉬운 코드를 작성할 수 있습니다. 주의할 점은 await를 사용할 때 반드시 함수에 async를 붙여야 하고, 에러 처리를 위해 try-catch 블록을 사용해야 하며, UI 스레드를 블로킹하지 않도록 적절히 사용해야 합니다.

핵심 포인트
  • • Future는 비동기 작업의 결과를 나타내는 객체
  • • async/await는 Future를 동기 코드처럼 작성할 수 있게 하는 문법
  • • 에러 처리와 UI 블로킹 방지 필요
답변에 넣으면 좋은 키워드
Future async await 비동기 try-catch then
실무에서는

API 호출, 데이터베이스 쿼리, 파일 읽기 등 네트워크나 I/O 작업에서 UI가 멈추지 않도록 처리할 때 사용됩니다.

Follow-up 질문

여러 개의 비동기 작업을 동시에 실행하고 모든 결과를 기다려야 할 때 어떻게 처리하나요?

3 Flutter 상태관리
Medium

Q. Flutter에서 Provider 패턴을 사용하는 이유와 기본적인 사용 방법을 설명해주세요.

위젯 트리 전체에서 데이터를 공유하고 변경사항을 효율적으로 전파하는 방법을 생각해보세요.

A. 모범답안

Provider는 Flutter에서 의존성 주입과 상태 관리를 위한 패턴으로, setState()만으로는 관리하기 어려운 전역 상태나 여러 위젯 간 공유 데이터를 효율적으로 다룰 수 있습니다. ChangeNotifier 클래스를 상속받아 상태 모델을 만들고, notifyListeners()로 변경사항을 알립니다. ChangeNotifierProvider로 위젯 트리 상위에 상태를 제공하고, Consumer나 Provider.of()를 통해 하위 위젯에서 상태를 구독하여 사용합니다. 이를 통해 prop drilling 문제를 해결하고, 필요한 위젯만 선택적으로 rebuild하여 성능을 최적화할 수 있습니다.

핵심 포인트
  • • 전역 상태 관리와 의존성 주입을 위한 패턴
  • • ChangeNotifier와 notifyListeners()를 통한 상태 변경 알림
  • • Provider와 Consumer를 통한 상태 제공 및 구독
답변에 넣으면 좋은 키워드
Provider ChangeNotifier notifyListeners Consumer ChangeNotifierProvider 상태관리
실무에서는

로그인 사용자 정보, 장바구니 데이터, 테마 설정 등 앱 전체에서 공유되는 상태를 관리할 때 사용됩니다.

Follow-up 질문

Provider 외에 다른 상태관리 솔루션(Riverpod, Bloc 등)과 비교했을 때 Provider의 장단점은 무엇인가요?

4 Dart 언어
Easy

Q. Dart의 null safety는 무엇이며, nullable 타입과 non-nullable 타입의 차이를 설명해주세요.

변수가 null 값을 가질 수 있는지 여부를 타입 시스템에서 명시적으로 구분하는 기능입니다.

A. 모범답안

Null safety는 Dart 2.12부터 도입된 기능으로, null 참조 오류를 컴파일 타임에 방지하기 위한 타입 시스템입니다. 기본적으로 모든 변수는 non-nullable이며 null 값을 가질 수 없고, 물음표를 붙인 타입만 nullable로 선언되어 null을 허용합니다. nullable 변수를 사용하려면 null 체크나 느낌표 연산자, null-aware 연산자 등을 사용해야 합니다. 이를 통해 런타임에 발생할 수 있는 NullPointerException을 사전에 방지하고 코드의 안정성을 높일 수 있습니다.

핵심 포인트
  • • 컴파일 타임에 null 참조 오류 방지
  • • 기본은 non-nullable, 물음표로 nullable 선언
  • • null 체크 및 null-aware 연산자 사용 필요
답변에 넣으면 좋은 키워드
null safety nullable non-nullable 물음표 느낌표 연산자 null-aware
실무에서는

API 응답 데이터 파싱, 옵셔널한 사용자 입력 처리 등에서 null 관련 런타임 에러를 방지하는 데 사용됩니다.

Follow-up 질문

nullable 변수를 안전하게 다루기 위한 Dart의 연산자들(?, ??, !, ?.)에 대해 설명해주세요.

5 Flutter 렌더링
Medium

Q. Flutter의 위젯 트리, 엘리먼트 트리, 렌더 트리의 역할과 관계를 설명하고, 이것이 Flutter의 성능에 어떤 영향을 주나요?

Flutter는 세 가지 레이어의 트리 구조로 UI를 관리하며, 각각 설정, 생명주기, 실제 렌더링을 담당합니다.

A. 모범답안

위젯 트리는 개발자가 작성하는 UI 설정의 불변 청사진이고, 엘리먼트 트리는 위젯의 인스턴스화된 생명주기를 관리하며, 렌더 트리는 실제 레이아웃과 페인팅을 담당합니다. 위젯이 변경되면 새로운 위젯 트리가 생성되지만, Flutter는 엘리먼트 트리를 재사용하여 불필요한 렌더 객체 재생성을 방지합니다. 엘리먼트는 위젯 타입과 키를 비교해 기존 렌더 객체를 업데이트할지 새로 만들지 결정합니다. 이 3-트리 아키텍처 덕분에 위젯을 자주 재생성해도 실제 렌더링 비용은 최소화되어 60fps 이상의 부드러운 UI를 유지할 수 있습니다.

핵심 포인트
  • • 위젯 트리는 불변 설정, 엘리먼트 트리는 생명주기, 렌더 트리는 실제 렌더링
  • • 엘리먼트가 위젯 변경 시 렌더 객체 재사용 여부 결정
  • • 3-트리 구조로 성능 최적화 달성
답변에 넣으면 좋은 키워드
위젯 트리 엘리먼트 트리 렌더 트리 reconciliation 키 성능 최적화
실무에서는

복잡한 UI를 구성할 때 불필요한 rebuild를 줄이고 성능을 최적화하는 데 이 구조에 대한 이해가 필수적입니다.

Follow-up 질문

ListView에서 수천 개의 아이템을 효율적으로 렌더링하기 위해 Flutter가 사용하는 최적화 기법은 무엇인가요?

댓글 0

로그인 후 댓글을 작성할 수 있습니다.

아직 댓글이 없습니다. 첫 번째 댓글을 남겨보세요!