woowacourse-study / 2023-BookOverFlow

'5기 안드로이드'라서 최강 스터디인건가? 아니면 최강 스터디라서 '5기 안드로이드'인가?
9 stars 0 forks source link

코루틴 - 1 면접 질문 #105

Open Choisehyeon opened 3 months ago

Choisehyeon commented 3 months ago
no1msh commented 3 months ago

Android의 Kotlin 코루틴은 무엇이며 기존 스레딩과 어떻게 다릅니까?

s9hn commented 3 months ago

코루틴 맥락에서 "suspending functions"의 개념을 설명할 수 있습니까?

코루틴이란, 루틴의 일종으로 협동 루틴을 의미한다. 1950년대에 등장한 개념으로, 코루틴은 마지막 행동이 중단되었던 지점부터 재개하게 된다. 중단 함수란, 일반 함수에 suspend 키워드를 붙임으로써 중단될 수 있는 함수임을 명시한다. 해당 함수는 컴파일 단계에서 continuation객체가 매개변수에 추가되며, 해당 객체에서 함수에 대한 정보 및 중단지점들을 관리한다. 따라서 중단 이후 재개될 때, 정보의 손실없이 재개할 수 있게 된다.

Choisehyeon commented 3 months ago

코루틴은 동시성과 병렬성을 구현할 때 스레드에 비해서 어떤 점이 좋냐?

코루틴은 매우 가벼워서 수백만 개의 코루틴을 생성하고 전환하는 것이 수백 개의 스레드를 생성하고 전환하는 것보다 훨씬 효율적이다. 스레드는 생성, 전환, 동기화에 큰 비용이 들지만, 코루틴은 이러한 비용이 매우 적다.

스레드는 동시성을 보장하기 위해 Context Switching이 이루어지는데 이는 비용이 많이 드는 작업이다. 코루틴은 중단했다가 다시 실행할 수 있는 컴포넌트이기 때문에 Context Switching이 이루어지지 않아도 동시성을 보장할 수 있다.

hyemdooly commented 3 months ago

launch, async 및 runBlocking 코루틴 빌더 간의 차이점을 설명하십시오.

no1msh commented 3 months ago

코루틴 관리에서 CoroutineScope 및 CoroutineContext의 역할은 무엇입니까?

s9hn commented 3 months ago

구조화된 동시성이 Android 코루틴에서 작동하는 방식을 설명합니다.

안드로이드에선 viewModelScope 확장 프로퍼티를 사용하며, 자식 코루틴들에게 supervisorJob과 Main.immediate 디스패처를 전달하며, 생명주기에 맞게 구조화된 코루틴을 관리한다.

Choisehyeon commented 3 months ago

Job의 목적은 무엇이며 코루틴의 수명 주기를 관리하는 데 어떻게 사용할 수 있습니까?

수명 주기를 가지고 있으며, 취소 가능하기 때문에 코루틴의 상태와 실행을 제어할 수 있는 역할을 한다. Job을 통해 코루틴의 상태를 알 수 있고 그걸 통해 수명 주기를 관리할 수 있다.

IMG_0DE123E9A09B-2

hyemdooly commented 3 months ago

Dispatchers.Main, Dispatchers.IO 및 Dispatchers.Default의 차이점을 설명하십시오.

no1msh commented 3 months ago

Kotlin 코루틴에서 예외를 어떻게 처리할 수 있습니까?

s9hn commented 3 months ago

CoroutineDispatcher는 무엇이며 코루틴 실행을 관리하는 데 왜 중요합니까?

Choisehyeon commented 3 months ago

"withContext" 기능은 어떻게 작동하며 언제 사용해야 합니까?

코루틴 스코프 함수로 코루틴 컨텍스트를 바꿀 수 있는 coroutineScope이다. withContext(Dispatcher.IO)에 인자로 전환하고 싶은 컨텍스트를 넣으면 다른 컨텍스트에서 코드 블록을 진행하고 실행이 완료되면 원래 컨텍스트로 돌아온다. withContext는 특히 다른 디스패처에서 작업을 실행하거나, 백그라운드 작업 완료 후 메인 스레드로 결과를 전달할 때 유용하다.

hyemdooly commented 3 months ago

"supervisorScope"는 "coroutineScope"와 어떻게 다른가요?

no1msh commented 3 months ago

Kotlin 코루틴의 "Mutex" 개념을 설명하고 사용 사례를 제공합니다.

s9hn commented 3 months ago

네트워크 호출을 위해 Retrofit과 함께 코루틴을 어떻게 사용할 수 있습니까?

Choisehyeon commented 3 months ago

Kotlin 코루틴에서 재시도 및 시간 초과를 처리하는 가장 좋은 방법은 무엇입니까?

withTimeout을 사용하여 시간 초과를 처리할 수 있다. withTimeout 인자로 들어온 람다식을 실행할 때 시간 제한이 있다. 실행하는데 시간이 너무 오래 걸리면 람다식이 취소되고 TimeCancellationException을 던진다.

hyemdooly commented 3 months ago

실행 중인 코루틴을 취소하는 방법과 하위 코루틴에 미치는 영향을 설명하십시오.

no1msh commented 3 months ago

CoroutineStart의 개념과 다양한 옵션에 대해 설명하십시오.

s9hn commented 3 months ago

CoroutineName과 CoroutineExceptionHandler는 무엇이며 왜 중요한가요?

Choisehyeon commented 3 months ago

코루틴은 Android 애플리케이션에서 백그라운드 작업 및 UI 업데이트를 관리하는 데 어떻게 도움이 됩니까

hyemdooly commented 3 months ago

Kotlin 코루틴의 "동시성" 및 "병렬성" 개념을 설명하십시오.

no1msh commented 3 months ago

"coroutineScope"는 무엇이며 코루틴 계층 구조를 관리하는 데 왜 중요합니까?

s9hn commented 3 months ago

코루틴 취소 및 리소스 정리를 처리하는 모범 사례는 무엇입니까?