
Framework专项聊完,进入Compose专项。Jetpack Compose是Android UI未来方向,腾讯新项目已大量采用。高级岗不光问"会不会写",要问编译原理和性能机制。Compose面试最大坑:用View思维答题。状态管理是重组不是setter,生命周期是Side Effects不是Activity回调。今天8道题覆盖核心机制。Q1:Compose编译器插件做了什么?为什么需要它?Compose的@Composable函数不是普通函数——编译器插件把它们转换成支持重组的特殊函数。编译器做了什么:给每个@Composable函数加一个隐藏的Composer参数,Composer管理Slot Table(存储组合树的状态和结构)。函数体被改写成增量更新逻辑——参数没变就跳过执行(智能重组)。为什么需要编译器插件:手写增量更新代码太复杂。编译器插件把声明式的@Composable转换成高效的增量执行代码,开发者只写简单函数编译器帮你做优化。追问:Compose的稳定性推断(Stability Inference)是什么?编译器分析参数类型是否"稳定"(不可变或变化可追踪)。稳定类型的参数没变时跳过重组,不稳定类型每次都重组。所以用data class和immutableList比mutableList性能好——前者是稳定的后者不是。Q2:重组(Recomposition)机制?什么时候触发?重组:状态变化时Compose重新执行受影响的@Composable函数更新UI。只有读取了变化状态的