面试题答案
一键面试1. Buffer策略
- 原理:Flow会使用一个缓冲区来存储生产者产生的数据。当消费者处理速度较慢时,数据先存入缓冲区,缓冲区满了之后,生产者会暂停生产,直到缓冲区有空间。
- 应用场景:适用于消费者处理速度偶尔较慢,但整体处理能力能够跟上生产者的场景。例如在一个数据采集并处理的应用中,数据采集端产生数据较快,但处理端只是偶尔因为系统资源紧张处理变慢,使用
buffer
策略可以平滑数据处理,防止数据丢失。
2. Conflate策略
- 原理:Flow只保留最新的数据,丢弃旧的数据。当消费者处理速度慢时,新产生的数据会覆盖旧数据,保证消费者始终处理的是最新状态。
- 应用场景:适用于只关心最新数据的场景,如实时监控应用中,监控数据不断更新,消费者只需要处理最新的监控数据,旧数据即使丢弃也不影响业务逻辑。
3. CollectLatest策略
- 原理:当新的数据产生时,Flow会取消当前正在执行的消费者协程,重新启动一个新的协程来处理最新的数据。
- 应用场景:适用于需要立即响应最新数据变化的场景。比如在地图导航应用中,用户位置实时更新,应用需要根据最新位置重新规划路径,
collectLatest
策略能确保每次位置更新都能及时处理,避免处理旧位置数据。