Flutter 앱에서 딥 링크(Deep Linking)와 유니버설 링크(Universal Links/App Links)를 구현하는 과정을 설명하고, 각각의 작동 방식, 장단점, 그리고 실제 프로덕션 환경에서 발생할 수 있는 문제점(예: 다른 앱과의 충돌, OS 버전별 동작 차이)과 이를 해결하기 위한 전략에 대해 논하십시오.
힌트 · 딥 링크는 URI 스킴을 사용하고, 유니버설 링크는 HTTP/HTTPS URL을 사용합니다. go_router나 Navigator 2.0과 연동하여 라우팅을 처리하고, 플랫폼별 설정(AndroidManifest, Info.plist)이 중요합니다.
모범답안
딥 링크와 유니버설 링크는 앱으로 사용자를 특정 콘텐츠로 바로 연결하는 기술입니다. 딥 링크는 앱 내 특정 위치로 이동하는 URI 스킴을 사용하지만, 유니버설 링크는 HTTP/HTTPS URL을 사용해 웹사이트와 앱 모두 연결할 수 있어 더 안전하고 사용자 경험이 좋습니다.
구현 과정은 먼저 go_router나 Navigator 2.0을 사용하여 라우팅 설정을 하고, AndroidManifest.xml과 Info.plist에 딥 링크/유니버설 링크 설정을 추가합니다. 유니버설 링크의 경우, 웹 서버에 AASA(Apple App Site Association) 파일을 호스팅하여 앱과 웹사이트의 연결을 증명해야 합니다.
문제점으로는 딥 링크의 경우 다른 앱과 URI 스킴이 충돌할 수 있고, 유니버설 링크는 AASA 파일 설정 오류나 OS 버전별 동작 차이로 인해 제대로 작동하지 않을 수 있습니다. 해결 전략으로는 고유한 URI 스킴을 사용하고, AASA 파일 설정을 꼼꼼히 확인하며, OS 버전별 예외 처리를 구현하는 것이 중요합니다. 링크 검증 도구를 활용하여 링크가 올바르게 설정되었는지 확인하는 것도 좋은 방법입니다.
읽었다면, 이제 직접 답해볼 차례예요
패스잇 앱에서 이 질문에 말로 답하면 AI가 꼬리질문까지 이어가며 1:1 코칭합니다.
함께 보는 Flutter / Dart 면접 질문
- Flutter 애플리케이션에서 무거운 연산이나 네트워크 요청 등으로 인해 UI 스레드가 블록되는 상황을 방지하기 위해 Dart의 Isolate를 활용하는 방법을 설명하십시오. Isolate 간의 데이터 통신 메커니즘과, Isolate 사용 시 발생할 수 있는 잠재적인 문제점(예: 메모리 오버헤드, 데이터 복사 비용) 및 그 해결 전략에 대해 논하십시오.
- Flutter에서 Provider 또는 Riverpod와 같은 고급 상태 관리 라이브러리를 사용할 때, 복잡한 비즈니스 로직과 UI 상태를 효과적으로 분리하고 관리하기 위한 아키텍처 패턴(예: MVVM, Clean Architecture)을 어떻게 적용할 수 있는지 설명하십시오. 특히, 의존성 주입(DI) 관점에서 Provider/Riverpod가 제공하는 이점과, 대규모 앱에서 발생할 수 있는 상태 관리의 복잡성을 해결하기 위한 전략을 제시하십시오.
- Flutter 앱에서 Android/iOS 네이티브 기능 중 Dart에서 직접 지원하지 않는 하드웨어 접근이나 고성능 라이브러리 연동이 필요한 경우, Platform Channels와 Dart:ffi 중 어떤 기술을 선택할 것이며, 그 선택의 기준과 각각의 장단점을 비교 설명하십시오. 특히, Dart:ffi 사용 시 메모리 관리 및 타입 매핑에 대한 고려사항은 무엇입니까?
- Flutter 앱에서 프레임 드롭(Jank)이나 과도한 메모리 사용과 같은 성능 문제를 진단하고 최적화하기 위해 Flutter DevTools의 어떤 기능들을 활용할 수 있는지 구체적인 시나리오와 함께 설명하십시오. 특히, Profile 모드에서 CPU Usage, GPU Rendering, Memory 탭을 어떻게 분석하여 병목 지점을 찾아내는지 그 과정을 제시하십시오.