아키텍처 면접 질문
MVVM·MVI·TCA·Clean·DI·모듈화·Coordinator. 실제 iOS 면접에서 나온 48문항입니다.
- 아키텍처주관식
Cocoa MVC
교과서의 MVC와 UIKit의 Cocoa MVC는 무엇이 다른가요?
#mvc #cocoa-mvc #massive-view-controller #uikit
- 아키텍처객관식
MVC 역할 배치
MVC로 구성된 iOS 앱에서 '서버에서 받은 날짜 문자열을 사용자 로케일에 맞춰 표시 형식으로 바꾸는 코드'는 어디에 두는 것이 가장 적절한가요?
#mvc #responsibility #layering
- 아키텍처주관식
싱글톤 패턴
iOS 앱에서 싱글톤은 언제 쓰고 무엇이 문제인가요?
#singleton #global-state #testing #thread-safety
- 아키텍처주관식
Delegate 패턴과 통신 방식 비교
UIKit 곳곳에 쓰이는 Delegate 패턴이 무엇인지 설명해 주세요.
#delegate #notification #kvo #closure
- 아키텍처객관식
통신 방식 선택
다음 중 NotificationCenter가 가장 적절한 상황은?
#delegate #notification #closure #design
- 아키텍처주관식Expedia
Singleton의 범위
여행 앱에서 전역 SessionManager.shared가 인증, 캐시, 분석, 실험 값을 모두 들고 있어 테스트가 어렵습니다. Singleton으로 남겨도 되는 것과 생성자 주입으로 바꿔야 하는 것을 어떻게 가르겠습니까?
#singleton #dependency-injection #testability #global-state
- 아키텍처주관식
MVC vs MVVM
MVC로 잘 돌아가는 앱에 MVVM을 도입하자는 제안을 받았습니다. MVVM이 MVC와 근본적으로 다른 점은 무엇인가요?
#mvc #mvvm #viewmodel #testability
- 아키텍처객관식
ViewModel 책임 경계
MVVM에서 ViewModel이 가져서는 안 되는 것을 모두 고르세요.
#mvvm #viewmodel #responsibility #uikit
- 아키텍처주관식
MVP · VIPER · MVI · RIBs 비교
MVVM 말고 아는 아키텍처(MVP, VIPER, MVI, RIBs 등)를 하나씩 짚으며 무엇이 다른지 설명해 주세요.
#mvp #viper #mvi #ribs
- 아키텍처주관식
의존성 주입
iOS 앱에서 의존성 주입(DI)은 왜 하는 것인가요?
#dependency-injection #protocol #testing #composition-root
- 아키텍처객관식
DI 방식 선택
의존성 주입 방식에 대한 설명으로 옳은 것을 모두 고르세요.
#dependency-injection #initializer #property #environment
- 아키텍처주관식
KVO 동작 원리
Objective-C 런타임의 KVO는 내부적으로 어떻게 프로퍼티 변화를 감지하나요?
#kvo #kvc #objective-c-runtime #isa-swizzling
- 아키텍처객관식
NotificationCenter 동작
Foundation NotificationCenter에 대한 설명으로 옳은 것을 모두 고르세요.
#notification #notificationcenter #thread #observer
- 아키텍처주관식
SOLID 원칙
SOLID 다섯 원칙을 도형·동물 말고 iOS 코드 예시로 설명해 주세요.
#solid #srp #ocp #lsp
- 아키텍처객관식
디자인 패턴 식별
다음 중 상황과 디자인 패턴이 올바르게 짝지어진 것을 모두 고르세요.
#design-pattern #observer #adapter #decorator
- 아키텍처주관식
반응형 프로그래밍(RxSwift/Combine)
RxSwift(또는 Combine)로 대표되는 반응형 프로그래밍이 iOS에서 어떤 문제를 풀어 주나요?
#rxswift #combine #reactive #async-sequence
- 아키텍처주관식Walmart
DI vs DIP
의존성 주입(Dependency Injection)과 의존성 역전 원칙(Dependency Inversion Principle)은 이름이 비슷한데 무엇이 다른가요?
#dependency-injection #dependency-inversion #solid #protocol
- 아키텍처객관식Walmart
싱글톤 단위 테스트
AnalyticsManager.shared처럼 코드 곳곳에서 직접 참조하는 싱글톤이 있는 코드베이스에서, 이를 쓰는 뷰모델을 단위 테스트하려 합니다. 올바른 접근을 모두 고르세요.
#singleton #unit-test #testability #mock
- 아키텍처주관식Gojek
서드파티 라이브러리 판단
과제 리뷰입니다. 제출한 앱에 서드파티 라이브러리를 하나도 쓰지 않았는데, 면접관이 왜 안 썼는지, 만약 써야 한다면 어떤 부분을 어떤 라이브러리로 바꾸겠는지 묻습니다. 판단 기준과 함께 답해 주세요.
#third-party #dependency #spm #adapter
- 아키텍처객관식Paytm
싱글톤 해제(deinit)
static let shared = SessionManager() 형태의 싱글톤에 대해 "deinit이 호출되게 할 수 있나요? 필요한 실제 사례가 있나요?"라는 질문에 옳은 답을 모두 고르세요.
#singleton #deinit #lifetime #scope
- 아키텍처주관식CRED
비즈니스 로직의 위치
마지막으로 만든 화면 하나를 골라 처음부터 끝까지 설명해 보세요. 그 화면에서 비즈니스 로직은 어디에 두었고 왜 그랬나요?
#mvvm #business-logic #viewmodel #domain
- 아키텍처주관식Dropbox커뮤니티 전언
파일 목록 기능 모듈화
검색과 당겨 새로고침이 있는 iOS 파일/폴더 목록 기능을 설계합니다. UI 프레임워크와 무관하게 유지보수하려면 목록 조회, 검색, 새로고침의 상태와 데이터 접근을 어떤 모듈 경계로 나누겠습니까?
#feature-module #repository #search #refresh
- 아키텍처주관식
Coordinator 패턴
MVVM-C의 Coordinator는 어떤 문제를 풀기 위한 것이고 어떻게 구현하나요?
#coordinator #navigation #mvvm-c #routing
- 아키텍처객관식
Coordinator 메모리 관리
다음 Coordinator 구현에서 로그인 플로우가 끝난 뒤에도 LoginCoordinator가 메모리에 남습니다. 원인으로 가장 알맞은 것은? [코드]
#coordinator #memory #retain-cycle #weak
- 아키텍처주관식PayPal커뮤니티 전언
간이 NotificationCenter 구현
라이브 코딩입니다. Foundation의 NotificationCenter 없이, 이름으로 구독하고 발행하는 간이 EventBus를 Swift로 설계·구현해 보세요. 옵저버가 사라진 뒤 핸들러가 남지 않도록 수명과 해제 API를 어떻게 처리할지 말해 주세요.
#pub-sub #observer #notification #coding
- 아키텍처주관식
레거시 MVC → MVVM 마이그레이션
5년 된 MVC 앱(뷰 컨트롤러 150개, 테스트 거의 없음)을 MVVM으로 옮기라는 요구를 받았습니다. 서비스는 계속 배포되어야 합니다. 어떤 전략으로 진행하나요?
#migration #legacy #mvvm #refactoring
- 아키텍처주관식
API 클라이언트 추상화
인증 서버, 상품 서버, 결제 서버용으로 비슷하지만 조금씩 다른 네트워크 클라이언트가 세 개 있습니다(헤더, 인코딩, 에러 형식이 다름). 이를 프로토콜로 어떻게 추상화해 중복을 없애나요?
#protocol #generic #network-layer #endpoint
- 아키텍처주관식Airbnb커뮤니티 전언
모듈화 전략
단일 타깃으로 커진 앱을 모듈로 나누려 합니다. 어떤 기준으로 모듈 경계를 긋나요?
#modularization #spm #framework #build-time
- 아키텍처객관식
모듈 의존 방향
SearchFeature 모듈이 검색 결과에서 CheckoutFeature의 결제 화면을 열어야 합니다. 두 Feature 사이에 순환 의존을 만들지 않으면서 이를 구현하는 올바른 방법은?
#modularization #dependency #interface #circular
- 아키텍처주관식
TCA 도입 판단
팀에서 TCA(The Composable Architecture) 도입을 검토 중입니다. TCA가 해결하는 문제는 무엇인가요?
#tca #composable-architecture #unidirectional #reducer
- 아키텍처객관식
TCA 구성 요소
TCA에서 '버튼을 누르면 네트워크로 목록을 받아 화면에 표시한다'를 구현할 때, 각 요소의 역할로 틀린 것은?
#tca #reducer #effect #state
- 아키텍처주관식Headspace
분석 이벤트 디스패치 설계
테이크홈 과제입니다. 분석 이벤트를 여러 서비스(Google Analytics, Snowplow 등)로 보내는 계층을 Swift만으로 설계하세요. 조건: 호출부는 한 줄, 이벤트는 모듈화되어 추가·삭제가 쉬움, 서비스마다 이벤트 이름·파라미터가 다를 수 있음, 서비스는 이벤트를 선택적…
#analytics #protocol #dispatcher #open-closed
- 아키텍처주관식Microsoft
탭 기반 앱의 데이터 계층 설계
화이트보드 설계입니다. 메시지 탭과 연락처 탭만 있는 간이 Outlook 앱을 만듭니다. API에서 읽은 데이터가 두 탭에 지연 없이 반영되어야 하고, 앱 시작 속도와 다운로드를 최적화해 연락처가 가능한 한 빨리 보여야 합니다. 계층 구조와 데이터 흐름을 설계해 주세요.
#repository #single-source-of-truth #caching #startup
- 아키텍처주관식CRED
MVVM의 한계와 점진적 리팩터링
이 기능에 MVVM을 골랐다고 하셨는데, MVVM이 오히려 해가 되는 경우는 언제인가요?
#mvvm #trade-off #refactoring #strangler
- 아키텍처객관식Flipkart
대규모 앱의 딥링크 처리
수십 개 모듈로 나뉜 대규모 앱에서 딥링크(URL 스킴·Universal Link·푸시 페이로드)를 처리하는 설계로 옳은 것을 모두 고르세요.
#deep-link #universal-link #router #modularization
- 아키텍처주관식DiDi
요청 상태 머신 설계
네트워크 요청이 있는 화면은 로딩·성공·실패·재시도·새로고침·취소 상태가 얽힙니다. 이 상태 전이를 어떻게 설계하나요?
#state-machine #enum #loading-state #cancellation
- 아키텍처주관식Kuaishou
확장 가능한 검색 API 설계
아래 파일 검색 함수가 있습니다. 이제 'UTF-8 txt 또는 H.264 mp4' 그리고 '최근 일주일 안에 수정된 파일'만 찾아야 하고, 앞으로 조건이 계속 늘어날 예정입니다. 파라미터를 계속 추가하지 않고 이 API를 어떻게 확장하나요? [코드]
#api-design #closure #predicate #open-closed
- 아키텍처주관식네이버웹툰
Clean Architecture 원과 사용자 흐름
테크리드가 "iOS 개발할 때 클린 아키텍처의 원(동심원 다이어그램)과 사용자 관점이 잘 안 맞는 것 같다"고 말합니다. 사용자가 겪는 흐름은 화면→로직→서버→화면인데 다이어그램은 안쪽만 가리키는 화살표뿐입니다. 원이 말하는 것과 말하지 않는 것을 구분해서 답해 주세요.
#clean-architecture #dependency-rule #use-case #user-flow
- 아키텍처주관식당근커뮤니티 전언
Server Driven UI
피드 화면의 섹션 구성·순서·카드 종류를 앱 배포 없이 바꾸고 싶습니다. Server Driven UI의 스키마와 클라이언트 렌더러를 어떻게 설계하나요?
#server-driven-ui #sdui #component-registry #versioning
- 아키텍처주관식당근
장기 유지보수를 위한 설계
"이 기능을 몇 년 뒤에도 유지보수하려면 어떻게 설계해야 할까요?"라는 질문을 받았습니다. 최근에 만든 기능 하나를 예로 들어, 시간이 지나도 고치기 쉬운 구조를 만들기 위해 무엇을 기준으로 결정했는지 설명해 주세요.
#maintainability #design-decision #testability #adr
- 아키텍처주관식Instacart커뮤니티 전언
재사용 UI 컴포넌트 경계
UIKit 장바구니 화면에서 상품 카드가 목록, 검색, 추천에 모두 쓰이지만 각 화면마다 탭 동작과 배지가 다릅니다. 재사용 가능한 UICollectionViewCell 컴포넌트를 설계할 때 셀에는 어떤 입력과 이벤트만 노출하겠습니까?
#uikit #reusable-component #collection-view #configuration
- 아키텍처주관식JD.com
MVC에서 MVVM으로 이전
기존 UIKit 쇼핑 앱의 UIViewController가 API 호출, 캐시, 로딩 UI를 모두 처리합니다. MVC를 MVVM으로 옮길 때 네트워크와 캐시 처리는 어느 계층에 두겠습니까?
#mvvm #repository #migration #caching
- 아키텍처주관식카카오모빌리티커뮤니티 전언
프로토콜 지향 기능 조합
경로 안내, 요금 계산, 실시간 위치 갱신을 가진 iOS 이동 서비스 기능에서 상속 계층이 복잡해졌습니다. 프로토콜 지향 설계로 공통 능력과 서비스별 차이를 어떻게 조합하겠습니까?
#protocol-oriented #dependency-injection #composition #ios
- 아키텍처주관식우아한형제들커뮤니티 전언
점진적 레거시 리팩터링
운영 중인 UIKit 주문 기능의 거대한 ViewController를 한 번에 다시 쓰지 않고 구조를 개선해야 합니다. 배포 가능한 작은 단계로 나눈다면 어떤 seam을 먼저 만들겠습니까?
#refactoring #legacy #feature-flag #migration
- 아키텍처주관식
팀 규모별 아키텍처·품질 전략
iOS 팀이 5명 → 10명 → 100명으로 커진다고 할 때, 각 단계에서 코드 충돌·품질·아키텍처를 어떻게 다르게 관리해야 하나요?
#scaling #team #modularization #code-ownership
- 아키텍처주관식
대규모 SwiftUI 앱 구조
수십 개 화면, 여러 팀이 개발하는 SwiftUI 앱을 처음부터 설계한다면 상태 관리·화면 이동·의존성 주입·모듈 경계를 어떻게 잡나요?
#swiftui #large-scale #modularization #navigation
- 아키텍처객관식
Method Swizzling
Method Swizzling에 대한 설명으로 옳은 것을 모두 고르세요.
#method-swizzling #objective-c-runtime #aop #risk
- 아키텍처주관식
Clean Architecture와 책임 설계
Clean Architecture를 iOS에 적용할 때 레이어와 의존 규칙을 설명해 주세요.
#clean-architecture #use-case #domain #boundary