메모리·ARC 면접 질문
ARC·retain cycle·weak/unowned·메모리 레이아웃·누수 디버깅. 실제 iOS 면접에서 나온 48문항입니다.
- 메모리·ARC주관식카카오
ARC 기본
ARC가 무엇이고 왜 필요한가요?
#arc #reference-counting #retain #release
- 메모리·ARC객관식
strong / weak / unowned
weak 참조에 대한 설명으로 맞는 것을 모두 고르세요.
#weak #unowned #strong #optional
- 메모리·ARC객관식
스택과 힙
스택과 힙에 대한 설명으로 옳은 것은?
#stack #heap #allocation #struct
- 메모리·ARC주관식
메모리 누수의 영향
메모리 누수란 무엇인가요?
#leak #memory-warning #jetsam #user-impact
- 메모리·ARC객관식
deinit 호출 시점
다음 코드의 출력은? [코드]
#deinit #reference-count #lifetime
- 메모리·ARC주관식지마켓글로벌
weak vs strong
weak와 strong의 차이를 설명해 주세요.
#weak #strong #arc #reference-counting
- 메모리·ARC주관식Teladoc Health커뮤니티 전언
ARC 소유권과 해제 시점
Swift로 만든 iOS 앱에서 ARC는 class 인스턴스의 수명을 어떻게 관리합니까?
#arc #ownership #deinit #strong-reference
- 메모리·ARC주관식Deloitte커뮤니티 전언
unowned 접근 위험
옵셔널 언래핑이 귀찮아서 모든 delegate를 weak 대신 unowned로 선언하려는 동료가 있습니다. unowned 참조가 옵셔널이 아닌 이유는 무엇입니까?
#unowned #weak #runtime-trap #arc
- 메모리·ARC주관식
순환 참조 진단과 해결
특정 화면을 닫아도 그 뷰컨트롤러가 메모리에서 사라지지 않는 것 같습니다. 순환 참조가 실제로 있는지 어떻게 확인하겠습니까?
#retain-cycle #leak #memory-graph #deinit
- 메모리·ARC객관식
클로저 캡처와 누수
다음 두 코드 중 순환 참조가 생기는 것은? [코드]
#closure #capture #weak-self #retain-cycle
- 메모리·ARC주관식
weak vs unowned 선택
weak 대신 unowned를 쓰는 기준은 무엇인가요?
#weak #unowned #lifetime #crash
- 메모리·ARC주관식
delegate와 약한 참조
weak var delegate: MyDelegate?로 선언하려는데 컴파일러가 거부합니다. 이유와 고치는 방법을 설명해 주세요.
#delegate #weak #anyobject #protocol
- 메모리·ARC객관식
순환 참조 발생 조건
다음 중 (별도 조치가 없을 때) 순환 참조 또는 영구 누수가 생기는 경우를 모두 고르세요.
#retain-cycle #timer #notification #closure
- 메모리·ARC주관식
retain cycle vs memory leak
"순환 참조"와 "메모리 누수"는 같은 말인가요?
#retain-cycle #leak #abandoned-memory
- 메모리·ARC객관식
캡처 리스트
다음 코드의 출력은? [코드]
#closure #capture-list #value-capture
- 메모리·ARC주관식
MRC와 autorelease
ARC 이전 Objective-C에서는 retain/release/autorelease를 직접 호출했습니다. 각각 무엇이었고 ARC가 무엇을 바꿨나요?
#mrc #retain #release #autorelease
- 메모리·ARC객관식
autoreleasepool 활용
다음 코드에서 메모리가 순간적으로 치솟아 종료되는 문제가 있습니다. 가장 적절한 수정은? [코드]
#autoreleasepool #peak-memory #loop #uiimage
- 메모리·ARC주관식
얕은 복사와 깊은 복사
struct Order { var items: [Item]; let customer: Customer }에서 Item은 struct, Customer는 class입니다. var copy = order로 복사한 뒤 copy.customer.name을 바꾸면 원본은 어떻게 되나요?
#shallow-copy #deep-copy #nscopying #struct
- 메모리·ARC객관식
Objective-C 프로퍼티 속성
Objective-C 코드에서 @property (nonatomic, copy) NSString *name;처럼 NSString 프로퍼티에 strong 대신 copy를 쓰는 이유로 가장 알맞은 것은?
#objective-c #copy #strong #nsstring
- 메모리·ARC객관식하이퍼커넥트
누수 패턴 판별
다음 코드 조각 중 ViewController가 화면에서 사라진 뒤에도 해제되지 않게 만드는(누수를 일으키는) 것을 모두 고르세요. 각 코드는 viewDidLoad에서 실행되며 self는 UIViewController입니다.
#leak #timer #notificationcenter #closure
- 메모리·ARC객관식Zomato
ARC와 weak의 규칙
ARC와 weak에 대한 다음 설명 중 맞는 것을 모두 고르세요.
#arc #weak #compile-time #enum
- 메모리·ARC주관식CRED
누수 수정의 증명
실제로 겪은 메모리 누수를 하나 떠올려 보세요. 어떻게 발견했고, 원인을 어떻게 특정했으며, "고쳐졌다"는 것을 어떻게 증명했나요?
#leak #memory-graph #instruments #regression-test
- 메모리·ARC주관식DoorDash커뮤니티 전언
retain cycle 예시와 싱글톤
retain cycle이 생기는 구체적인 코드 예시를 하나 들고 고쳐 보세요.
#retain-cycle #closure #singleton #weak-self
- 메모리·ARC주관식Salesforce커뮤니티 전언
클로저 캡처 순환 참조
메시지 앱의 ViewModel이 프로퍼티로 오래 보관하는 completion 클로저 안에서 self.messages를 갱신합니다. 어떤 참조 그래프 때문에 retain cycle이 생깁니까?
#closures #retain-cycle #weak-self #arc
- 메모리·ARC주관식Xiaomi
깊은 복사·얕은 복사와 COW
Swift에서 var b = a로 큰 배열을 다른 변수에 대입한 뒤 b만 수정했습니다. 이때 일어나는 것이 얕은 복사인지 깊은 복사인지, Copy-on-Write와 함께 설명해 주세요.
#copy #cow #value-semantics #memory
- 메모리·ARC주관식Zillow커뮤니티 전언
화면 전환 뒤 객체 해제 확인
UIKit 화면을 닫았는데 그 ViewController가 계속 메모리에 남아 있습니다. deinit 로그만 믿지 않고 누가 붙잡고 있는지 어떻게 찾겠습니까?
#memory-graph #viewcontroller #timer #observer
- 메모리·ARC주관식
Core Foundation 객체와 ARC
SecItemCopyMatching이나 CGImageSource 같은 C API 가 돌려주는 Core Foundation 객체를 Swift 에서 다룰 때, Unmanaged·takeRetainedValue()·takeUnretainedValue()는 언제 쓰나요? Create/Get …
#core-foundation #unmanaged #toll-free-bridging #takeretainedvalue
- 메모리·ARC주관식
클로저 캡처 원리
클로저가 외부 변수를 캡처할 때 실제로 메모리에서 무슨 일이 일어나나요? 캡처 리스트 [x]를 쓸 때와 안 쓸 때의 차이를 아래 코드 결과로 설명해 주세요. [코드]
#closure #capture #capture-list #box
- 메모리·ARC주관식
iOS 메모리 구조와 Jetsam
백그라운드로 보낸 앱이 돌아와 보면 처음부터 다시 시작되는 경우가 있습니다. iOS의 메모리 관리 방식(가상 메모리, 압축, Jetsam)으로 이 현상을 설명해 주세요.
#virtual-memory #jetsam #memory-warning #background
- 메모리·ARC객관식
class 성능과 ARC 트래픽
class 기반 코드의 성능(디스패치·ARC 비용)을 개선하는 방법으로 효과가 있는 것을 모두 고르세요.
#final #private #dispatch #arc-traffic
- 메모리·ARC주관식
unowned 크래시 시나리오
UITableView 셀에서 이미지를 비동기로 싣는 아래 코드는 가끔 크래시합니다. 어떤 조건에서, 왜 크래시하나요? [코드]
#unowned #crash #lifetime #closure
- 메모리·ARC주관식
값 타입의 메모리 비용
"struct를 쓰면 ARC 비용이 없다"는 말은 어디까지 사실인가요?
#value-type #cow #arc-traffic #struct
- 메모리·ARC객관식
unowned 사용 판단
다음 중 [unowned self] 캡처가 안전한 경우를 모두 고르세요.
#unowned #weak #closure #lifetime
- 메모리·ARC주관식
Task와 self 캡처
Swift Concurrency로 옮긴 뒤 팀에서 "Task { } 안에서도 [weak self]를 항상 써야 하나"로 논쟁이 붙었습니다. 언제 필요하고 언제 불필요한가요?
#task #swift-concurrency #weak-self #capture
- 메모리·ARC주관식쿠팡
구독 수명과 메모리 관리
라이브 코딩에서 Combine 을 쓰는 다음 ViewModel 코드를 받았습니다. 가격 스트림을 구독해 priceText에 반영하는 기능을 추가하고, 구독 해제를 어떻게 처리할지 코드와 함께 설명하세요. [코드]
#combine #cancellable #closure #weak-self
- 메모리·ARC주관식네이버웹툰
ARC 꼬리질문 심화
"ARC를 설명해 보세요"로 시작해 꼬리질문이 이어집니다. 먼저, retain/release는 누가 언제 삽입하나요?
#arc #retain-release #value-type #ownership
- 메모리·ARC주관식PayPal
ARC 해제 단계와 weak/unowned 선택
객체의 마지막 strong 참조가 사라지는 순간부터 메모리가 실제로 반환되기까지 ARC가 하는 일을 단계별로 설명해 주세요.
#arc #deinit #weak #unowned
- 메모리·ARC주관식Flipkart
struct 복사와 COW 버퍼 주소
[코드] s2.a = 9 이후 s1.a·s2.a가 저장된 주소와 tags 배열의 버퍼 주소는 각각 같은가요, 다른가요?
#struct #cow #array #memory-address
- 메모리·ARC주관식Microsoft
루프 안 autorelease 누적
데이터 5,000건 이하에서는 잘 돌던 for 루프가 그 이상에서는 메모리 경고 후 크래시합니다. 루프 안에서는 문자열을 잘라 붙이고 String(format:)·NSData 변환을 반복합니다. 힌트는 'autorelease'입니다. 원인을 설명하세요.
#autoreleasepool #runloop #foundation #bridging
- 메모리·ARC객관식ByteDance
atomic 프로퍼티와 증가 연산
Objective-C에서 @property (atomic) int a;를 선언하고, 여러 스레드에서 self.a = self.a + 1을 합쳐서 10,000번 실행했습니다. 끝났을 때 a는 10,000인가요? Swift에서 같은 보장을 얻으려면 어떻게 해야 하나요? 맞는 것을 모두 고…
#objective-c #atomic #thread-safety #race-condition
- 메모리·ARC주관식Xiaohongshu
댕글링 포인터와 Zombie Objects
해제된 객체에 접근하는 댕글링 포인터(야생 포인터)는 ARC 환경에서 어떤 상황에 생기나요?
#dangling-pointer #zombie #exc-bad-access #asan
- 메모리·ARC주관식Shopee
ARC vs 가비지 컬렉션
iOS는 참조 카운트(ARC)로 메모리를 관리합니다. 만약 참조 카운트 없이 자동 메모리 관리를 구현해야 한다면 어떤 방식이 가능한가요?
#arc #garbage-collection #deterministic #design-rationale
- 메모리·ARC주관식JD.com
저장된 클로저와 self 수명
UIKit ViewController가 프로퍼티에 저장해 둔 업로드 완료 Block이 ViewController의 라벨을 바꿉니다. 업로드가 끝난 뒤에도 프로퍼티에 남아 있는 이 클로저와 self 사이의 고리를 어떻게 끊겠습니까?
#closure #retain-cycle #completion #lifetime
- 메모리·ARC주관식네이버웹툰
값 타입 내부 참조의 공유
웹툰 앱의 Episode struct 안에 class 타입인 ImageCache 프로퍼티가 있습니다. 이 struct를 복사한 뒤 한쪽에서 캐시를 바꾸면 다른 쪽에는 어떤 상태가 공유됩니까?
#struct #class #value-semantics #reference
- 메모리·ARC주관식
weak 참조의 런타임 구현
"weak가 strong보다 느리다"는 말이 왜 사실인지 Swift 런타임의 참조 카운트 구조(인라인 refcount, side table)로 설명해 주세요.
#weak #side-table #refcount #runtime
- 메모리·ARC주관식
메모리 레이아웃
MemoryLayout<T>.size, stride, alignment는 각각 무엇이고 왜 셋이 다를 수 있나요? 아래 struct를 예로 들어 설명해 주세요. [코드]
#memorylayout #size #stride #alignment
- 메모리·ARC주관식
심화 누수 추적
Leaks 인스트루먼트와 Memory Graph 모두 깨끗한데 특정 화면을 오갈 때마다 실기기 메모리가 30MB씩 늘어납니다. 이런 케이스에서 원인이 될 수 있는 것들은 무엇인가요?
#leak #instruments #malloc-stack #vm-tracker
- 메모리·ARC객관식
소유권 수식어와 ~Copyable
Swift 5.9의 소유권 기능(borrowing/consuming 파라미터, ~Copyable 타입)에 대한 설명으로 옳은 것은?
#ownership #borrowing #consuming #noncopyable