useMemo 依赖数组漏写或多写会有什么症状,如何保证依赖正确?
围绕“useMemo 依赖数组漏写或多写会有什么症状,如何保证依赖正确”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖必须区分漏依赖导致陈旧值与多依赖导致缓存失效两类症状。
性能优化专题面试题第 5 页,显示第 201–250 题,共找到 340 道完整解析,可继续按分类、标签与关键词缩小范围。
按稳定语义路径排序
围绕“useMemo 依赖数组漏写或多写会有什么症状,如何保证依赖正确”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖必须区分漏依赖导致陈旧值与多依赖导致缓存失效两类症状。
解释 useMemo 在开发编辑、初次挂载挂起等情况下可能丢弃缓存,用房间连接示例说明如何把资源创建与清理放在 Effect,并区分缓存、state、ref 和重新挂载后的生命周期。
围绕“什么情况下不该使用 useMemo”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖必须给出廉价计算、非稳定引用需求等不该用的判断标准。
用按标签筛选条目的示例解释 useMemo 何时计算、如何按 Object.is 比较依赖,说明同引用突变、新数组重算、A 到 B 再到 A,以及纯计算与开发严格模式的边界。
围绕“只在挂载时算一次的昂贵初始值,应该用 useMemo 还是 useState 惰性初始化”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖必须答出 useMemo 依赖变化会重算而惰性初始化只算一次这一关键差异。
围绕“与 props 和 state 无关的常量,放 useMemo 里和提升出组件外有何区别”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖必须指出与组件输入无关的值应提升到模块作用域而非占 Hook。
围绕“useTransition 返回的 isPending 适合设计什么样的加载反馈”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖必须答出用 pending 状态做内联弱反馈而非替换内容的 UX 决策。
围绕“React 应用 hydration 阶段的主要性能开销来自哪里,有哪些降低成本的思路”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖必须指出执行整树 JS 与重建虚拟 DOM 的成本,并给出缩减 JS 体积、局部 hydration 等方向。
围绕“为什么把 React Server Action 传给 form 的 action 属性能做到 JavaScript”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明它退化为原生表单 POST 提交、有 JS 时升级为无刷新调用。
以两个关联设置的点击更新解释批处理,说明中间状态、不同点击事件边界、严格模式日志与实际提交,并区分性能合并和业务事务。
围绕“Redis 的 ZUNIONSTORE 如何实现多个榜单的加权汇总,有什么性能注意点”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明 WEIGHTS 与 AGGREGATE 语义及大集合聚合阻塞风险。
围绕“Redis AOF 的 appendfsync 三种策略在数据安全与性能上如何取舍”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖必须答出 always、everysec、no 三档分别最多丢 0、1 秒、由操作系统决定的数据量及对应 IO 开销。
围绕“如何发现 Redis 中的热点键,monitor、hotkeys 参数与代理层统计各有什么代价”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖必须答出 MONITOR 全量抓包性能开销大、OBJECT FREQ 与 --hotkeys 依赖 LFU maxmemory-poli。
围绕“Read Through、Write Through 与 Write Behind 三种缓存模式的职责划分和一致性差”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖必须答出三者中缓存层与数据库的读写责任归属,以及 Write Behind 异步落库带来性能提升与丢数据风险。
围绕“键集分页(keyset pagination)与 offset 分页在查询性能和一致性上有什么差别”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖回答需要围绕必须用 WHERE 排序键定位与 OFFSET 扫描的成本差异说明。
围绕“基于 offset/limit 的分页在数据量大或频繁写入时会出什么问题”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖必须讲清深分页成本与翻页期间数据增删导致的重复或遗漏。
围绕“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 解决什”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明把重工作推迟到转场/交互动画之后以保证动画流畅,以及任务队列堆积时延迟不可控的局限。