모바일 개발 · 중급
Flutter에서 Widget Tree와 Element Tree는 어떤 관계를 가지며, 각각의 주요 역할은 무엇인지 설명해주세요. 특히, 두 트리가 존재하는 이유와 동작 원리에 대해 구체적인 예를 들어 설명해주세요.
힌트 · Widget은 설정 정보를 담고, Element는 위젯의 실제 인스턴스를 관리하며 렌더링 파이프라인의 핵심입니다. 두 트리는 효율적인 UI 업데이트와 변경 감지를 위해 존재합니다.
WidgetElementBuildContextRebuild상태 관리
모범답안
면접관님, Flutter에서 Widget Tree와 Element Tree는 UI를 구성하는 핵심적인 부분입니다.
Widget Tree는 UI의 구조와 설정을 담고 있는 일종의 청사진이라고 생각하시면 됩니다. Widget은 불변 객체이기 때문에 UI가 변경될 때마다 새로운 Widget이 생성됩니다.
Element Tree는 Widget Tree를 기반으로 실제로 화면에 렌더링되는 객체들의 트리입니다. Element는 Widget의 인스턴스를 관리하고, 렌더링 파이프라인에 참여하여 화면에 그리는 역할을 합니다.
두 트리가 존재하는 이유는 효율적인 UI 업데이트 때문입니다. 예를 들어, 버튼의 텍스트만 변경된다면, Widget Tree에서는 해당 버튼 Widget만 새로 생성되고, Element Tree에서는 해당 Element만 업데이트됩니다. 전체 UI를 다시 그리는 것이 아니라 변경된 부분만 업데이트하기 때문에 성능을 향상시킬 수 있습니다. Element는 Widget의 변경 사항을 감지하고 필요한 부분만 다시 빌드하는 역할을 합니다.
읽었다면, 이제 직접 답해볼 차례예요
패스잇 앱에서 이 질문에 말로 답하면 AI가 꼬리질문까지 이어가며 1:1 코칭합니다.
함께 보는 Flutter / Dart 면접 질문
- Flutter 개발 시 'Hot Reload'와 'Hot Restart'는 각각 어떤 기능이며, 두 기능의 주요 차이점은 무엇인가요?
- Flutter 프로젝트에서 `pubspec.yaml` 파일의 역할은 무엇이며, 주로 어떤 정보를 관리하는 데 사용되나요?
- Flutter에서 `BuildContext`는 무엇이며, 어떤 용도로 사용되는지 구체적인 예시와 함께 설명해주세요.
- Flutter에서 `Provider`와 `BLoC/Riverpod`과 같은 상태 관리 솔루션들의 주요 차이점은 무엇이며, 각각 어떤 상황에서 사용하는 것이 적합하다고 생각하시나요? 실제 프로젝트 경험을 바탕으로 비교 설명해주세요.
- Flutter의 `InheritedWidget`이 어떻게 작동하는지 설명하고, 상태 관리 패턴에서 어떤 역할을 수행할 수 있는지 구체적인 사용 사례와 함께 설명해주세요.
- Flutter에서 `Key`의 필요성과 중요성에 대해 설명하고, `ValueKey`, `ObjectKey`, `GlobalKey` 각각의 사용 시나리오와 차이점을 예시와 함께 설명해주세요.