滴滴高级Android面经:RxJava源码原理、Dagger2源码分析、R8/ProGuard混淆、多渠道构建
上篇聊完中级架构选型,这篇进入滴滴高级面经。高级岗要理解源码——RxJava底层原理、Dagger2代码生成、R8/ProGuard混淆、多渠道构建。今天8道题覆盖滴滴高级面试核心考点。Q1:RxJava的Observable和Observer怎么配合工作?核心流程:Observable.create创建Observable(内部持有ObservableOnSubscribe)→ subscribe时调用ObservableOnSubscribe.subscribe,传入Observer → ObservableOnSubscribe内部调用emitter.onNext/onComplete → emitter把事件传递给Observer的对应方法。操作符链:map操作符创建ObservableMap,subscribe时把上游Observer包装成MapObserver(onNext里调用function转换后传给下游)。flatMap类似但返回Observable,内部合并多个流。背压:上游发送速度下游消费速度时的处理策略。Flowable支持背压(BUFFER/DROP/LATEST),Observable不支持(适合UI事件)。追问:RxJava和Flow怎么选?新项目推荐Flow(协程原生支持、语法更简洁)。老项目有RxJava不需要迁移。Flow的背压通过buffer/conflate/collectLatest处理。Q2:RxJava的Scheduler线程切换原理?