중급 iOS 개발자 면접 질문 Top 10

Lee young-jun
3 min readOct 24, 2023

--

1. strong, weak, unonwned의 차이

strong: 참조 회수 증가시켜 소멸 막음
weak: 참조 회수 유지, 소멸 후 접근 시 nil 반환
unowned: 참조 회수 유지, 소멸 후 접근시 Crash 발생

keyword 없으면 strong으로 간주

나: 이것들은 @IBOutlet, closure 등에서 사용했었음

2. Image Lazy Loading 구현 방법

Cache와 비동기 등으로 직접 구현할 수도 있지만, SDWebImage 나 AlamofireImage 등을 사용하는 것이 현명하다. 이 라이브러리 들은 백그라운드로 처리되어 UI 성능에 영향을 주지 않으며 Caching 까지 자동으로 처리 된다.

3. GCD 와 Operation Queue

둘다 비동기 작업을 위한 API
GCD: closure를 사용한 단순 작업을 위한 저수준 API
Operation Queue: 객체를 통해 일시정지, 취소, 의존성 등 다양한 제어

나: DispatchQueue 사용하는게 GCD

4. iOS App 모듈화

App을 논리 단위로 잘게 쪼개고 MVVM, VIPER 등의 디자인 패턴 적용
나눠진 각 모듈간 의존성 수립, Protocol 지향이 도움된다.

5. 민감한 데이터에 대한 보안

이런 데이터는 평문으로 저장되면 안됨.
비밀번호나 토큰등은 Keychain에 저장하고 큰 데이터는 AES 등 적절한 암호화로 저장.

6. NotificationCenter의 용도와 사용 방법

특정 이벤트가 발생했을 때 코드를 실행 시키는 등의 컴포넌트간 통신을 위해 사용된다.

예) 백그라운드 이벤트에 의한 UI 업데이트

나: post-발송, addObserver-수신, Notification.Name-이벤트 이름
Orientation 상태 수신등에 사용 했었다.

7. Singleton은 무엇이고 언제 사용?

하나의 인스턴스만 가져야 하고 접근 경로가 한 곳인 경우 필요.
Network, Database 등의 공유 기능이나 생성할 때 충돌이 발생할 수 있는 곳등에서 사용.

8. TDD 설명, 좋은점

코드를 작성하기전에 단위 테스트를 먼저 작성하는 개발 방식.
테스트 작성, 테스트 통과, 코드 수정 단계를 반복

장점: 코드 수준의 자동화, 쉬운 디버깅, 테스트 소요 시간 단축, 안정성/유지보수성 강화

9. 반응형 화면 크기와 회전에 대응하는 방법

AutoLayout, Size Class들로 화면 크기 변화에 따른 처리.

나: Orientation을 감지해서 Layout Contraint 묶음을 전환해서 대응하는 방식도 사용했었음(iPad Landscape 대응)

10. iOS에서 메모리 관리하는 좋은 방법들

strong, weak, unowned 등을 이해하고 순환 참조가 발생하지 않게 하는 것이다. Profile 등을 사용해서 멤모리 누수나 과도한 사용 등을 찾는데 도움이 될 수 있다.

원문

https://medium.com/gitconnected/mid-level-ios-developer-top-10-interview-questions-5ef63d82e600

--

--

No responses yet