성능·디버깅
앱 내 렉(hang) 모니터 구현
사내 APM에 "메인 스레드가 일정 시간 이상 멈추면 스택을 남기는" 기능을 넣으려 합니다. 앱 안에서 렉(卡顿)을 어떻게 감지하겠습니까?
면접관은 이 답을 어떻게 들을까요? 넘어갈지, 더 물어볼지, 떨어뜨릴지 알려 주고, 걸리는 문장은 콕 집어 줘요. 점수는 그대로예요.
사내 APM에 "메인 스레드가 일정 시간 이상 멈추면 스택을 남기는" 기능을 넣으려 합니다. 앱 안에서 렉(卡顿)을 어떻게 감지하겠습니까?
메인 RunLoop에 CFRunLoopObserver를 달아 BeforeSources→AfterWaiting 사이가 임계(예: 250ms)를 넘는지 감시 스레드에서 세마포어 타임아웃으로 판정하거나, 워치독 스레드가 주기적으로 메인에 핑을 보내 응답 지연을 잰다. 프로덕션에서는 MetricKit MXHangDiagnostic을 우선 활용한다.
성능·디버깅주관식심화
특정 화면에서 가끔 1초 정도 화면이 멈춘다는 제보가 있지만 개발 환경에서는 재현되지 않습니다. 원인을 좁혀 가는 방법을 설명해 주세요.
#hang #main-thread
성능·디버깅객관식심화
앱이 특정 조작 후 완전히 멈췄습니다(입력 무반응). 메인 스레드가 어디서 블록됐는지 알아내는 방법으로 옳은 것을 모두 고르세요.
#hang #main-thread
성능·디버깅주관식기초
출시된 iOS 앱이 가끔 몇 초 동안 터치에 반응하지 않는다는 리뷰가 올라옵니다. 사무실에서는 재현이 안 될 때 main thread가 멈춘 순간의 스택을…
#hang #main-thread
동시성주관식입문
UIKit 화면에서 네트워크 응답 콜백에 label.text = result를 했더니 가끔 화면이 늦게 바뀌거나 아예 안 바뀝니다. 원인이 무엇인가요?
#runloop #main-thread