Archive/잡동사니

iOSInterviewquestions - Rx

lgvv 2022. 4. 2. 03:02

iOSInterviewquestions - Rx

 

목적 : 배울때는 잘했는데, 나이가 먹으니까 자꾸 까먹어서 아래 깃허브 글을 바탕으로 꾸준히 이론 공부를 하고자 함. 물론 설명은 내가 잘 아는게 목적이라 철저히 나를 이해시킬 수 있는 나의 언어로 작성.

 

작성일 : 2022년 4월 2일 

 - README: 추후에 수정이 있을 경우 아래에 날짜와 시각을 작성하고, 수정 내용을 간략히 정리해주세요.

 

예시)

(수정) oooo년 oo월 oo일 oo시 oo분 

 - 변경내용 : xxx에 대한 자료를 보강

 

✅ 공부의 기준이 되는 깃허브 글

https://github.com/JeaSungLEE/iOSInterviewquestions

 

GitHub - JeaSungLEE/iOSInterviewquestions: 👨🏻‍💻👩🏻‍💻iOS 면접에 나올 질문들 총 정리

👨🏻‍💻👩🏻‍💻iOS 면접에 나올 질문들 총 정리 . Contribute to JeaSungLEE/iOSInterviewquestions development by creating an account on GitHub.

github.com

 

 

✅ Rx

  • Reactive Programming이 무엇인지 설명하시오.
    • 비동기적인 데이터 흐름을 처리하는 것을 말합니다. 데이터를 관찰(observe)하고 있다가 무언가 변화가 생기면 그에 따른 데이터 혹은 UI를 처리합니다. 비동기 프로그래밍이 필요한 이유는 예를 들어 사용자의 인풋 이벤트가 있을때, 그에 따른 액션 
  • RxSwift를 왜 사용하는지 설명하시오.
    •  왜 Rx를 사용하냐면 iOS SDK에서 클로저, 노티피케이션, 딜리게이트 등을 이용해서 비동기 처리가 가능하다. 하지만 UI 업데이트를 명시적으로 호출해야 하거나 콜백 지옥이 생기는 등의 문제가 생길 수 있다. 코드 가독성이나 편리성을 위해 사용한다. 또한 이렇게 rx를 이용해서 일관된 코드를 작성하게 되면 확장이 불가능한 아케텍쳐 패턴을 설계할 수 있다.
  • RxSwift의 단점을 설명하시오.
    • 우선 러닝커브가 매우 높다. 나도 배우고 사용하는데 정말 오랜 시간이 걸렸다. 또한 메모리가 누락되어서 발생하는 문제도 종종 생기는데, 즉 순환 참조 사이클을 피할 수 있는 부분을 작성하여 피해야한다. 그 뿐만이 아니다. 이러한 러닝커브로 인하여 협업에서 다른 사람들도 충분히 이 수준에 올라야 한다는 점이다. 
  • RxSwift에서 Hot Observable과 Cold Observable의 차이를 설명하시오.
    • Hot은 구독하는 순간부터 시퀀스의 중간에 아이템을 방출해도 그 순간부터 이벤트를 전달 - UI이벤트
    • Cold는 구독하는 순간에 시퀀스의 처음부터 끝까지 전부 전달 - HTTP
  • Subject의 종류와 차이점에 대해 설명하시오.
    • Publish : 초기값을 갖지 않고 새로운 값을 방출. 구독 후에 방출된 값만 수신 가능
    • Behavior : 하나의 초기값을 가진 상태로 시작하고 초기값 혹은 최신값을 방출
    • Replay : 버퍼를 두고 있으며, 정해진 버퍼만큼 이전 값도 방출함
  • Subject와 drive의 차이를 설명하시오.
    • Observable이자 Observer기능을 할 수 있어서 구독도 할 수 있고 이벤트를 방출할 수도 있다.
    • Relay는 Suject를 래핑해서 error나 complete가 없어서 끊기지 않는다.
    • Driver는 UI에 특화된 Observable이다 이러한 것을 Traits이라고 한다. 에러를 방출할 수 없고 메인 스케줄러에서 관찰 및 구독한다.
  • Single, Completable, Maybe의 차이점에 대해 설명하고, 언제 적용하면 좋을지 설명하시오
    • Single은 특수한 Observable로 .success, .error 중 한번만 내보낼 수잇는 시퀀스 내부적으로 succes는 next + completed로 이루어져 있다. 파일 저장, 다운로드, 디스크에서 데이터 로드 등 기본적으로 값을 생성하는 모든 비동기 작업에서 유용하다. 성공 시 정확히 하나의 요소를 내보내는 래핑 작업에 사용된다. 시퀀스에서 단일 요소를 사용하려는 의도를 더 잘 표현하고 시퀀스가 둘 이상의 요소를 방출하는지 확인하기 위해 구독 오류가 발생된다.
    • Maybe는 Observable이 성공적으로 완료되면 값을 방출하지 않을 수도 있다는 점을 제외하고는 Single과 유사
    • Completable은 구독이 삭제되기 전에 단일 completed 또는 error 이벤트만 생성되도록 허용한다. 비동기 작업이 성공했는지 여부만 알면 되는 사용 사례가 많아서 생겨났다.
    • (참고) https://jwonylee.tistory.com/152

'Archive > 잡동사니' 카테고리의 다른 글

iOSInterviewquestions - iOS  (1) 2022.04.06
iOSInterviewquestions - ARC  (0) 2022.04.02
iOSInterviewquestions - Swift  (0) 2022.04.02
iOSInterviewquestions - Autolayout  (0) 2022.04.02
[Swift] 10진수를 2진수로 바꾸는 방법  (0) 2022.03.19