Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

코루틴 - 1 면접 질문 #105

Open
Choisehyeon opened this issue May 12, 2024 · 22 comments
Open

코루틴 - 1 면접 질문 #105

Choisehyeon opened this issue May 12, 2024 · 22 comments
Assignees

Comments

@Choisehyeon
Copy link
Collaborator

Choisehyeon commented May 12, 2024

  • Android의 Kotlin 코루틴은 무엇이며 기존 스레딩과 어떻게 다릅니까?
  • 코루틴 맥락에서 "suspending functions"의 개념을 설명할 수 있습니까?
  • 코루틴은 동시성과 병렬성을 구현할 때 스레드에 비해서 어떤 점이 좋냐?
  • launch, async 및 runBlocking 코루틴 빌더 간의 차이점을 설명하십시오.
  • 코루틴 관리에서 CoroutineScope 및 CoroutineContext의 역할은 무엇입니까?
  • 구조화된 동시성이 Android 코루틴에서 작동하는 방식을 설명합니다.
  • Job의 목적은 무엇이며 코루틴의 수명 주기를 관리하는 데 어떻게 사용할 수 있습니까?
  • Dispatchers.Main, Dispatchers.IO 및 Dispatchers.Default의 차이점을 설명하십시오.
  • Kotlin 코루틴에서 예외를 어떻게 처리할 수 있습니까?
  • CoroutineDispatcher는 무엇이며 코루틴 실행을 관리하는 데 왜 중요합니까?
  • "withContext" 기능은 어떻게 작동하며 언제 사용해야 합니까?
  • "supervisorScope"는 "coroutineScope"와 어떻게 다른가요?
  • Kotlin 코루틴의 "Mutex" 개념을 설명하고 사용 사례를 제공합니다.
  • 네트워크 호출을 위해 Retrofit과 함께 코루틴을 어떻게 사용할 수 있습니까?
  • Kotlin 코루틴에서 재시도 및 시간 초과를 처리하는 가장 좋은 방법은 무엇입니까?
  • 실행 중인 코루틴을 취소하는 방법과 하위 코루틴에 미치는 영향을 설명하십시오.
  • CoroutineStart의 개념과 다양한 옵션에 대해 설명하십시오.
  • CoroutineName과 CoroutineExceptionHandler는 무엇이며 왜 중요한가요?
  • 코루틴은 Android 애플리케이션에서 백그라운드 작업 및 UI 업데이트를 관리하는 데 어떻게 도움이 됩니까?
  • Kotlin 코루틴의 "동시성" 및 "병렬성" 개념을 설명하십시오.
  • "coroutineScope"는 무엇이며 코루틴 계층 구조를 관리하는 데 왜 중요합니까?
  • 코루틴 취소 및 리소스 정리를 처리하는 모범 사례는 무엇입니까?
@no1msh
Copy link
Collaborator

no1msh commented May 12, 2024

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

@s9hn
Copy link
Member

s9hn commented May 12, 2024

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

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

@Choisehyeon
Copy link
Collaborator Author

Choisehyeon commented May 12, 2024

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

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

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

@hyemdooly
Copy link
Collaborator

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

@no1msh
Copy link
Collaborator

no1msh commented May 12, 2024

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

@s9hn
Copy link
Member

s9hn commented May 12, 2024

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

  • 부모-자식 관계를 갖는다.
    • 자식은 부모로부터 컨텍스트를 상속받는다.
    • 부모는 모든 자식이 작업을 마칠 때까지 기다린다.
    • 부모 코루틴이 취소되면, 자식 코루틴도 취소된다.
    • 자식 코루틴에서 에러가 발생하면, 부모 코루틴 또한 에러로 소멸한다.

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

@Choisehyeon
Copy link
Collaborator Author

Choisehyeon commented May 12, 2024

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

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

IMG_0DE123E9A09B-2

@hyemdooly
Copy link
Collaborator

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

@no1msh
Copy link
Collaborator

no1msh commented May 12, 2024

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

@s9hn
Copy link
Member

s9hn commented May 12, 2024

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

@Choisehyeon
Copy link
Collaborator Author

Choisehyeon commented May 12, 2024

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

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

@hyemdooly
Copy link
Collaborator

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

@no1msh
Copy link
Collaborator

no1msh commented May 12, 2024

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

@s9hn
Copy link
Member

s9hn commented May 12, 2024

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

@Choisehyeon
Copy link
Collaborator Author

Choisehyeon commented May 12, 2024

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

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

@hyemdooly
Copy link
Collaborator

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

@no1msh
Copy link
Collaborator

no1msh commented May 12, 2024

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

@s9hn
Copy link
Member

s9hn commented May 12, 2024

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

@Choisehyeon
Copy link
Collaborator Author

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

@hyemdooly
Copy link
Collaborator

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

@no1msh
Copy link
Collaborator

no1msh commented May 12, 2024

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

@s9hn
Copy link
Member

s9hn commented May 12, 2024

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants