React Native FlatList 的 windowSize、maxToRenderPerBatch、initialNumToRender 如何影响长列表性能?
围绕“React Native FlatList 的 windowSize、maxToRenderPerBatch、ini”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖要求区分渲染批次、窗口范围与首屏数量的作用并给出调优判断。
React Native · 性能优化面试题第 1 页,显示第 1–50 题,共找到 50 道完整解析,可继续按分类、标签与关键词缩小范围。
按稳定语义路径排序
围绕“React Native FlatList 的 windowSize、maxToRenderPerBatch、ini”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖要求区分渲染批次、窗口范围与首屏数量的作用并给出调优判断。
围绕“React Native 中横向 FlatList 嵌在纵向 ScrollView 里有哪些坑,为什么官方建议同方向”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖要求说明 VirtualizedList 警告的来源与嵌套失效/性能问题及替代结构。
围绕“React Native 旧 Bridge 的异步序列化在大对象与高频调用下会出现什么瓶颈”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要解释 JSON 化、批量队列与跨线程拷贝的成本。
围绕“React Native 原生模块初始化过早为什么会拖慢启动,如何判定是否该延迟初始化”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖回答需要围绕必须用首帧前是否被 JS 引用、是否占用主线程和是否注册广播做判断。
围绕“为什么 React Native 中用 Animated 改变 width/height 无法走原生驱动,代价是什么”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要解释布局属性需要走 Yoga 布局与 JS 线程每帧更新导致掉帧,并给出 transform 缩放或 LayoutAnimation。
围绕“React Native 列表项入场动画为什么容易和 FlatList 虚拟化冲突”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明 item 复用导致动画状态残留、滚动中重复触发入场的问题,及按 key 记录已动画状态的解法。
围绕“React Native Animated 的 useNativeDriver 把什么工作移出了 JS 线程,支持哪”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明动画声明序列化后在原生侧执行、每帧不再过桥,并列出仅支持 transform/opacity 等非布局属性的限制。
围绕“React Native 中每帧 setState 驱动动画为什么是反模式”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明 60fps 下每帧触发 React 渲染与桥接的开销,并引出 Animated 或原生驱动方案。
围绕“React Native 应用冷启动慢,应如何分阶段定位是原生初始化还是 JS 执行耗时”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖必须给出区分原生加载、bundle 执行、首屏渲染三阶段的测量思路与对应优化入口。
围绕“React Native 中频繁的桥(Bridge)通信为什么成为性能瓶颈”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要解释异步 JSON 序列化消息的成本与高频小消息(滚动、手势)场景的问题,并指出合并通信或原生化处理的方向。
围绕“为什么 React Native 线上包中残留 console.log 会造成可感知的性能损耗”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明日志序列化与调试通道开销在低端机上累积成卡顿,以及构建期 babel 插件剔除的做法。
围绕“社区常见替代方案(如 Flash List)相对 React Native FlatList 解决的核心问题是什么”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明 FlatList 空白/重挂载痛点与回收复用(recycling)思路的差异,并提示以官方 FlatList 文档为基线对照,。
围绕“React Native FlatList 快速滚动出现白屏(blank cells)该如何定位与解决”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖必须给出渲染速度跟不上滚动速度的诊断思路及 maxToRenderPerBatch、windowSize 等取舍。
围绕“React Native FlatList 的 extraData 解决的是什么更新失效问题”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明 PureComponent 浅比较导致 data 之外的状态(如选中 id)不触发重渲染,以及 extraData 的正确用法。
围绕“React Native FlatList 的 initialNumToRender 设置过小或过大各有什么后果”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖必须分别回答首屏白屏风险与首屏渲染阻塞两种失败模式,并给出按首屏可视行数取值的原则。
围绕“React Native FlatList 为什么建议固定行高或使用 getItemLayout”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要解释动态测量带来的布局计算成本与 scrollToIndex/初始滚动位置失效问题。
围绕“React Native FlatList 的 keyExtractor 为什么影响列表更新性能与正确性”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明不稳定 key 导致整行重挂载、状态丢失的机制,以及应选稳定唯一 id。
围绕“React Native FlatList 的 maxToRenderPerBatch 与 updateCellsB”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明批量渲染大小与批次间隔对掉帧和白屏的此消彼长。
围绕“React Native FlatList 的列表项为什么应该做成纯组件并避免行内匿名回调”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要解释 renderItem 引用变化与 item 数据变化触发的重渲染链路,以及用 memo/稳定回调的隔离方式。
围绕“React Native FlatList 的 removeClippedSubviews 什么时候有用、什么时候会”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明该属性在 Android 上裁剪屏幕外视图省内存的收益,以及绝对定位/变换内容被误裁剪的典型问题。
围绕“React Native 中父组件状态频繁变化导致整个 FlatList 重渲染该怎么治理”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖必须给出状态下沉、拆分组件、把 renderItem 与 data 引用稳定化等手段,并区分与 extraData 场景的边界。
围绕“React Native 中长列表为什么应该用 FlatList 而不是 ScrollView”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明 ScrollView 一次性渲染全部子项带来的内存与首屏开销,以及 FlatList 按需渲染的区别。
围绕“React Native FlatList 的窗口化(windowing)机制是怎样工作的”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要解释可视窗口外项目被移除/复用的策略与 windowSize 的默认行为。
围绕“React Native 性能优化中 60fps 的帧预算意味着什么,JS 帧与 UI 帧有何区别”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要解释每帧约 16.7ms 预算,以及官方区分的 JS 帧率与 UI 帧率各自掉帧的不同含义。
围绕“React Native 手势跟手动画要保证 60fps,关键约束是什么”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明手势事件经 JS 线程处理时,JS 忙即掉帧,因此要让跟手逻辑留在 UI/原生侧。
围绕“React Native 横向卡片列表如何用 FlatList 实现吸附滚动且不掉帧”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明 snapToInterval/declerationRate 与 getItemLayout 配合的必要性,以及大卡片下的渲染。
围绕“React Native 图片解码发生在哪个线程,为什么仍可能让 UI 掉帧”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明解码可 offload 但位图上传 GPU 与布局仍在主/UI 线程,大图或密集图片仍掉帧。
围绕“React Native Image 在 iOS 与 Android 上的缓存行为有什么差异,会带来什么实战问题”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明 Android 依赖底层 Fresco 缓存而 iOS 依赖原生 URL 缓存、强制刷新与更新不生效的处理方式,不评价第三方缓。
围绕“React Native Image 组件在列表中使用时有哪些基础性能要求”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明尺寸必须明确、resizeMode 选择对解码与布局的影响。
围绕“React Native 列表图片加载时的闪烁与布局跳动如何从组件层面避免”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖必须给出固定临时标记尺寸、fadeDuration(Android)控制等手段,并说明跳动根源是图片到达后尺寸重排。
围绕“React Native 直接渲染几 MB 的原图为什么会造成卡顿和内存飙升”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要解释解码后位图按像素占内存的放大关系,以及服务端缩略图/指定尺寸的解决路径。
围绕“React Native 中本地静态图片与远程图片在打包与渲染性能上有哪些本质区别”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明 require 静态资源随包体注册与远程按需加载的差异,以及 require 动态路径不可用的原因。
围绕“React Native Image.prefetch 适合什么场景,滥用会有什么代价”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明提前解码到磁盘缓存对即将进入屏幕的图片的收益,以及预取过多占带宽与缓存挤出的代价。
围绕“React Native 的 InteractionManager.runAfterInteractions 解决什”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明把重工作推迟到转场/交互动画之后以保证动画流畅,以及任务队列堆积时延迟不可控的局限。
围绕“React Native 中 JS 线程被长任务阻塞时用户会看到什么现象,为什么”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明依赖 JS 的动画、触摸响应与渲染全部延迟的表现,以及把重计算移出 JS(原生模块、分片)的方向。
围绕“React Native 旧架构中 JS 线程、UI(主)线程与原生模块线程分别负责什么”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明 JS 执行业务逻辑、UI 线程负责布局绘制与触控、桥负责异步通信的职责划分。
围绕“React Native LayoutAnimation 适合哪类动画,什么时候不够用”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明其适合布局变化的整体过渡、声明简单,但不支持精细手势跟随与逐元素编排,并注意 Android 需手动开启。
围绕“React Native 聊天类双向加载列表用 FlatList 需要注意哪些问题”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明 inverted 的工作原理、向头部插入数据导致的滚动位置跳动及 maintainVisibleContentPosition。
围绕“React Native 长列表内存持续上涨应如何从列表角度排查”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖必须列出 key 不稳定导致挂载累积、item 内订阅未清理、windowSize 过大等列表特异性原因。
围绕“React Native 中 FlatList 嵌套在 ScrollView 里为什么既报警告又伤性能”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要解释同向嵌套使虚拟化失效、全部子项被渲染的原因,并给出 Header/Footer 化或分段拆分的替代结构。
围绕“React Native 新架构(Fabric/JSI)相对旧桥接模型在性能上解决了什么核心问题”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明 JSI 同步调用与 Fabric 渲染管线消除异步桥瓶颈的核心收益,并标注这是新架构专属内容。
围绕“React Native FlatList 的 onEndReached 被重复触发或过早触发该怎么处理”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要解释 threshold 的语义、首屏不足一屏导致立即触发的现象,以及用加载中标志位去重的模式。
围绕“如何用 React Native 内置 Perf Monitor 判断卡顿发生在 JS 线程还是 UI 线程”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖必须给出根据两条帧率曲线定位瓶颈侧的判读方法及对应的下一步排查方向。
围绕“如何用 Hermes 的采样 profiling 定位 React Native 中的 JS 热点函数”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明通过 Hermes profile 找出耗时 JS 函数并据此优化渲染/计算的流程,并标注依赖 Hermes 引擎。
围绕“React Native 中监听 ScrollView 的 onScroll 为什么必须设置 scrollEvent”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明 iOS 默认不连续派发滚动事件、回调频率与 JS 线程压力的关系,并引出把滚动逻辑移到原生/动画线程的方向。
围绕“React Native SectionList 在大量分组数据下有哪些特有性能注意点”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明 sections 结构变化、sticky header 与每节渲染成本的关系,并指出何时应改用 FlatList 自行分组。
围绕“React Native 页面转场卡顿的官方排查思路是什么”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖回答要按官方性能文档说明转场期间 JS 线程过载是主因,以及 InteractionManager、减少转场期渲染的缓解手段。
围绕“Android 上如何用 Systrace 分析 React Native 应用的掉帧来源”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明 Systrace 能看到 JS/UI/原生各线程时间线、区分帧丢失责任侧的方法,并标注 Android 限定。
围绕“React Native 的 inline requires(内联引用)优化如何缩短启动时间”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明模块延迟加载减少启动期 JS 执行量的原理,及用 metro 配置与分析工具验证收益的方法。
围绕“什么场景下应该直接使用 React Native VirtualizedList 而不是 FlatList”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明 FlatList 是 VirtualizedList 的便利封装,直接使用的典型动机是非普通数组数据或自定义 item 访问。