5个常见的Kotlin协程面试问题 - 2

453 阅读4分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 13 天,点击查看活动详情

5个常见的Kotlin协程面试问题

必须了解他们!

简介

协程是作为一个Android开发者需要理解的最重要的概念之一. 它们是Android上异步编程的推荐解决方案. 它们允许我们以更安全, 更可维护和更简洁的方式编写异步代码. 本文包含5个重要的问题, 这些问题很可能在Android开发者角色的面试中出现. 这些问题取自2021年进行的Google DevFest活动中的面试问题清单. 知道这些问题的答案肯定会对你有帮助. 我建议你把这个问题加入你的阅读清单, 这样你就可以在面试前回头看看这篇文章.

续接上篇: 5个常见的Kotlin协程面试问题 - 1

4. 什么是调度器? 解释他们的类型.

调度器允许我们指定在哪个线程池执行协程. 调度器可以被指定为协程上下文的一部分. 有5种类型的调度器可供使用:

  • Default — 默认的调度器用于调度执行CPU密集型操作的冠词, 如过滤一个大的列表.
  • IO — 这是最常见的调度器. 它被用来运行执行I/O操作的程序, 如提出网络请求和从本地数据库获取数据.
  • Main — 主调度器用于在主线程上执行协程. 一般来说, 它不会阻塞主线程. 但是, 如果在这个调度器的上下文中执行了几个包含长时间运行的程序, 那么主线程就有可能被阻塞. 这主要是与 withContext(){}方法结合使用, 将执行的上下文切换到主线程. 如果需要在后台线程上执行一些操作, 并将执行的上下文切换到主线程上以更新用户界面, 这时就会很方便. 由于在Android中不允许从后台线程触摸用户界面, 这使得我们可以在更新用户界面之前将执行的上下文切换到主线程.
  • Unconfined — 这个调度器很少使用. 被安排在这个调度器上运行的程序在它们被启动/恢复的线程上运行. 当它们第一次被调用时, 它们会在被调用的线程中被执行. 当它们恢复时, 它们会在它们被恢复的线程中被恢复. 总之, 它们不局限于任何线程池.
  • Immediate— 立即调度器是最近引入的一个调度器. 它被用来减少向主线程重新调度循环程序的成本. 当使用withContext{}块切换调度器时, 会有一点相关的成本. 使用立即调度器可以确保以下几点.
  1. 如果一个循环程序已经在主调度器中执行, 那么这个循环程序就不会被重新调度, 因此消除了与切换调度器有关的成本.
  2. 如果在主调度器中存在一个等待执行的程序队列, 即时调度器确保程序将尽可能立即被执行.

5. 协程作用域的重要性是什么

协程作用域用来管理在该作用域内启动的协程的生命周期. 它决定了作用域内的协程何时被启动, 停止和重新启动. 协程作用域因以下原因而特别有用:

  1. 允许对协程进行分组. 如果该作用域被取消, 那么所有在该作用域中启动的协程都会被取消. 这有助于防止在不再需要这些程序的时候不必要地使用资源.
  2. 协程作用域有助于定义执行协程的上下文.

最后

好样的!👏🏻!你本来可以做一百万件其他事情. 但你决定坐下来读完这篇文章, 以提高你的知识. 这表明你有决心提高自己的技能! 希望你觉得这篇博文对你有所帮助! 在此, 我想感谢你花时间阅读这篇文章😊. 我祝愿你好运! 快乐的编码👨💻!

开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 13 天,点击查看活动详情