React Native 中 JS 线程被长任务阻塞时用户会看到什么现象,为什么?
围绕“React Native 中 JS 线程被长任务阻塞时用户会看到什么现象,为什么”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明依赖 JS 的动画、触摸响应与渲染全部延迟的表现,以及把重计算移出 JS(原生模块、分片)的方向。
性能优化专题面试题第 6 页,显示第 251–300 题,共找到 340 道完整解析,可继续按分类、标签与关键词缩小范围。
按稳定语义路径排序
围绕“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 访问。
围绕“大量删除后 B+ 树索引为什么会出现空洞和性能下降,如何重建”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要解释删除只标记不收缩导致的稀疏页问题与 REINDEX 的代价。
围绕“B+ 树索引在插入时发生页分裂会带来什么性能影响,如何缓解”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明随机插入导致的分裂、空间利用率下降与顺序递增主键的缓解思路。
围绕“唯一索引和普通索引在查询性能和写入开销上有差别吗”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明唯一索引可提前终止等值查找、写入需唯一性检查的权衡。
围绕“相关子查询为什么可能很慢,什么条件下能被优化器改写为连接”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要明确逐行求值的执行模型与去相关化条件。
围绕“PostgreSQL 聚合函数的 FILTER (WHERE ...) 子句相比 CASE WHEN 条件聚合有什么”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要明确 FILTER 只对满足条件的行做聚合的表达力与可读性差异,不比较执行性能基准。
围绕“UNION 和 UNION ALL 结果何时相同,为什么能确定无重复时应优先用 UNION ALL”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要明确 UNION 隐式去重排序的开销及等价条件判断。
围绕“PostgreSQL 保存点(SAVEPOINT)允许事务内部分回滚,它与重试整条语句的方案有何不同”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖回答需要围绕用单条语句失败后保留已做工作的场景回答,并指出子事务的性能成本。
围绕“高频冲突场景下用 SAVEPOINT 包住语句逐条处理,为什么会带来子事务性能问题”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖解释子事务 ID 分配与可见性判断变复杂带来的开销及批量提交的替代。
围绕“高并发计数器更新同一行成为热点时,为什么性能会急剧下降,有哪些缓解手段”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖从行锁串行化解释瓶颈并比较分桶计数、异步汇总等设计。
围绕“在 Svelte runes 模式下,如何避免不必要的 `$$` 变量重复声明导致的性能开销”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明 `$$` 变量应尽可能复用,避免在每次渲染中创建新实例;不能在循环中重复声明。
围绕“SvelteKit load 函数中如何延迟加载部分数据以优化首屏性能”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明通过 async/await 拆分数据获取并配合 Suspense。
围绕“四层负载均衡和七层负载均衡的区别是什么,各自适合什么场景”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖必须比较两者在转发粒度、协议感知能力、性能开销上的差异并给出选型判断。
围绕“客户端负载均衡和服务端负载均衡的区别是什么,服务发现在其中扮演什么角色”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖必须比较两种模式的调用路径、注册中心依赖和单点/性能特征。
围绕“分布式环境下如何实现全局限流,集中式计数与本地配额各自的问题是什么”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要明确集中式单点性能瓶颈与本地配额精度损失之间的权衡及混合方案。
围绕“TanStack Query 中查询键(Query Key)的结构设计如何影响缓存命中与性能”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明数组形式查询键中不同元素类型对缓存唯一性的影响。
围绕“编辑器打开 monorepo 包时跳到 .d.ts 而不是源码,项目引用层面如何调整”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖回答需要围绕用该选项控制跳转到声明输出还是源码的取舍及对大仓库性能的影响。
围绕“Vite 插件的 transform 钩子如何按文件类型过滤,为什么官方推荐用 filter 而非在钩子里判断”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要答出 transform 钩子的 include/exclude filter 让 Vite 跳过无关模块以省掉 JS 侧调用开销。
围绕“Vue Router 的 afterEach 钩子适合做什么,为什么它不能中断导航”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要明确 afterEach 在导航确认后触发、没有 next 回调因而只能做副作用(埋点、设置标题、滚动处理)。
围绕“首屏优化时,什么情况下应该用 Vue 异步组件延迟加载,什么情况下反而该保留同步引入”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要明确低频或折叠线以下组件适合异步、首屏关键路径组件异步反而增加请求瀑布的判断。
围绕“Vue 的 defineAsyncComponent 如何配置加载中与加载失败状态,delay 和 timeout ”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要明确 delay 避免快速加载时的 loading 闪烁、timeout 判定超时失败,及 loading/error 组件的配合。
围绕“Vue 异步组件因网络波动加载失败后,如何实现自动重试”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要明确官方建议的做法是给 loader 包装带重试与失败兜底的 Promise 逻辑,并说明动态 import 缓存对重试的影响。
围绕“如何用 Vue Router 的组件内守卫实现表单未保存时离开页面的二次确认”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要明确用 beforeRouteLeave(或组合式 onBeforeRouteLeave)拦截并弹确认,结合脏状态标记决定是否放行。
解释 MaybeRefOrGetter 与 toValue 的输入约定,说明为什么必须在 computed 或 watchEffect 内归一化读取,以及普通值快照、props getter 和函数值歧义。
按请求身份设计异步状态,说明参数更新、错误重置、取消与过期结果保护,给出可注入加载器的实现,并区分首屏 SSR 数据与客户端请求封装。
解释当前组件实例上下文如何决定钩子归属,区分同步注册和异步回调,并说明 script setup 顶层 await 的编译支持、SSR 与副作用清理。
解释 use 前缀的沟通作用、普通对象包 ref 的解构优势,以及 reactive 返回值、动作方法、初始参数和可写状态接口的取舍。
解释只读代理如何限制正常调用者直接写入,同时保留内部更新的可观察性;区分 readonly、快照、冻结和权限控制,并设计有校验的动作接口。
对比模块单例和每次调用创建的 ref,说明多组件隔离、应用级状态、SSR 请求污染、外部监听寿命及测试重置,避免把组合式函数误当作天然独立实例。
围绕“在 Vue 组合式函数里注册事件监听或定时器,如何保证组件卸载后不泄漏”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要明确在函数内部用 onUnmounted 或 watch 返回的停止句柄自动清理,使调用方无感知。
按纯计算、响应式副作用、生命周期与注入依赖选择测试方式,说明 effectScope、最小宿主、可控 Promise 和卸载清理,并区分 Node 模拟与真实浏览器验证。
从属性来源、命名冲突和隐式通信对比 composable 与 mixin,说明显式参数和返回值的价值,以及迁移生命周期、状态范围和旧行为时的边界。
区分逻辑封装与依赖获取,说明组合式函数和 provide/inject 如何配合,比较显式参数、最近提供者、子树隔离、只读状态和缺失依赖处理。
围绕“Vue Router 在组合式 API 中如何使用组件内守卫,同一路由组件参数变化复用时该用哪个钩子”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要明确 onBeforeRouteUpdate 捕获同组件参数变化、onBeforeRouteLeave 捕获离开,且两者需在 set。
围绕“Vue 项目里路由懒加载的分包如何通过 prefetch 或 preload 提前获取而不阻塞首屏”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要明确 prefetch 利用浏览器空闲带宽预取后续路由、preload 与当前路由并行加载关键资源,及魔法注释配置方式。