UIKit 면접 질문
뷰 라이프사이클·오토레이아웃·렌더링·UICollectionView·터치 이벤트. 실제 iOS 면접에서 나온 50문항입니다.
- UIKit주관식
frame과 bounds
UIKit 커스텀 뷰를 디버깅하다 bounds.origin이 (0, 0)이 아닌 값을 봤습니다. frame과 bounds는 무엇이 다른가요?
#frame #bounds #coordinate #scrollview
- UIKit객관식
뷰 컨트롤러 생명주기
화면이 처음 표시될 때 UIViewController 생명주기 메서드가 호출되는 순서로 올바른 것은?
#viewcontroller #lifecycle #viewdidload #viewdidappear
- UIKit주관식
오토레이아웃 기본
오토레이아웃의 제약(constraint)이 내부적으로 어떤 식(공식)으로 표현되는지 설명해 주세요.
#autolayout #constraint #nslayoutanchor #visual-format
- UIKit객관식
Safe Area
Safe Area에 대한 설명으로 옳은 것을 모두 고르세요.
#safe-area #layout-guide #notch #autolayout
- UIKit객관식
Leading vs Left
오토레이아웃 제약을 걸 때 leadingAnchor 대신 leftAnchor를 써도 되는 경우로 가장 적절한 것은?
#autolayout #leading #rtl #localization
- UIKit주관식Uber
스토리보드 vs 코드 UI
팀에서 스토리보드를 쓸지 코드로만 UI를 짤지 논의 중입니다. 각각의 장단점을 말해 주세요.
#storyboard #xib #programmatic-ui #git-conflict
- UIKit객관식Zomato
UIResponder 상속 계층
NSObject에서 출발해 UIButton까지 내려가는 상속 계층으로 올바른 것은?
#uiresponder #uicontrol #inheritance #uibutton
- UIKit주관식
viewDidLoad와 네트워크 요청
UIKit 화면에서 동료가 viewDidLoad에서 바로 네트워크 요청을 시작하고 응답을 받으면 UI를 갱신하는 코드를 짰습니다. 이 방식에서 생길 수 있는 문제는 무엇인가요?
#viewdidload #lifecycle #network #task
- UIKit객관식
Content Hugging / Compression Resistance
오토레이아웃으로 한 줄에 titleLabel과 dateLabel을 가로로 나란히 두었습니다. 제목이 길어지면 제목은 줄어들고(말줄임) 날짜는 항상 온전히 보여야 합니다. 어떤 우선순위를 조정해야 하나요?
#autolayout #hugging #compression-resistance #priority
- UIKit주관식
Intrinsic Content Size
직접 만든 커스텀 뷰(예: 태그 칩 뷰)를 UIStackView에 넣었더니 크기가 0으로 잡혀 보이지 않습니다. 원인과 해결 방법을 intrinsic content size 관점에서 설명해 주세요.
#autolayout #intrinsic-content-size #custom-view #invalidate
- UIKit주관식TikTok
레이아웃 갱신 메서드
UIKit 의 setNeedsLayout, layoutIfNeeded, layoutSubviews, setNeedsDisplay는 각각 무엇을 하고 언제 호출해야 하나요?
#setneedslayout #layoutifneeded #layoutsubviews #setneedsdisplay
- UIKit객관식
제약 애니메이션
UIKit 오토레이아웃 기반 아래 코드는 패널을 위로 슬라이드시키려는 의도지만 애니메이션 없이 즉시 이동합니다. 원인은? [코드]
#autolayout #animation #layoutifneeded #constraint
- UIKit주관식
셀 재사용과 비동기 이미지
UITableView 기반 피드에서 빠르게 스크롤하면 이미지가 엉뚱한 셀에 잠깐 표시됐다가 바뀌는 앱을 받았습니다. 원인은 무엇인가요?
#tableview #collectionview #cell-reuse #async-image
- UIKit객관식
dequeueReusableCell API
UITableView 의 dequeueReusableCell(withIdentifier:for:)와 dequeueReusableCell(withIdentifier:)에 대한 설명으로 옳은 것을 모두 고르세요.
#tableview #dequeue #reuse-identifier #register
- UIKit주관식
동적 셀 높이
UITableView 에서 댓글 길이에 따라 높이가 달라지는 셀을 만들어야 합니다. 셀 높이를 콘텐츠에 맞춰 자동으로 잡으려면 무엇을 설정해야 하나요?
#tableview #self-sizing #automatic-dimension #estimated-height
- UIKit주관식TikTok
리스폰더 체인과 히트 테스트
UIKit 앱에서 화면을 탭했을 때 그 터치가 어떤 뷰에 전달되는지 결정되는 과정(hit testing)을 설명해 주세요.
#responder-chain #hit-test #touch #first-responder
- UIKit주관식
뷰 계층 순회
루트 뷰에서 시작해 특정 조건(예: tag == 99 또는 특정 타입)을 만족하는 뷰를 찾는 함수를 어떻게 작성하겠습니까? [코드]
#view-hierarchy #bfs #dfs #subviews
- UIKit객관식
다크 모드 대응
UIKit 앱에서 다크 모드를 지원할 때 옳은 설명을 모두 고르세요.
#dark-mode #trait-collection #dynamic-color #cgcolor
- UIKit주관식Google
코드 제약으로 네 모서리 배치
라이브 코딩입니다. [UIImage]를 받아 커스텀 UIView의 네 모서리에 하나씩 고정(pin)하는 뷰를 코드 제약만으로 어떻게 만들겠습니까? [코드]
#autolayout #nslayoutconstraint #anchor #programmatic-ui
- UIKit주관식Swiggy
스티키 헤더·캐러셀·당겨서 새로고침
테이크홈 과제 리뷰입니다. 홈 화면에 (1) 스크롤해도 상단에 붙어 있는 필터 헤더, (2) 배너·식당 두 줄의 가로 스크롤 캐러셀이 있어야 합니다. UIKit에서 각각 어떤 API로 구현하겠습니까?
#uicollectionview #compositional-layout #sticky-header #carousel
- UIKit객관식라인
viewDidLoad 이전 호출
스토리보드에서 인스턴스화되는 UIViewController에서 viewDidLoad()보다 먼저 호출되는 메서드를 모두 고르세요.
#lifecycle #loadview #awakefromnib #init-coder
- UIKit주관식ByteDance
dataSource와 delegate 분리 설계
Apple은 왜 UITableView에 데이터 배열을 그냥 넘기게 하지 않고, dataSource와 delegate라는 두 프로토콜로 나눠 설계했을까요?
#uitableview #datasource #delegate #protocol
- UIKit객관식Tencent
테이블뷰 메서드 호출 순서
estimatedRowHeight를 쓰지 않는 UITableView에서 reloadData() 직후 다음 네 메서드가 호출되는 순서로 올바른 것은? - numberOfSections(in:) - tableView(_:numberOfRowsInSection:) - tableView(_:…
#uitableview #datasource #heightforrow #estimatedrowheight
- UIKit주관식Lyft
이미지 셀 재사용과 취소
UIKit 컬렉션 뷰의 이미지 셀에서 빠르게 스크롤하면 이전 요청의 응답이 재사용된 셀에 잠깐 떴다가 바뀝니다. 셀이 재사용되는 시점에 무엇을 취소하겠습니까?
#uikit #collection-view #image-loading #reuse
- UIKit주관식Oracle커뮤니티 전언
UIView 공통 부모 찾기
두 UIView가 주어졌을 때 가장 가까운 공통 부모 뷰를 찾는 함수를 작성합니다. 한쪽 뷰의 superview 체인은 어떤 자료구조에 담아 두겠습니까?
#uiview #view-hierarchy #ancestor #set
- UIKit주관식BBC커뮤니티 전언
완료 상태의 목록 UI
개표 결과를 보여 주는 UIKit 테이블 화면입니다. 모든 지역 결과가 도착하면 새로고침 버튼을 숨기고 승자 행을 강조해야 합니다. 이 '개표 완료' 조건을 네트워크 콜백 안의 임시 플래그가 아니라 무엇으로 표현하겠습니까?
#uitableview #diffable-data-source #state #snapshot
- UIKit주관식더스윙커뮤니티 전언
Auto Layout 우선순위
좁은 화면에서 제목 레이블과 가격 레이블이 한 줄에 놓여야 하는데 둘 다 자기 글자 폭을 전부 요구합니다. Auto Layout에서 어느 레이블이 잘리고 어느 레이블이 온전히 보일지 무엇으로 정하겠습니까?
#autolayout #constraint-priority #hugging #compression-resistance
- UIKit주관식Instacart
Undo 가능한 게임 상태
UIKit으로 만든 틱택토에서 횟수 제한 없는 undo를 지원해야 합니다. 되돌리기를 위해 무엇을 저장해 두겠습니까?
#state-management #undo #snapshot #uikit
- UIKit주관식JD.com
채팅 입력창과 키보드 레이아웃
UIKit 채팅 화면에서 키보드가 올라올 때 입력창이 키보드 바로 위에 붙어 따라 움직여야 합니다. 키보드 높이 변화를 Auto Layout 제약에 어떻게 연결하겠습니까?
#keyboard #autolayout #chat #safe-area
- UIKit주관식카카오모빌리티커뮤니티 전언
자기 크기 셀과 Dynamic Type
UIKit 차량 목록 셀이 접근성 큰 글자 설정에서도 잘리지 않고 높이가 늘어나야 합니다. 셀 높이가 글자 크기에 따라 자동으로 계산되게 하려면 제약을 어떻게 걸어야 합니까?
#dynamic-type #self-sizing #uikit #accessibility
- UIKit객관식
hitTest 오버라이드
UIKit 커스텀 탭바 가운데에 위로 20pt 튀어나온 원형 버튼을 두었습니다. 튀어나온 부분을 탭하면 반응이 없습니다. 아래 오버라이드 중 이 문제를 올바르게 해결하는 것은? [코드]
#hit-test #touch #custom-view #bounds
- UIKit주관식
UIView와 CALayer
UIView와 CALayer는 어떤 관계이고 왜 역할이 나뉘어 있나요?
#calayer #uiview #core-animation #rendering
- UIKit주관식Airbnb커뮤니티 전언
중첩 스크롤 셀 설계
UITableViewCell 안에 가로 스크롤 UICollectionView를 코드로 넣어야 합니다(앱스토어 '오늘' 탭 같은 캐러셀 행). 내부 컬렉션뷰의 dataSource와 delegate는 누가 맡도록 설계하나요?
#tableview #collectionview #nested #cell-reuse
- UIKit주관식Snap커뮤니티 전언
스크롤 성능 진단
이미지와 텍스트가 섞인 피드 화면에서 스크롤이 버벅인다는 제보를 받았습니다. 어디부터 어떻게 확인하나요?
#performance #scroll #instruments #hitch
- UIKit주관식
Compositional Layout과 Diffable Data Source
기존 UICollectionViewFlowLayout + 인덱스 기반 dataSource로 만든 화면을 UICollectionViewCompositionalLayout + UICollectionViewDiffableDataSource로 옮기려 합니다. 무엇이 좋아지나요?
#collectionview #compositional-layout #diffable-datasource #snapshot
- UIKit객관식
Diffable Data Source 동작
UICollectionViewDiffableDataSource 사용 시 옳은 설명을 모두 고르세요.
#diffable-datasource #snapshot #hashable #collectionview
- UIKit주관식
공통 superview 찾기
여러 개의 UIView가 주어졌을 때 이들의 가장 가까운 공통 superview를 반환하는 함수를 어떻게 설계하겠습니까?
#view-hierarchy #superview #lca #algorithm
- UIKit주관식Meta
UIScrollView 원리 재구현
UIScrollView가 없다고 가정하고, 손가락을 따라 콘텐츠가 움직이는 스크롤 뷰를 UIView 서브클래스로 직접 만들어야 합니다. 어떤 프로퍼티를 바꿔서 콘텐츠를 움직이겠습니까?
#uiscrollview #bounds #pan-gesture #contentoffset
- UIKit주관식Reddit
셀 노출(impression) 측정
피드의 각 게시물이 '화면에 50% 이상, 1초 이상 보였을 때' 노출 이벤트를 한 번만 보내야 합니다. UITableView/UICollectionView 위에서 이 노출 측정기를 어떻게 설계하나요?
#uitableview #impression #analytics #willdisplay
- UIKit주관식Zomato
코너 순환 애니메이션
UIKit 25분 과제입니다. 화면의 작은 로고 뷰가 옛날 DVD 화면 보호기처럼 좌상→우상→우하→좌하 네 모서리를 순서대로 무한히 이동해야 합니다. 어떻게 구현하나요?
#uiview-animate #animation #completion #uiviewpropertyanimator
- UIKit주관식크림
UICollectionView 내부 구조
UICollectionView를 UITableView 대신 쓰는 이유를 내부 구조(레이아웃 객체·attributes·재사용) 관점에서 설명해 주세요.
#uicollectionview #uicollectionviewlayout #layout-attributes #custom-layout
- UIKit주관식Baidu
재사용 셀의 개별 카운트다운
UITableView 로 만든 타임세일 목록의 각 셀에 '남은 시간 00:12:34'가 1초마다 줄어드는 카운트다운이 있습니다. 셀마다 Timer를 두는 대신 어떻게 설계하겠습니까?
#uitableview #timer #cell-reuse #prepareforreuse
- UIKit주관식Microsoft
컬렉션뷰·테이블뷰 연동 스크롤
연락처 화면 코드 리뷰입니다. 상단에는 알파벳 인덱스가 가로로 스크롤되는 UICollectionView, 아래에는 섹션별 연락처 UITableView가 있고, 테이블을 스크롤하면 상단 인덱스가 따라 선택되고 상단을 탭하면 테이블이 해당 섹션으로 이동해야 합니다. 이 양방향 연동에서 두…
#uicollectionview #uitableview #scrollviewdidscroll #synchronized-scroll
- UIKit객관식Alibaba Group
재사용 셀과 CALayer
UIKit 의 재사용되는 셀에 그라데이션·그림자·애니메이션 같은 layer 효과를 넣을 때 생기는 문제와 올바른 대응을 모두 고르세요.
#cell-reuse #calayer #shadowpath #gradient
- UIKit주관식Pinterest커뮤니티 전언
대형 그리드 Flood Fill
컬렉션 뷰로 그린 큰 픽셀 그리드(예: 500×500)에 flood fill을 구현합니다. 재귀 DFS를 쓰지 않는다면 탐색을 무엇으로 짜겠습니까?
#collection-view #flood-fill #bfs #batch-updates
- UIKit주관식
오프스크린 렌더링과 렌더 파이프라인
UIKit 목록 화면에서 프로필 이미지가 있는 셀에 layer.cornerRadius + masksToBounds + shadow를 함께 적용했더니 스크롤 프레임이 떨어집니다. 렌더 파이프라인 관점에서 왜 비싼가요?
#rendering #offscreen #core-animation #gpu
- UIKit주관식
Core Animation 모델/프레젠테이션 레이어
UIView 애니메이션으로 화면을 가로질러 3초 동안 이동하는 뷰가 있습니다. 이동 중에 뷰를 탭해도 반응이 없고, 애니메이션 중간에 view.frame을 찍어 보면 이미 목적지 값입니다. 이 두 현상은 왜 생기나요?
#core-animation #presentation-layer #model-layer #animation
- UIKit주관식
오토레이아웃 성능 최적화
제약이 수백 개인 복잡한 셀로 구성된 화면에서 레이아웃 패스가 병목으로 잡혔습니다. 오토레이아웃 엔진의 동작을 근거로 무엇이 비용을 키우는지 설명해 주세요.
#autolayout #performance #cassowary #constraint
- UIKit객관식
UIKit 렌더 루프 패스 순서
메인 런루프 한 사이클에서 UIKit이 화면 갱신을 위해 처리하는 패스의 순서로 올바른 것은? (setNeedsUpdateConstraints / setNeedsLayout / setNeedsDisplay로 각각 표시된 뷰가 있다고 가정)
#runloop #layout-pass #update-constraints #display
- UIKit주관식네이버웹툰
UITableView → UICollectionView 전환 설득
프로젝트에 UITableView 화면이 수백 개 있습니다. 당신은 이를 UICollectionView로 바꾸자고 제안하려 합니다. 반대하는 팀원들을 어떤 근거로 설득하겠습니까?
#uitableview #uicollectionview #migration #list-configuration