MST

星途 面试题库

面试题:Kotlin 传感器数据采集与处理中的并发优化

在 Kotlin 开发的传感器数据采集系统中,多个传感器可能同时发送数据,为了高效处理这些数据,需要使用并发编程。假设有一个函数 `processSensorData(data: SensorData)` 用于处理单个传感器数据,现在有一个 `List<SensorData>` 集合,要求使用 Kotlin 的协程或其他并发机制,尽可能快地处理完所有数据,并返回处理结果的集合。请写出实现代码,并说明你选择该并发方案的理由。
31.0万 热度难度
编程语言Kotlin

知识考点

AI 面试

面试题答案

一键面试
import kotlinx.coroutines.*

data class SensorData(val value: Int)

fun processSensorData(data: SensorData): Int {
    // 模拟数据处理
    delay(100)
    return data.value * 2
}

suspend fun main() {
    val sensorDataList = listOf(SensorData(1), SensorData(2), SensorData(3))
    val resultList = withContext(Dispatchers.Default) {
        sensorDataList.map { data ->
            async { processSensorData(data) }
        }.awaitAll()
    }
    println(resultList)
}

选择 Dispatchers.Default 配合协程 async/await 的理由

  1. 简单高效:Kotlin 的协程通过 async 函数可以轻松地启动异步任务,awaitAll 函数用于等待所有异步任务完成并收集结果,这种方式简洁明了,易于理解和实现。
  2. 资源管理Dispatchers.Default 调度器适用于 CPU 密集型任务,它使用一个共享的线程池,能够有效地管理线程资源,避免过多线程创建带来的开销,在处理多个传感器数据时能保证系统的整体性能。
  3. 并发处理async 函数创建的多个协程任务可以并发执行,从而充分利用多核 CPU 的优势,加快所有传感器数据的处理速度,满足尽快处理完所有数据的需求。