腾讯UI动画专项面经:RecyclerView源码、DiffUtil原理、转场动画、ConstraintLayout

📅 2026/7/31 6:32:59
腾讯UI动画专项面经:RecyclerView源码、DiffUtil原理、转场动画、ConstraintLayout
网络编程专项聊完,进入UI与动画专项。高级岗UI方向考底层原理——RecyclerView四级缓存、DiffUtil算法、SharedElement转场、ConstraintLayout布局算法。UI面试经常让你画流程图或写关键代码,能说清楚才是真懂。今天8道题覆盖四大方向。Q1:RecyclerView的四级缓存机制?Scrap:屏幕可见的ViewHolder,layout期间detach→attach不重新bind。分AttachedScrap和ChangedScrap(数据变化需重新bind)。CachedViews:刚滑出屏幕的ViewHolder(默认2个),同position直接复用不bind。超容量推到Pool。ViewCacheExtension:自定义缓存层,大部分项目不用。RecycledViewPool:按viewType缓存(每种默认5个),复用时需重新bind。多个RecyclerView可共享Pool。复用顺序:Scrap → CachedViews → Extension → Pool → onCreateViewHolder。Q2:RecyclerView滑动时的复用流程?用户向下滑:顶部item滑出屏幕放到Scrap底部需要新item,查Scrap(通常位置不同没有)查CachedViews——position匹配直接复用