<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>前端 on 洛克里亚的五度 博客</title>
    <link>https://lv-blog.pages.dev/tags/%E5%89%8D%E7%AB%AF/</link>
    <description>Recent content in 前端 on 洛克里亚的五度 博客</description>
    <generator>Hugo</generator>
    <language>zh</language>
    <lastBuildDate>Wed, 15 Jul 2026 00:46:10 +0800</lastBuildDate>
    <atom:link href="https://lv-blog.pages.dev/tags/%E5%89%8D%E7%AB%AF/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Flutter 相关面试题整理</title>
      <link>https://lv-blog.pages.dev/posts/programming/frontend/flutter-interview-questions/</link>
      <pubDate>Wed, 15 Jul 2026 00:46:10 +0800</pubDate>
      <guid>https://lv-blog.pages.dev/posts/programming/frontend/flutter-interview-questions/</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;从互联网整理而来&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id=&#34;一dart-基础&#34;&gt;一、Dart 基础&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;Dart 的数据类型有哪些？&lt;/li&gt;
&lt;li&gt;var、final、const 的区别&lt;/li&gt;
&lt;li&gt;Dart 中 null safety 是什么，如何使用？&lt;/li&gt;
&lt;li&gt;late 关键字作用与使用场景&lt;/li&gt;
&lt;li&gt;Dart 函数可选参数、命名参数、位置参数区别&lt;/li&gt;
&lt;li&gt;箭头函数适用范围&lt;/li&gt;
&lt;li&gt;Dart 异步：Future、async/await 原理&lt;/li&gt;
&lt;li&gt;Stream 与 Future 区别，StreamController 使用&lt;/li&gt;
&lt;li&gt;sync*、async*、yield、yield each 作用&lt;/li&gt;
&lt;li&gt;Dart 类中 extends、implements、mixin 区别&lt;/li&gt;
&lt;li&gt;mixin 有什么限制，能否构造函数传参&lt;/li&gt;
&lt;li&gt;抽象类与接口区别&lt;/li&gt;
&lt;li&gt;泛型 T、?T、T?、required T 区别&lt;/li&gt;
&lt;li&gt;Dart 单例几种实现方式&lt;/li&gt;
&lt;li&gt;工厂构造函数 factory 作用&lt;/li&gt;
&lt;li&gt;常量构造函数使用条件&lt;/li&gt;
&lt;li&gt;级联运算符 .. 原理&lt;/li&gt;
&lt;li&gt;空值操作符 ?.、??、??= 用法&lt;/li&gt;
&lt;li&gt;Dart 枚举进阶用法，能否自定义属性方法&lt;/li&gt;
&lt;li&gt;Isolate 是什么，和线程区别，通信方式&lt;/li&gt;
&lt;li&gt;Isolate 共享内存吗，数据传递限制&lt;/li&gt;
&lt;li&gt;Zone 作用是什么&lt;/li&gt;
&lt;li&gt;Dart 垃圾回收机制&lt;/li&gt;
&lt;li&gt;函数一等公民体现在哪里&lt;/li&gt;
&lt;li&gt;typedef 作用与场景&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;二flutter-框架核心原理&#34;&gt;二、Flutter 框架核心原理&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;Flutter 三棵树：Widget、Element、RenderTree 关系&lt;/li&gt;
&lt;li&gt;StatelessWidget 和 StatefulWidget 底层差异&lt;/li&gt;
&lt;li&gt;State 生命周期完整流程&lt;/li&gt;
&lt;li&gt;initState、didChangeDependencies、build、didUpdateWidget、dispose 执行时机&lt;/li&gt;
&lt;li&gt;setState 底层更新机制&lt;/li&gt;
&lt;li&gt;Widget 为什么是不可变的 immutable&lt;/li&gt;
&lt;li&gt;Element 作用，Element 复用逻辑&lt;/li&gt;
&lt;li&gt;RenderObject 职责是什么&lt;/li&gt;
&lt;li&gt;Key 的作用，几种 Key 区别（ValueKey、ObjectKey、UniqueKey、GlobalKey）&lt;/li&gt;
&lt;li&gt;GlobalKey 使用场景与隐患&lt;/li&gt;
&lt;li&gt;LocalKey 解决什么问题&lt;/li&gt;
&lt;li&gt;Widget 重建流程，哪些情况会触发重建&lt;/li&gt;
&lt;li&gt;什么是 const Widget，好处是什么&lt;/li&gt;
&lt;li&gt;Flutter 渲染流程：布局、绘制、合成步骤&lt;/li&gt;
&lt;li&gt;布局约束流程：Constraints 传递规则&lt;/li&gt;
&lt;li&gt;父布局约束如何限制子控件尺寸&lt;/li&gt;
&lt;li&gt;RepaintBoundary 作用，何时使用&lt;/li&gt;
&lt;li&gt;Layer 树作用，缓存机制&lt;/li&gt;
&lt;li&gt;Flutter 与原生 Android/iOS 渲染区别&lt;/li&gt;
&lt;li&gt;Skia 引擎作用&lt;/li&gt;
&lt;li&gt;Impeller 渲染引擎对比 Skia 优势&lt;/li&gt;
&lt;li&gt;Flutter 绘制原理，Canvas、Paint 流程&lt;/li&gt;
&lt;li&gt;PipelineOwner 作用&lt;/li&gt;
&lt;li&gt;WidgetsBinding、SchedulerBinding 职责&lt;/li&gt;
&lt;li&gt;帧调度流程：Vsync、帧回调执行顺序&lt;/li&gt;
&lt;li&gt;transientCallbacks、persistentCallbacks、postFrameCallbacks 区别&lt;/li&gt;
&lt;li&gt;Flutter 热重载原理，热重启区别&lt;/li&gt;
&lt;li&gt;编译模式：debug/profile/release 差异&lt;/li&gt;
&lt;li&gt;AOT、JIT 编译区别&lt;/li&gt;
&lt;li&gt;Flutter 页面路由底层实现原理&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;三布局--基础组件&#34;&gt;三、布局 &amp;amp; 基础组件&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;Row Column Flex 布局区别，主轴交叉轴概念&lt;/li&gt;
&lt;li&gt;MainAxisAlignment、CrossAxisAlignment 所有枚举值含义&lt;/li&gt;
&lt;li&gt;Expanded、Flexible 区别，flex 参数作用&lt;/li&gt;
&lt;li&gt;Stack、Positioned 布局规则&lt;/li&gt;
&lt;li&gt;Align、Center 底层关系&lt;/li&gt;
&lt;li&gt;Padding、Container 内部结构&lt;/li&gt;
&lt;li&gt;Container 嵌套过多有什么性能问题&lt;/li&gt;
&lt;li&gt;SizedBox、ConstrainedBox、UnconstrainedBox 用途&lt;/li&gt;
&lt;li&gt;AspectRatio、FittedBox 缩放逻辑&lt;/li&gt;
&lt;li&gt;Wrap 自动换行实现原理&lt;/li&gt;
&lt;li&gt;ListView 几种构造方式区别（默认、builder、separated）&lt;/li&gt;
&lt;li&gt;ListView.builder 高性能原理，复用机制&lt;/li&gt;
&lt;li&gt;ListView 滚动复用失效场景&lt;/li&gt;
&lt;li&gt;GridView 使用与性能优化&lt;/li&gt;
&lt;li&gt;SingleChildScrollView 嵌套 ListView 报错解决方案&lt;/li&gt;
&lt;li&gt;CustomScrollView、Sliver 体系是什么&lt;/li&gt;
&lt;li&gt;SliverList、SliverGrid、SliverAppBar、SliverToBoxAdapter 使用场景&lt;/li&gt;
&lt;li&gt;SliverPersistentHeader 固定吸顶实现&lt;/li&gt;
&lt;li&gt;CustomScrollView 滚动统一原理&lt;/li&gt;
&lt;li&gt;Table、DataTable 布局特性&lt;/li&gt;
&lt;li&gt;IntrinsicHeight、IntrinsicWidth 性能损耗原因&lt;/li&gt;
&lt;li&gt;LayoutBuilder 获取父布局约束场景&lt;/li&gt;
&lt;li&gt;MediaQuery 获取设备信息，MediaQuery.of(context) 刷新机制&lt;/li&gt;
&lt;li&gt;LayoutId、MultiChildLayout 自定义布局&lt;/li&gt;
&lt;li&gt;Flow 高性能流式布局适用场景&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;四状态管理&#34;&gt;四、状态管理&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;State 自身状态管理优缺点&lt;/li&gt;
&lt;li&gt;InheritedWidget 底层原理，数据传递逻辑&lt;/li&gt;
&lt;li&gt;InheritedModel 对比 InheritedWidget 优势&lt;/li&gt;
&lt;li&gt;Provider 整套库实现原理（ChangeNotifierProvider、Consumer、Selector）&lt;/li&gt;
&lt;li&gt;Selector 为什么能精准局部刷新&lt;/li&gt;
&lt;li&gt;ChangeNotifier 通知更新机制&lt;/li&gt;
&lt;li&gt;StateProvider、FutureProvider、StreamProvider 区别&lt;/li&gt;
&lt;li&gt;Riverpod 对比 Provider 改进点&lt;/li&gt;
&lt;li&gt;Riverpod 全局状态、自动 dispose、无 context 优势&lt;/li&gt;
&lt;li&gt;StateNotifier、AsyncNotifier 使用场景&lt;/li&gt;
&lt;li&gt;Bloc 核心概念：Event、State、Bloc/Cubit&lt;/li&gt;
&lt;li&gt;Cubit 与 Bloc 区别&lt;/li&gt;
&lt;li&gt;BlocProvider、BlocConsumer、BlocBuilder、BlocListener 分工&lt;/li&gt;
&lt;li&gt;Bloc 状态单一数据源优势&lt;/li&gt;
&lt;li&gt;GetX 状态管理原理，GetController 生命周期&lt;/li&gt;
&lt;li&gt;GetX 全局路由、依赖注入实现&lt;/li&gt;
&lt;li&gt;GetX 优缺点，存在什么性能隐患&lt;/li&gt;
&lt;li&gt;Redux 在 Flutter 中使用逻辑&lt;/li&gt;
&lt;li&gt;MobX 响应式原理，Observable、Action、Reaction&lt;/li&gt;
&lt;li&gt;大型项目如何选型状态管理方案&lt;/li&gt;
&lt;li&gt;跨页面共享状态几种实现方式对比&lt;/li&gt;
&lt;li&gt;状态持久化配合状态管理怎么做&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;五路由--导航&#34;&gt;五、路由 &amp;amp; 导航&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;Navigator 1.0 路由栈管理原理&lt;/li&gt;
&lt;li&gt;MaterialPageRoute、CupertinoPageRoute 区别&lt;/li&gt;
&lt;li&gt;PageRouteBuilder 自定义转场动画&lt;/li&gt;
&lt;li&gt;Navigator push/pop/pushReplacement/popUntil 逻辑&lt;/li&gt;
&lt;li&gt;路由传参几种方式&lt;/li&gt;
&lt;li&gt;Navigator 2.0 核心组件：Router、RouteInformationParser、RouterDelegate&lt;/li&gt;
&lt;li&gt;Navigator 2.0 完整路由流程&lt;/li&gt;
&lt;li&gt;GoRouter 框架底层封装逻辑&lt;/li&gt;
&lt;li&gt;GoRouter 嵌套路由、路由守卫、参数获取&lt;/li&gt;
&lt;li&gt;路由栈持久化、页面状态保存方案&lt;/li&gt;
&lt;li&gt;底部导航多 Tab 页面状态保持实现&lt;/li&gt;
&lt;li&gt;路由拦截、登录鉴权统一处理&lt;/li&gt;
&lt;li&gt;原生页面与 Flutter 页面互相跳转路由处理&lt;/li&gt;
&lt;li&gt;页面返回监听 WillPopScope、PopScope&lt;/li&gt;
&lt;li&gt;深度链接 deep link 适配方案&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;六动画&#34;&gt;六、动画&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;Flutter 动画核心类：Animation、AnimationController、CurvedAnimation&lt;/li&gt;
&lt;li&gt;AnimationController vsync 作用，为什么需要 TickerProvider&lt;/li&gt;
&lt;li&gt;SingleTickerProviderStateMixin、TickerProviderStateMixin 区别&lt;/li&gt;
&lt;li&gt;Tween、Animatable 差值计算原理&lt;/li&gt;
&lt;li&gt;显式动画与隐式动画区别&lt;/li&gt;
&lt;li&gt;AnimatedContainer、AnimatedOpacity 等隐式动画底层&lt;/li&gt;
&lt;li&gt;Hero 共享元素动画实现原理&lt;/li&gt;
&lt;li&gt;PageRoute 共享 Hero 流程&lt;/li&gt;
&lt;li&gt;CustomAnimation 自定义动画组件&lt;/li&gt;
&lt;li&gt;交错动画 Interval 使用&lt;/li&gt;
&lt;li&gt;动画性能优化，避免重建&lt;/li&gt;
&lt;li&gt;Lottie 动画集成原理，性能注意点&lt;/li&gt;
&lt;li&gt;循环动画、反向动画实现&lt;/li&gt;
&lt;li&gt;动画暂停、恢复、释放资源处理&lt;/li&gt;
&lt;li&gt;自定义路由转场动画&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;七网络--本地存储&#34;&gt;七、网络 &amp;amp; 本地存储&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;dio 库封装思路，拦截器使用&lt;/li&gt;
&lt;li&gt;dio 统一请求头、错误处理、token 自动刷新&lt;/li&gt;
&lt;li&gt;取消请求 CancelToken 使用场景&lt;/li&gt;
&lt;li&gt;并发请求、超时处理&lt;/li&gt;
&lt;li&gt;Json 序列化反序列化几种方式（手动、json_serializable）&lt;/li&gt;
&lt;li&gt;fromJson/toJson 生成流程&lt;/li&gt;
&lt;li&gt;Freezed 数据模型优势&lt;/li&gt;
&lt;li&gt;http 库与 dio 对比&lt;/li&gt;
&lt;li&gt;WebSocket 在 Flutter 中使用，重连机制&lt;/li&gt;
&lt;li&gt;shared_preferences 底层存储原理&lt;/li&gt;
&lt;li&gt;Hive 本地数据库优势，Box 使用&lt;/li&gt;
&lt;li&gt;Hive 加密、大数据存储优化&lt;/li&gt;
&lt;li&gt;sqflite 数据库操作，事务使用&lt;/li&gt;
&lt;li&gt;Isolate 中操作数据库注意事项&lt;/li&gt;
&lt;li&gt;文件读写 path_provider 获取路径&lt;/li&gt;
&lt;li&gt;图片缓存 cached_network_image 实现逻辑&lt;/li&gt;
&lt;li&gt;网络请求缓存策略设计&lt;/li&gt;
&lt;li&gt;接口统一异常捕获封装方案&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;八原生交互-methodchannel&#34;&gt;八、原生交互 MethodChannel&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;MethodChannel、BasicMessageChannel、EventChannel 三者区别&lt;/li&gt;
&lt;li&gt;MethodChannel 双向通信完整流程&lt;/li&gt;
&lt;li&gt;Flutter 调用 Android 原生代码步骤&lt;/li&gt;
&lt;li&gt;Flutter 调用 iOS OC/Swift 步骤&lt;/li&gt;
&lt;li&gt;原生主动推送数据给 Flutter 使用哪个 Channel&lt;/li&gt;
&lt;li&gt;传参类型限制，复杂对象传递方案&lt;/li&gt;
&lt;li&gt;多页面 Channel 单例管理&lt;/li&gt;
&lt;li&gt;PlatformView 嵌入原生 View（Android View、iOS UIView）&lt;/li&gt;
&lt;li&gt;PlatformView 性能问题与优化&lt;/li&gt;
&lt;li&gt;原生页面跳转 Flutter 传参&lt;/li&gt;
&lt;li&gt;权限通过原生通道申请方案&lt;/li&gt;
&lt;li&gt;混合栈开发：flutterBoost 原理&lt;/li&gt;
&lt;li&gt;flutterBoost 页面生命周期同步问题&lt;/li&gt;
&lt;li&gt;原生资源与 Flutter 资源冲突处理&lt;/li&gt;
&lt;li&gt;通信通道内存泄漏如何避免&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;九性能优化专项&#34;&gt;九、性能优化专项&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;Widget 重建常见诱因与规避手段&lt;/li&gt;
&lt;li&gt;const 构造优化原理&lt;/li&gt;
&lt;li&gt;Key 不合理使用导致的性能问题&lt;/li&gt;
&lt;li&gt;ListView 长列表优化方案&lt;/li&gt;
&lt;li&gt;图片加载优化：尺寸、缓存、压缩&lt;/li&gt;
&lt;li&gt;RepaintBoundary 拆分重绘区域场景&lt;/li&gt;
&lt;li&gt;减少 Layer 树层级优化&lt;/li&gt;
&lt;li&gt;避免使用 Intrinsic 系列控件原因&lt;/li&gt;
&lt;li&gt;动画卡顿排查思路&lt;/li&gt;
&lt;li&gt;DevTools 工具使用：性能面板、内存、Widget 检查&lt;/li&gt;
&lt;li&gt;内存泄漏常见场景（Timer、Stream、Channel、Animation）&lt;/li&gt;
&lt;li&gt;大图片、大量对象内存释放方案&lt;/li&gt;
&lt;li&gt;Isolate 处理耗时计算优化 UI&lt;/li&gt;
&lt;li&gt;build 方法避免耗时操作&lt;/li&gt;
&lt;li&gt;布局嵌套过深优化手段&lt;/li&gt;
&lt;li&gt;页面 dispose 资源释放规范&lt;/li&gt;
&lt;li&gt;Profile 模式性能排查要点&lt;/li&gt;
&lt;li&gt;启动速度优化（包体积、懒加载、预加载）&lt;/li&gt;
&lt;li&gt;Flutter 包体积优化方案&lt;/li&gt;
&lt;li&gt;滑动卡顿完整排查流程&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;十图片手势输入弹窗组件&#34;&gt;十、图片、手势、输入、弹窗组件&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;Image 几种构造：AssetImage、NetworkImage、FileImage、MemoryImage&lt;/li&gt;
&lt;li&gt;ImageProvider 缓存机制&lt;/li&gt;
&lt;li&gt;Image.network 缓存缺陷，cached_network_image 弥补方案&lt;/li&gt;
&lt;li&gt;DecorationImage、FadeInImage 使用&lt;/li&gt;
&lt;li&gt;GestureDetector 手势识别原理，多手势冲突&lt;/li&gt;
&lt;li&gt;Listener 底层原始手势与 GestureDetector 区别&lt;/li&gt;
&lt;li&gt;手势竞争、手势忽略场景&lt;/li&gt;
&lt;li&gt;InkWell 水波纹实现原理，必须嵌套 Material&lt;/li&gt;
&lt;li&gt;TextField 控制器 TextEditingController 使用&lt;/li&gt;
&lt;li&gt;TextField 输入监听、格式化、光标控制&lt;/li&gt;
&lt;li&gt;表单 Form、GlobalKey&lt;FormState&gt; 校验逻辑&lt;/li&gt;
&lt;li&gt;ModalRoute、showDialog、showBottomSheet 弹窗原理&lt;/li&gt;
&lt;li&gt;弹窗状态共享问题解决方案&lt;/li&gt;
&lt;li&gt;Draggable、LongPressDraggable 拖拽实现&lt;/li&gt;
&lt;li&gt;Transform 变换不改变布局约束特性&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;十一项目工程--打包适配&#34;&gt;十一、项目工程 &amp;amp; 打包适配&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;pubspec.yaml 各字段含义，依赖版本约束&lt;/li&gt;
&lt;li&gt;本地依赖、Git 依赖、远程依赖配置&lt;/li&gt;
&lt;li&gt;pub 依赖冲突解决方法&lt;/li&gt;
&lt;li&gt;Flutter 多环境配置（开发/测试/生产）&lt;/li&gt;
&lt;li&gt;Flavor 多渠道打包 Android &amp;amp; iOS&lt;/li&gt;
&lt;li&gt;Android 打包 keystore 配置，iOS 证书配置&lt;/li&gt;
&lt;li&gt;AndroidManifest、Info.plist 权限适配&lt;/li&gt;
&lt;li&gt;屏幕适配方案：媒体查询、比例、flutter_screenutil&lt;/li&gt;
&lt;li&gt;深色模式适配实现&lt;/li&gt;
&lt;li&gt;多语言国际化 intl 库使用&lt;/li&gt;
&lt;li&gt;App 图标、启动页配置&lt;/li&gt;
&lt;li&gt;Flutter 插件开发流程&lt;/li&gt;
&lt;li&gt;平台区分代码编写（dart.io、Platform 判断）&lt;/li&gt;
&lt;li&gt;混合开发项目目录结构&lt;/li&gt;
&lt;li&gt;CI/CD 自动打包脚本思路&lt;/li&gt;
&lt;li&gt;版本号管理升级方案&lt;/li&gt;
&lt;li&gt;第三方插件兼容问题处理&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;十二进阶底层--疑难场景&#34;&gt;十二、进阶底层 &amp;amp; 疑难场景&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;WidgetsApp、MaterialApp、CupertinoApp 内部结构&lt;/li&gt;
&lt;li&gt;ThemeData 主题分发原理，局部主题覆盖&lt;/li&gt;
&lt;li&gt;Navigator 上下文与页面上下文区别&lt;/li&gt;
&lt;li&gt;context 获取上层 Widget 原理，BuildContext 分类&lt;/li&gt;
&lt;li&gt;State 保存在 Element 中，Widget 重建 State 不销毁条件&lt;/li&gt;
&lt;li&gt;Offstage、Visibility 控件隐藏区别&lt;/li&gt;
&lt;li&gt;AbsorbPointer、IgnorePointer 拦截手势差异&lt;/li&gt;
&lt;li&gt;Clip 裁剪控件：ClipRect、ClipRRect、ClipOval 性能&lt;/li&gt;
&lt;li&gt;BackdropFilter 模糊控件性能损耗原因&lt;/li&gt;
&lt;li&gt;RenderBox 自定义控件完整流程&lt;/li&gt;
&lt;li&gt;自定义 RenderObject 实现步骤&lt;/li&gt;
&lt;li&gt;自定义 MultiChildRenderObjectWidget&lt;/li&gt;
&lt;li&gt;ScrollController 监听滚动、滚动定位&lt;/li&gt;
&lt;li&gt;ScrollPhysics 滚动回弹、阻尼自定义&lt;/li&gt;
&lt;li&gt;监听应用前后台切换 AppLifecycleState&lt;/li&gt;
&lt;li&gt;截屏、屏幕亮度、震动原生能力实现&lt;/li&gt;
&lt;li&gt;WebView 插件使用与通信&lt;/li&gt;
&lt;li&gt;Flutter Web 编译差异，平台兼容问题&lt;/li&gt;
&lt;li&gt;Flutter Windows/macOS/Linux 桌面端适配要点&lt;/li&gt;
&lt;li&gt;如何实现全局捕获异常&lt;/li&gt;
&lt;li&gt;Timer、StreamSubscription 忘记取消的内存泄漏&lt;/li&gt;
&lt;li&gt;列表 item 点击状态保存方案&lt;/li&gt;
&lt;li&gt;异步并发竞态条件问题处理&lt;/li&gt;
&lt;li&gt;图片大量加载 OOM 解决方案&lt;/li&gt;
&lt;li&gt;原生弹窗遮挡 Flutter 页面问题&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;十三综合项目面试问答题&#34;&gt;十三、综合项目面试问答题&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;讲一下你项目整体架构分层&lt;/li&gt;
&lt;li&gt;项目状态管理选型原因&lt;/li&gt;
&lt;li&gt;长列表卡顿怎么优化的&lt;/li&gt;
&lt;li&gt;多页面共享登录状态如何实现&lt;/li&gt;
&lt;li&gt;token 过期统一拦截处理方案&lt;/li&gt;
&lt;li&gt;项目混合栈开发遇到哪些坑&lt;/li&gt;
&lt;li&gt;图片缓存、网络缓存怎么设计&lt;/li&gt;
&lt;li&gt;全局网络加载弹窗、错误页封装思路&lt;/li&gt;
&lt;li&gt;项目通用业务组件封装思路&lt;/li&gt;
&lt;li&gt;线上卡顿、崩溃排查处理经验&lt;/li&gt;
&lt;li&gt;如何实现页面无网络重试逻辑&lt;/li&gt;
&lt;li&gt;复杂表单页面状态管理方案&lt;/li&gt;
&lt;li&gt;项目包体积优化做了哪些操作&lt;/li&gt;
&lt;li&gt;多渠道、多环境配置实现&lt;/li&gt;
&lt;li&gt;封装通用 Dio 请求库完整思路&lt;/li&gt;
&lt;/ol&gt;</description>
    </item>
    <item>
      <title>React 相关面试题整理</title>
      <link>https://lv-blog.pages.dev/posts/programming/frontend/react-interview-questions/</link>
      <pubDate>Wed, 15 Jul 2026 00:46:10 +0800</pubDate>
      <guid>https://lv-blog.pages.dev/posts/programming/frontend/react-interview-questions/</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;从互联网整理而来&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id=&#34;一js-基础前置&#34;&gt;一、JS 基础前置&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;原型与原型链&lt;/li&gt;
&lt;li&gt;闭包、闭包引发的内存泄漏场景&lt;/li&gt;
&lt;li&gt;同步异步、宏任务微任务执行顺序&lt;/li&gt;
&lt;li&gt;Promise 状态、静态方法、链式调用&lt;/li&gt;
&lt;li&gt;async/await 原理&lt;/li&gt;
&lt;li&gt;深浅拷贝实现与区别&lt;/li&gt;
&lt;li&gt;this 指向五种场景&lt;/li&gt;
&lt;li&gt;箭头函数与普通函数差异&lt;/li&gt;
&lt;li&gt;ES6 解构、展开运算符、剩余参数&lt;/li&gt;
&lt;li&gt;var / let / const 区别&lt;/li&gt;
&lt;li&gt;CommonJS 与 ES Module 差异&lt;/li&gt;
&lt;li&gt;TypeScript 接口、泛型、交叉类型、联合类型&lt;/li&gt;
&lt;li&gt;EventLoop 完整执行流程&lt;/li&gt;
&lt;li&gt;防抖节流实现原理&lt;/li&gt;
&lt;li&gt;纯函数定义与特性&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;二react-基础核心概念&#34;&gt;二、React 基础核心概念&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;React 设计思想与核心理念&lt;/li&gt;
&lt;li&gt;虚拟 DOM 是什么，作用与优势&lt;/li&gt;
&lt;li&gt;JSX 语法本质，编译产物&lt;/li&gt;
&lt;li&gt;JSX 中 {} 可放入哪些内容，不能放什么&lt;/li&gt;
&lt;li&gt;React 元素与组件区别&lt;/li&gt;
&lt;li&gt;函数组件与类组件区别&lt;/li&gt;
&lt;li&gt;纯组件 PureComponent 原理&lt;/li&gt;
&lt;li&gt;React 单向数据流含义&lt;/li&gt;
&lt;li&gt;props 只读特性，为什么不能直接修改&lt;/li&gt;
&lt;li&gt;props.children 有哪些类型&lt;/li&gt;
&lt;li&gt;key 的作用，为什么不能用 index 做 key&lt;/li&gt;
&lt;li&gt;React 列表渲染注意事项&lt;/li&gt;
&lt;li&gt;className 代替 class、htmlFor 代替 for 原因&lt;/li&gt;
&lt;li&gt;React 事件绑定与原生 DOM 事件差异&lt;/li&gt;
&lt;li&gt;合成事件原理、事件委托机制&lt;/li&gt;
&lt;li&gt;阻止合成事件冒泡几种方式&lt;/li&gt;
&lt;li&gt;dangerouslySetInnerHTML 使用场景与风险&lt;/li&gt;
&lt;li&gt;React 为什么不直接操作 DOM&lt;/li&gt;
&lt;li&gt;Fragment 作用，短语法 &amp;lt;&amp;gt;&lt;/li&gt;
&lt;li&gt;React 严格模式 StrictMode 作用&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;三类组件生命周期class-component&#34;&gt;三、类组件生命周期（Class Component）&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;类组件完整生命周期分哪三个阶段&lt;/li&gt;
&lt;li&gt;constructor 执行时机与作用&lt;/li&gt;
&lt;li&gt;static getDerivedStateFromProps 执行时机与用途&lt;/li&gt;
&lt;li&gt;shouldComponentUpdate 返回值作用&lt;/li&gt;
&lt;li&gt;render 执行规则，禁止在其中修改 state&lt;/li&gt;
&lt;li&gt;componentDidMount 执行时机、常用场景&lt;/li&gt;
&lt;li&gt;getSnapshotBeforeUpdate 触发时机、返回值用途&lt;/li&gt;
&lt;li&gt;componentDidUpdate 参数含义，依赖判断写法&lt;/li&gt;
&lt;li&gt;componentWillUnmount 清理资源场景&lt;/li&gt;
&lt;li&gt;废弃生命周期函数有哪些，为什么废弃&lt;/li&gt;
&lt;li&gt;props 变化触发的生命周期流程&lt;/li&gt;
&lt;li&gt;setState 同步还是异步，底层批量更新逻辑&lt;/li&gt;
&lt;li&gt;setState 两种传参形式（对象/函数）区别&lt;/li&gt;
&lt;li&gt;多次连续 setState 合并规则&lt;/li&gt;
&lt;li&gt;如何在 setState 后拿到最新 state&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;四hooks-全套react168&#34;&gt;四、Hooks 全套（React16.8+）&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;Hook 诞生背景，解决类组件什么痛点&lt;/li&gt;
&lt;li&gt;Hook 使用两条硬性规则&lt;/li&gt;
&lt;li&gt;useState 底层原理，为何数组解构不受顺序影响&lt;/li&gt;
&lt;li&gt;useState 传入函数初始化的优势&lt;/li&gt;
&lt;li&gt;useEffect 作用，依赖数组含义&lt;/li&gt;
&lt;li&gt;useEffect 模拟生命周期分别怎么写&lt;/li&gt;
&lt;li&gt;useEffect 返回清理函数执行时机&lt;/li&gt;
&lt;li&gt;依赖数组漏传变量引发的闭包陷阱&lt;/li&gt;
&lt;li&gt;useLayoutEffect 和 useEffect 执行顺序、区别&lt;/li&gt;
&lt;li&gt;useMemo 缓存计算值，解决什么问题&lt;/li&gt;
&lt;li&gt;useCallback 缓存函数，搭配子组件使用场景&lt;/li&gt;
&lt;li&gt;useMemo 与 useCallback 性能误区&lt;/li&gt;
&lt;li&gt;useRef 存储DOM、存储可变数据两种用法&lt;/li&gt;
&lt;li&gt;ref 传递 forwardRef 使用场景&lt;/li&gt;
&lt;li&gt;useImperativeHandle 作用&lt;/li&gt;
&lt;li&gt;useContext 跨层级传值，使用缺陷&lt;/li&gt;
&lt;li&gt;useReducer 适用场景，和 useState 对比&lt;/li&gt;
&lt;li&gt;useReducer 简单实现思路&lt;/li&gt;
&lt;li&gt;useId 作用，解决什么问题&lt;/li&gt;
&lt;li&gt;useTransition 区分紧急/非紧急更新&lt;/li&gt;
&lt;li&gt;useDeferredValue 延迟计算值&lt;/li&gt;
&lt;li&gt;useSyncExternalStore 订阅外部数据源&lt;/li&gt;
&lt;li&gt;useDebugValue 自定义Hook调试展示&lt;/li&gt;
&lt;li&gt;自定义 Hook 封装规范，复用逻辑思路&lt;/li&gt;
&lt;li&gt;Hook 闭包陷阱完整成因与解决方案&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;五react18-新特性&#34;&gt;五、React18 新特性&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;React18 并发渲染 Concurrent Mode 含义&lt;/li&gt;
&lt;li&gt;自动批处理更新范围变化&lt;/li&gt;
&lt;li&gt;createRoot 替换 legacy root 差异&lt;/li&gt;
&lt;li&gt;Suspense 服务端/客户端用法&lt;/li&gt;
&lt;li&gt;Transitions API 解决场景&lt;/li&gt;
&lt;li&gt;自动插入批处理，异步回调内也合并更新&lt;/li&gt;
&lt;li&gt;useTransition 与 useDeferredValue 区别&lt;/li&gt;
&lt;li&gt;服务端组件 RSC 基础概念&lt;/li&gt;
&lt;li&gt;StrictMode 双重渲染机制目的&lt;/li&gt;
&lt;li&gt;批量更新边界，何时不会合并state更新&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;六diff-算法与渲染更新&#34;&gt;六、Diff 算法与渲染更新&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;React Diff 三大策略&lt;/li&gt;
&lt;li&gt;同层比较，不跨层级对比原因&lt;/li&gt;
&lt;li&gt;无key、index key、唯一key三种场景对比&lt;/li&gt;
&lt;li&gt;节点删除、新增、移动判断逻辑&lt;/li&gt;
&lt;li&gt;文本节点、组件节点 Diff 区别&lt;/li&gt;
&lt;li&gt;列表 Diff 优化逻辑&lt;/li&gt;
&lt;li&gt;什么情况下组件会重新渲染&lt;/li&gt;
&lt;li&gt;如何避免不必要的重渲染&lt;/li&gt;
&lt;li&gt;memo、useMemo、useCallback 配合使用完整逻辑&lt;/li&gt;
&lt;li&gt;渲染流程：render → 生成VNode → Diff → 真实DOM更新&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;七组件通信方案&#34;&gt;七、组件通信方案&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;父子组件 props 传值、回调传方法&lt;/li&gt;
&lt;li&gt;多层级透传 props 缺点&lt;/li&gt;
&lt;li&gt;Context API 跨层级通信优缺点&lt;/li&gt;
&lt;li&gt;Context 配合 useReducer 简易状态管理&lt;/li&gt;
&lt;li&gt;父访问子组件实例 ref&lt;/li&gt;
&lt;li&gt;子调用父方法回调函数&lt;/li&gt;
&lt;li&gt;兄弟组件通信几种方案&lt;/li&gt;
&lt;li&gt;全局事件总线实现与缺陷&lt;/li&gt;
&lt;li&gt;跨页面全局状态管理方案对比&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;八状态管理-redux--redux-toolkit--zustand&#34;&gt;八、状态管理 Redux / Redux Toolkit / Zustand&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;Redux 三大核心原则&lt;/li&gt;
&lt;li&gt;Redux 五大核心概念：Store、Action、Reducer、Dispatch、State&lt;/li&gt;
&lt;li&gt;Reducer 必须纯函数要求&lt;/li&gt;
&lt;li&gt;Action plain object 规范，为什么不能异步&lt;/li&gt;
&lt;li&gt;中间件 middleware 作用，执行流程&lt;/li&gt;
&lt;li&gt;redux-thunk 异步处理原理&lt;/li&gt;
&lt;li&gt;redux-saga 对比 thunk 优势&lt;/li&gt;
&lt;li&gt;combineReducers 拆分模块原理&lt;/li&gt;
&lt;li&gt;react-redux 核心 API Provider、connect&lt;/li&gt;
&lt;li&gt;mapStateToProps、mapDispatchToProps 作用&lt;/li&gt;
&lt;li&gt;useSelector、useDispatch Hook 用法&lt;/li&gt;
&lt;li&gt;Redux 数据单向流动完整流程&lt;/li&gt;
&lt;li&gt;Redux Toolkit 解决原生Redux哪些痛点&lt;/li&gt;
&lt;li&gt;createSlice 内置 reducer、action 生成&lt;/li&gt;
&lt;li&gt;RTK 内置immer 实现可变写法原理&lt;/li&gt;
&lt;li&gt;RTK Query 接口缓存、请求管理&lt;/li&gt;
&lt;li&gt;Zustand 轻量状态库对比Redux优势&lt;/li&gt;
&lt;li&gt;状态持久化 redux-persist 流程&lt;/li&gt;
&lt;li&gt;大型项目状态库选型思路&lt;/li&gt;
&lt;li&gt;多组件共享全局状态最佳实践&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;九react-router-v6&#34;&gt;九、React Router v6&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;v5 与 v6 核心改动差异&lt;/li&gt;
&lt;li&gt;createBrowserRouter 路由配置方式&lt;/li&gt;
&lt;li&gt;BrowserRouter、HashRouter、MemoryRouter 区别&lt;/li&gt;
&lt;li&gt;Routes 替代 Switch 作用&lt;/li&gt;
&lt;li&gt;Route element 传组件写法&lt;/li&gt;
&lt;li&gt;useNavigate 替代 useHistory&lt;/li&gt;
&lt;li&gt;路由传参 params、search、state 三种方式&lt;/li&gt;
&lt;li&gt;useParams、useSearchParams 使用&lt;/li&gt;
&lt;li&gt;嵌套路由 Outlet 占位原理&lt;/li&gt;
&lt;li&gt;index 索引路由作用&lt;/li&gt;
&lt;li&gt;Link、NavLink 区别&lt;/li&gt;
&lt;li&gt;路由守卫鉴权封装方案&lt;/li&gt;
&lt;li&gt;路由懒加载 + Suspense 配置&lt;/li&gt;
&lt;li&gt;useLocation 获取路由信息&lt;/li&gt;
&lt;li&gt;动态路由、路由拦截封装&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;十表单处理&#34;&gt;十、表单处理&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;受控组件与非受控组件定义、区别&lt;/li&gt;
&lt;li&gt;受控组件完整实现思路&lt;/li&gt;
&lt;li&gt;非受控组件通过 ref 获取值场景&lt;/li&gt;
&lt;li&gt;多表单项统一封装受控逻辑&lt;/li&gt;
&lt;li&gt;第三方表单库 Formik / React Hook Form 对比&lt;/li&gt;
&lt;li&gt;React Hook Form 非受控高性能原理&lt;/li&gt;
&lt;li&gt;表单校验方案：原生、yup、zod&lt;/li&gt;
&lt;li&gt;表单批量重置、回填数据处理&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;十一样式方案&#34;&gt;十一、样式方案&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;inline 内联样式优缺点&lt;/li&gt;
&lt;li&gt;CSS Modules 样式隔离原理&lt;/li&gt;
&lt;li&gt;styled-components CSS-in-JS 原理&lt;/li&gt;
&lt;li&gt;emotion 与 styled-components 对比&lt;/li&gt;
&lt;li&gt;tailwindcss 在React项目使用优势&lt;/li&gt;
&lt;li&gt;动态样式几种实现方式&lt;/li&gt;
&lt;li&gt;全局样式污染解决方案&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;十二工程化构建&#34;&gt;十二、工程化构建&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;Create React App 底层 webpack 配置&lt;/li&gt;
&lt;li&gt;Vite 构建React项目优势，esbuild预构建&lt;/li&gt;
&lt;li&gt;vite.config.js 常用配置项&lt;/li&gt;
&lt;li&gt;webpack 处理jsx、ts-loader流程&lt;/li&gt;
&lt;li&gt;babel 转换 JSX、polyfill 原理&lt;/li&gt;
&lt;li&gt;.env 环境变量区分开发/测试/生产&lt;/li&gt;
&lt;li&gt;跨域代理 proxy 配置&lt;/li&gt;
&lt;li&gt;路由懒加载分包代码分割&lt;/li&gt;
&lt;li&gt;Tree-Shaking 生效条件&lt;/li&gt;
&lt;li&gt;打包体积优化手段&lt;/li&gt;
&lt;li&gt;第三方组件库按需引入配置&lt;/li&gt;
&lt;li&gt;unplugin-auto-import 自动导入hooks&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;十三网络请求封装&#34;&gt;十三、网络请求封装&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;axios 请求拦截、响应拦截封装&lt;/li&gt;
&lt;li&gt;全局 loading、统一错误处理&lt;/li&gt;
&lt;li&gt;token 过期无感刷新实现逻辑&lt;/li&gt;
&lt;li&gt;重复请求取消方案 CancelToken&lt;/li&gt;
&lt;li&gt;请求并发处理&lt;/li&gt;
&lt;li&gt;封装自定义请求Hook&lt;/li&gt;
&lt;li&gt;SWR / React Query 数据请求缓存库原理&lt;/li&gt;
&lt;li&gt;React Query 自动重请求、缓存失效策略&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;十四性能优化专题&#34;&gt;十四、性能优化专题&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;组件无效重渲染全部诱因&lt;/li&gt;
&lt;li&gt;memo 缓存函数组件条件&lt;/li&gt;
&lt;li&gt;useCallback 缓存函数使用场景&lt;/li&gt;
&lt;li&gt;useMemo 缓存计算结果适用场景&lt;/li&gt;
&lt;li&gt;列表渲染优化策略&lt;/li&gt;
&lt;li&gt;虚拟列表 react-window / react-virtualized 原理&lt;/li&gt;
&lt;li&gt;图片懒加载实现&lt;/li&gt;
&lt;li&gt;路由懒加载分包优化首屏&lt;/li&gt;
&lt;li&gt;大组件拆分、状态下沉优化&lt;/li&gt;
&lt;li&gt;避免在render内创建函数/对象&lt;/li&gt;
&lt;li&gt;React DevTools Profiler 排查卡顿&lt;/li&gt;
&lt;li&gt;减少Context频繁更新范围&lt;/li&gt;
&lt;li&gt;定时器、订阅事件组件卸载清理&lt;/li&gt;
&lt;li&gt;打包体积压缩：gzip、剔除无用依赖&lt;/li&gt;
&lt;li&gt;并发更新优化用户交互体验&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;十五进阶底层原理&#34;&gt;十五、进阶底层原理&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;Fiber 架构解决旧架构什么问题&lt;/li&gt;
&lt;li&gt;Fiber 节点结构、任务拆分机制&lt;/li&gt;
&lt;li&gt;协调阶段、提交阶段分工&lt;/li&gt;
&lt;li&gt;可中断、可恢复、可优先级调度原理&lt;/li&gt;
&lt;li&gt;调和过程完整流程&lt;/li&gt;
&lt;li&gt;批量更新实现机制&lt;/li&gt;
&lt;li&gt;合成事件系统底层池化机制&lt;/li&gt;
&lt;li&gt;React 事务机制&lt;/li&gt;
&lt;li&gt;Portal 传送门实现原理，事件冒泡特点&lt;/li&gt;
&lt;li&gt;ErrorBoundary 错误捕获范围，无法捕获哪些错误&lt;/li&gt;
&lt;li&gt;React 服务端渲染 SSR 流程&lt;/li&gt;
&lt;li&gt;Next.js 与 CRA 区别，SSR/SSG/ISR 概念&lt;/li&gt;
&lt;li&gt;Hydrate 水合作用，水合不匹配成因&lt;/li&gt;
&lt;li&gt;RSC React Server Components 运行机制&lt;/li&gt;
&lt;li&gt;微前端中 React 应用隔离方案&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;十六项目实战场景题&#34;&gt;十六、项目实战场景题&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;项目目录分层架构设计&lt;/li&gt;
&lt;li&gt;状态管理选型理由&lt;/li&gt;
&lt;li&gt;大型表单封装思路&lt;/li&gt;
&lt;li&gt;页面按钮、接口权限控制实现&lt;/li&gt;
&lt;li&gt;首屏加载缓慢优化方案&lt;/li&gt;
&lt;li&gt;列表大量数据渲染卡顿解决&lt;/li&gt;
&lt;li&gt;全局弹窗、消息提示封装&lt;/li&gt;
&lt;li&gt;路由鉴权、未登录跳转逻辑&lt;/li&gt;
&lt;li&gt;组件复用抽离自定义Hook规范&lt;/li&gt;
&lt;li&gt;线上报错捕获监控方案&lt;/li&gt;
&lt;li&gt;多环境变量、多渠道打包配置&lt;/li&gt;
&lt;li&gt;防抖节流在搜索框场景实现&lt;/li&gt;
&lt;li&gt;页面返回保留表单状态实现&lt;/li&gt;
&lt;li&gt;重复提交接口拦截处理&lt;/li&gt;
&lt;li&gt;React 项目迁移 TS 改造思路&lt;/li&gt;
&lt;/ol&gt;</description>
    </item>
    <item>
      <title>Vue 相关面试题整理</title>
      <link>https://lv-blog.pages.dev/posts/programming/frontend/vue-interview-questions/</link>
      <pubDate>Wed, 15 Jul 2026 00:46:10 +0800</pubDate>
      <guid>https://lv-blog.pages.dev/posts/programming/frontend/vue-interview-questions/</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;从互联网整理而来&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id=&#34;一jsts-前置基础&#34;&gt;一、JS/TS 前置基础&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;var、let、const 区别&lt;/li&gt;
&lt;li&gt;原型、原型链原理&lt;/li&gt;
&lt;li&gt;闭包概念、使用场景、内存泄漏风险&lt;/li&gt;
&lt;li&gt;同步异步、宏任务微任务执行顺序&lt;/li&gt;
&lt;li&gt;Promise 三种状态、链式调用、静态方法&lt;/li&gt;
&lt;li&gt;async/await 底层原理&lt;/li&gt;
&lt;li&gt;数组常用遍历方法差异&lt;/li&gt;
&lt;li&gt;深浅拷贝实现与区别&lt;/li&gt;
&lt;li&gt;Object.defineProperty 与 Proxy 对比&lt;/li&gt;
&lt;li&gt;Reflect 对象作用&lt;/li&gt;
&lt;li&gt;箭头函数与普通函数区别&lt;/li&gt;
&lt;li&gt;解构赋值、展开运算符&lt;/li&gt;
&lt;li&gt;ES6 模块 import/export 与 CommonJS 区别&lt;/li&gt;
&lt;li&gt;TypeScript 泛型、接口、类型推导&lt;/li&gt;
&lt;li&gt;EventLoop 完整执行流程&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;二vue2-基础核心&#34;&gt;二、Vue2 基础核心&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;Vue 双向绑定底层原理&lt;/li&gt;
&lt;li&gt;Object.defineProperty 如何监听对象、数组变化&lt;/li&gt;
&lt;li&gt;Vue2 数组重写了哪些方法，为什么不能监听下标修改&lt;/li&gt;
&lt;li&gt;Dep、Watcher、Observer 三者关系&lt;/li&gt;
&lt;li&gt;什么是响应式依赖收集、派发更新&lt;/li&gt;
&lt;li&gt;数据劫持流程完整过程&lt;/li&gt;
&lt;li&gt;computed 和 watch 区别&lt;/li&gt;
&lt;li&gt;computed 缓存实现原理&lt;/li&gt;
&lt;li&gt;methods、computed、watch 使用场景区分&lt;/li&gt;
&lt;li&gt;Vue 生命周期全部钩子及执行时机&lt;/li&gt;
&lt;li&gt;created、mounted、updated、destroyed 使用场景&lt;/li&gt;
&lt;li&gt;父子组件生命周期执行顺序&lt;/li&gt;
&lt;li&gt;v-if 和 v-show 底层区别与性能差异&lt;/li&gt;
&lt;li&gt;v-for 绑定 key 的作用，key 不能用 index 的原因&lt;/li&gt;
&lt;li&gt;v-if 和 v-for 同时使用的优先级与问题&lt;/li&gt;
&lt;li&gt;v-model 底层语法糖实现&lt;/li&gt;
&lt;li&gt;修饰符 .lazy .number .trim 原理&lt;/li&gt;
&lt;li&gt;指令自定义实现，钩子函数有哪些&lt;/li&gt;
&lt;li&gt;过滤器 filter 使用场景，Vue3 废弃原因&lt;/li&gt;
&lt;li&gt;插值表达式、v-text、v-html 区别&lt;/li&gt;
&lt;li&gt;Vue 模板编译流程&lt;/li&gt;
&lt;li&gt;render 函数与 template 关系&lt;/li&gt;
&lt;li&gt;VNode 虚拟 DOM 结构作用&lt;/li&gt;
&lt;li&gt;Diff 算法执行流程&lt;/li&gt;
&lt;li&gt;Vue2 Diff 同层比较、key 作用、头尾指针优化&lt;/li&gt;
&lt;li&gt;patch 函数更新逻辑&lt;/li&gt;
&lt;li&gt;nextTick 原理，微任务/宏任务降级策略&lt;/li&gt;
&lt;li&gt;$nextTick 使用场景&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;三vue2-组件通信&#34;&gt;三、Vue2 组件通信&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;父子组件 props 传递规则，单向数据流&lt;/li&gt;
&lt;li&gt;props 类型校验、默认值、必填配置&lt;/li&gt;
&lt;li&gt;$emit 子传父实现&lt;/li&gt;
&lt;li&gt;.sync 修饰符作用，Vue3 移除原因&lt;/li&gt;
&lt;li&gt;$parent、$children、$refs 获取组件/元素&lt;/li&gt;
&lt;li&gt;provide / inject 使用场景与响应式缺陷&lt;/li&gt;
&lt;li&gt;EventBus 事件总线实现、内存泄漏问题&lt;/li&gt;
&lt;li&gt;Vuex 全局状态通信完整流程&lt;/li&gt;
&lt;li&gt;$attrs、$listeners 跨层级透传&lt;/li&gt;
&lt;li&gt;跨页面、多层级组件通信方案对比&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;四vuex-状态管理&#34;&gt;四、Vuex 状态管理&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;Vuex 五大核心概念 state、getters、mutations、actions、modules&lt;/li&gt;
&lt;li&gt;mutations 必须同步、actions 异步原因&lt;/li&gt;
&lt;li&gt;commit 和 dispatch 区别&lt;/li&gt;
&lt;li&gt;getters 缓存特性&lt;/li&gt;
&lt;li&gt;modules 模块划分，命名空间 namespaced&lt;/li&gt;
&lt;li&gt;辅助函数 mapState/mapGetters/mapMutations/mapActions 使用&lt;/li&gt;
&lt;li&gt;Vuex 持久化存储方案&lt;/li&gt;
&lt;li&gt;Vuex 严格模式 strict 作用&lt;/li&gt;
&lt;li&gt;多个组件同时修改同一 state 数据流&lt;/li&gt;
&lt;li&gt;Vuex 底层响应式原理&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;五vue-router-23&#34;&gt;五、Vue Router 2/3&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;SPA 单页面路由实现原理&lt;/li&gt;
&lt;li&gt;hash 模式与 history 模式底层区别&lt;/li&gt;
&lt;li&gt;history 模式后端 nginx 配置问题&lt;/li&gt;
&lt;li&gt;路由导航守卫分类：全局、路由独享、组件内&lt;/li&gt;
&lt;li&gt;导航守卫执行完整顺序&lt;/li&gt;
&lt;li&gt;$route 和 $router 区别&lt;/li&gt;
&lt;li&gt;路由传参 params 和 query 差异&lt;/li&gt;
&lt;li&gt;params 刷新丢失参数解决方案&lt;/li&gt;
&lt;li&gt;动态路由匹配、路由嵌套&lt;/li&gt;
&lt;li&gt;路由懒加载实现与分包&lt;/li&gt;
&lt;li&gt;addRoutes、addRoute 动态添加路由&lt;/li&gt;
&lt;li&gt;路由元信息 meta 使用场景&lt;/li&gt;
&lt;li&gt;路由缓存 keep-alive 原理&lt;/li&gt;
&lt;li&gt;include/exclude/max 参数作用&lt;/li&gt;
&lt;li&gt;activated、deactivated 生命周期钩子&lt;/li&gt;
&lt;li&gt;路由跳转 push、replace、go 区别&lt;/li&gt;
&lt;li&gt;登录鉴权全局路由拦截实现&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;六vue2-进阶知识点&#34;&gt;六、Vue2 进阶知识点&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;keep-alive 缓存组件底层逻辑&lt;/li&gt;
&lt;li&gt;异步组件、组件懒加载&lt;/li&gt;
&lt;li&gt;组件递归实现菜单、树形结构&lt;/li&gt;
&lt;li&gt;$once、$off、$on 事件方法&lt;/li&gt;
&lt;li&gt;插槽分类：默认插槽、具名插槽、作用域插槽&lt;/li&gt;
&lt;li&gt;作用域插槽数据传递原理&lt;/li&gt;
&lt;li&gt;v-once 指令作用&lt;/li&gt;
&lt;li&gt;Vue 模板编译生成 AST 抽象语法树&lt;/li&gt;
&lt;li&gt;异步更新队列机制&lt;/li&gt;
&lt;li&gt;页面大量数据渲染卡顿优化方案&lt;/li&gt;
&lt;li&gt;Object.freeze 冻结数据对响应式的影响&lt;/li&gt;
&lt;li&gt;$set 原理，什么场景必须使用&lt;/li&gt;
&lt;li&gt;Vue2 响应式存在的缺陷&lt;/li&gt;
&lt;li&gt;全局过滤器、全局指令、全局组件注册&lt;/li&gt;
&lt;li&gt;mixin 混入原理、合并规则、冲突问题&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;七vue3-核心升级composition-api&#34;&gt;七、Vue3 核心升级（Composition API）&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;Vue3 相比 Vue2 性能提升点&lt;/li&gt;
&lt;li&gt;Vue3 响应式改用 Proxy 优势&lt;/li&gt;
&lt;li&gt;Proxy 对比 Object.defineProperty 解决了哪些痛点&lt;/li&gt;
&lt;li&gt;Reflect 配合 Proxy 的作用&lt;/li&gt;
&lt;li&gt;reactive、ref 区别与底层实现&lt;/li&gt;
&lt;li&gt;ref 为什么基础类型需要包裹对象&lt;/li&gt;
&lt;li&gt;toRef、toRefs 使用场景，解决的问题&lt;/li&gt;
&lt;li&gt;computed 在 setup 中使用方式&lt;/li&gt;
&lt;li&gt;watch、watchEffect 区别&lt;/li&gt;
&lt;li&gt;watch 监听对象、数组深度监听配置&lt;/li&gt;
&lt;li&gt;setup 执行时机，this 指向问题&lt;/li&gt;
&lt;li&gt;setup 参数 props、context 内容&lt;/li&gt;
&lt;li&gt;Composition API 对比 Options API 优势&lt;/li&gt;
&lt;li&gt;script setup 语法糖带来的变化&lt;/li&gt;
&lt;li&gt;script setup 中 defineProps、defineEmits、defineExpose&lt;/li&gt;
&lt;li&gt;生命周期钩子组合式写法 onMounted/onUpdated 等&lt;/li&gt;
&lt;li&gt;getCurrentInstance 获取组件实例&lt;/li&gt;
&lt;li&gt;provide / inject 在 Vue3 中如何实现响应式&lt;/li&gt;
&lt;li&gt;自定义 hooks 封装思路，复用逻辑&lt;/li&gt;
&lt;li&gt;Vue3 生命周期完整列表，与 Vue2 对应关系&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;八vue3-模板编译diff-优化&#34;&gt;八、Vue3 模板、编译、Diff 优化&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;Vue3 模板编译优化：PatchFlags 标记&lt;/li&gt;
&lt;li&gt;静态提升原理，减少 VNode 创建开销&lt;/li&gt;
&lt;li&gt;缓存内联事件处理函数&lt;/li&gt;
&lt;li&gt;Vue3 Diff 算法优化：最长递增子序列&lt;/li&gt;
&lt;li&gt;Diff 对比流程相比 Vue2 改进点&lt;/li&gt;
&lt;li&gt;Fragment 根节点多标签支持原理&lt;/li&gt;
&lt;li&gt;Teleport 传送门组件底层实现&lt;/li&gt;
&lt;li&gt;Suspense 异步组件加载处理&lt;/li&gt;
&lt;li&gt;v-model 在 Vue3 语法变更，多 v-model 实现&lt;/li&gt;
&lt;li&gt;.v-model 修饰符自定义处理&lt;/li&gt;
&lt;li&gt;插槽 v-slot 简写语法变化&lt;/li&gt;
&lt;li&gt;Vue3 移除 filter 过滤器替代方案&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;九piniavue3-状态管理&#34;&gt;九、Pinia（Vue3 状态管理）&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;Pinia 相比 Vuex 的优势&lt;/li&gt;
&lt;li&gt;Pinia 核心概念 state、getters、actions&lt;/li&gt;
&lt;li&gt;Pinia 支持同步异步，不再区分 mutations&lt;/li&gt;
&lt;li&gt;defineStore 定义仓库，id 作用&lt;/li&gt;
&lt;li&gt;直接修改 state 与 $patch 批量更新区别&lt;/li&gt;
&lt;li&gt;$reset、$subscribe、$onAction 使用场景&lt;/li&gt;
&lt;li&gt;Pinia 模块化拆分，无需命名空间&lt;/li&gt;
&lt;li&gt;Pinia 持久化插件使用&lt;/li&gt;
&lt;li&gt;setup 语法下使用 Pinia&lt;/li&gt;
&lt;li&gt;多个仓库互相调用数据方法&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;十vue-router-4vue3&#34;&gt;十、Vue Router 4（Vue3）&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;createRouter、createWebHashHistory、createWebHistory&lt;/li&gt;
&lt;li&gt;RouterView、RouterLink v-slot 插槽用法&lt;/li&gt;
&lt;li&gt;useRoute、useRouter 组合式 API 获取路由实例&lt;/li&gt;
&lt;li&gt;动态路由 addRoute 替换 addRoutes&lt;/li&gt;
&lt;li&gt;路由守卫组合式写法&lt;/li&gt;
&lt;li&gt;路由缓存与 Suspense 配合&lt;/li&gt;
&lt;li&gt;路由元类型 TS 类型提示处理&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;十一vue3-高级特性&#34;&gt;十一、Vue3 高级特性&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;watchPostEffect、watchSyncEffect 区别&lt;/li&gt;
&lt;li&gt;shallowRef、shallowReactive 浅层响应式作用&lt;/li&gt;
&lt;li&gt;readonly、shallowReadonly 只读代理&lt;/li&gt;
&lt;li&gt;customRef 自定义响应式引用&lt;/li&gt;
&lt;li&gt;effectScope 作用域收集副作用&lt;/li&gt;
&lt;li&gt;defineCustomElement 构建原生 webComponent&lt;/li&gt;
&lt;li&gt;Vue3 全局 API 变更 createApp 替代 new Vue()&lt;/li&gt;
&lt;li&gt;app.config 全局配置项&lt;/li&gt;
&lt;li&gt;全局组件、指令、插件注册方式变化&lt;/li&gt;
&lt;li&gt;Transition、TransitionGroup 动画组件原理&lt;/li&gt;
&lt;li&gt;v-memo 缓存 VNode 优化渲染&lt;/li&gt;
&lt;li&gt;异步 setup 函数配合 Suspense&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;十二工程化--构建工具&#34;&gt;十二、工程化 &amp;amp; 构建工具&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;Vue CLI 与 Vite 底层构建区别&lt;/li&gt;
&lt;li&gt;Vite 冷启动快的原理，esbuild 预构建&lt;/li&gt;
&lt;li&gt;Vite 热更新 HMR 实现机制&lt;/li&gt;
&lt;li&gt;vite.config.js 常用配置&lt;/li&gt;
&lt;li&gt;webpack 打包 Vue 文件流程 vue-loader&lt;/li&gt;
&lt;li&gt;.vue SFC 单文件组件解析过程&lt;/li&gt;
&lt;li&gt;scoped 样式隔离原理，深度选择器 /deep/ ::v-deep :deep()&lt;/li&gt;
&lt;li&gt;CSS Module 使用方式&lt;/li&gt;
&lt;li&gt;环境变量 .env 文件区分开发测试生产&lt;/li&gt;
&lt;li&gt;跨域代理 proxy 配置&lt;/li&gt;
&lt;li&gt;打包体积优化方案&lt;/li&gt;
&lt;li&gt;分包、懒加载、gzip 压缩配置&lt;/li&gt;
&lt;li&gt;TS 在 Vue 项目中配置声明文件&lt;/li&gt;
&lt;li&gt;第三方 UI 库按需引入配置&lt;/li&gt;
&lt;li&gt;全局自动导入组件、API 插件 unplugin-auto-import&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;十三网络请求与封装&#34;&gt;十三、网络请求与封装&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;axios 拦截器请求、响应封装思路&lt;/li&gt;
&lt;li&gt;请求 loading、统一错误处理封装&lt;/li&gt;
&lt;li&gt;token 过期自动刷新逻辑&lt;/li&gt;
&lt;li&gt;请求取消、重复请求拦截方案&lt;/li&gt;
&lt;li&gt;并发请求处理&lt;/li&gt;
&lt;li&gt;接口数据统一格式化处理&lt;/li&gt;
&lt;li&gt;封装请求 hooks 适配 Vue3&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;十四性能优化专项&#34;&gt;十四、性能优化专项&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;减少不必要组件渲染手段&lt;/li&gt;
&lt;li&gt;v-once、v-memo 使用场景&lt;/li&gt;
&lt;li&gt;长列表虚拟滚动实现原理&lt;/li&gt;
&lt;li&gt;响应式数据避免不必要监听&lt;/li&gt;
&lt;li&gt;computed 缓存减少重复计算&lt;/li&gt;
&lt;li&gt;图片懒加载方案&lt;/li&gt;
&lt;li&gt;路由懒加载分包优化&lt;/li&gt;
&lt;li&gt;keep-alive 合理缓存减少重复请求&lt;/li&gt;
&lt;li&gt;避免频繁触发 watch&lt;/li&gt;
&lt;li&gt;大列表数据冻结 Object.freeze&lt;/li&gt;
&lt;li&gt;减少 DOM 操作，合理使用虚拟 DOM&lt;/li&gt;
&lt;li&gt;打包体积优化：Tree-Shaking、剔除无用依赖&lt;/li&gt;
&lt;li&gt;Vite/Webpack 构建速度优化&lt;/li&gt;
&lt;li&gt;内存泄漏常见场景：定时器、事件监听、未销毁订阅&lt;/li&gt;
&lt;li&gt;Chrome Performance 面板排查页面卡顿&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;十五混合插件拓展开发&#34;&gt;十五、混合、插件、拓展开发&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;Vue2 mixin 缺陷，Vue3 用 hooks 替代原因&lt;/li&gt;
&lt;li&gt;Vue 插件开发完整结构 install 方法&lt;/li&gt;
&lt;li&gt;全局自定义指令完整开发&lt;/li&gt;
&lt;li&gt;封装业务通用组件规范&lt;/li&gt;
&lt;li&gt;二次封装 Element Plus / Ant Design Vue&lt;/li&gt;
&lt;li&gt;封装全局弹窗、消息提示组件&lt;/li&gt;
&lt;li&gt;自定义全局权限指令 v-permission&lt;/li&gt;
&lt;li&gt;页面权限、按钮权限实现方案&lt;/li&gt;
&lt;li&gt;全局错误捕获 errorHandler&lt;/li&gt;
&lt;li&gt;埋点、全局请求监控插件封装&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;十六项目实战场景问答题&#34;&gt;十六、项目实战场景问答题&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;项目整体架构分层设计&lt;/li&gt;
&lt;li&gt;Vue2 升级 Vue3 迁移改造遇到的问题&lt;/li&gt;
&lt;li&gt;大型项目状态管理选型 Vuex / Pinia 理由&lt;/li&gt;
&lt;li&gt;复杂树形菜单、表格组件封装思路&lt;/li&gt;
&lt;li&gt;表单校验全局统一封装方案&lt;/li&gt;
&lt;li&gt;页面权限控制完整实现流程&lt;/li&gt;
&lt;li&gt;多环境配置、多渠道打包处理&lt;/li&gt;
&lt;li&gt;首屏加载速度优化做了哪些处理&lt;/li&gt;
&lt;li&gt;路由鉴权、未登录拦截逻辑&lt;/li&gt;
&lt;li&gt;列表大量数据渲染卡顿如何解决&lt;/li&gt;
&lt;li&gt;项目打包体积过大优化方案&lt;/li&gt;
&lt;li&gt;页面缓存、返回保留表单状态实现&lt;/li&gt;
&lt;li&gt;接口并发冲突、重复提交拦截&lt;/li&gt;
&lt;li&gt;移动端适配方案 vw/vh、rem&lt;/li&gt;
&lt;li&gt;线上报错监控、异常捕获方案&lt;/li&gt;
&lt;/ol&gt;</description>
    </item>
    <item>
      <title>微信小程序 相关面试题整理</title>
      <link>https://lv-blog.pages.dev/posts/programming/frontend/%E5%BE%AE%E4%BF%A1%E5%B0%8F%E7%A8%8B%E5%BA%8F%E7%9B%B8%E5%85%B3%E9%9D%A2%E8%AF%95%E9%A2%98/</link>
      <pubDate>Wed, 15 Jul 2026 00:46:10 +0800</pubDate>
      <guid>https://lv-blog.pages.dev/posts/programming/frontend/%E5%BE%AE%E4%BF%A1%E5%B0%8F%E7%A8%8B%E5%BA%8F%E7%9B%B8%E5%85%B3%E9%9D%A2%E8%AF%95%E9%A2%98/</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;从互联网整理而来&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id=&#34;一基础概念与运行机制&#34;&gt;一、基础概念与运行机制&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;小程序与H5、App的核心区别&lt;/li&gt;
&lt;li&gt;小程序双线程模型分别是什么，各自职责&lt;/li&gt;
&lt;li&gt;逻辑层与视图层通信方式&lt;/li&gt;
&lt;li&gt;小程序渲染流程完整过程&lt;/li&gt;
&lt;li&gt;小程序启动流程（冷启动、热启动）&lt;/li&gt;
&lt;li&gt;冷启动和热启动的差异&lt;/li&gt;
&lt;li&gt;小程序分包加载机制概念&lt;/li&gt;
&lt;li&gt;主包与分包限制规则&lt;/li&gt;
&lt;li&gt;独立分包和普通分包区别&lt;/li&gt;
&lt;li&gt;小程序的生命周期分类（应用、页面、组件）&lt;/li&gt;
&lt;li&gt;小程序页面栈规则，最多存放多少页面&lt;/li&gt;
&lt;li&gt;小程序登录流程整体逻辑&lt;/li&gt;
&lt;li&gt;微信授权两种类型区别（基础授权、隐私授权）&lt;/li&gt;
&lt;li&gt;小程序原生宿主环境提供哪些能力&lt;/li&gt;
&lt;li&gt;小程序更新机制，静默更新与主动更新&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;二文件结构与配置&#34;&gt;二、文件结构与配置&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;小程序四种核心文件作用（json/wxml/wxss/js）&lt;/li&gt;
&lt;li&gt;app.json 全局配置常用字段&lt;/li&gt;
&lt;li&gt;page.json 页面配置优先级与app.json关系&lt;/li&gt;
&lt;li&gt;sitemap.json 作用&lt;/li&gt;
&lt;li&gt;project.config.json 用途&lt;/li&gt;
&lt;li&gt;app.js 全局App实例生命周期&lt;/li&gt;
&lt;li&gt;页面js Page构造器生命周期&lt;/li&gt;
&lt;li&gt;组件js Component构造器生命周期&lt;/li&gt;
&lt;li&gt;usingComponents 引入组件配置&lt;/li&gt;
&lt;li&gt;全局样式app.wxss和页面wxss权重规则&lt;/li&gt;
&lt;li&gt;wxss与css差异，特有特性&lt;/li&gt;
&lt;li&gt;rpx单位换算规则，适配原理&lt;/li&gt;
&lt;li&gt;小程序支持的选择器有哪些，不支持哪些&lt;/li&gt;
&lt;li&gt;图片、静态资源本地与线上引入规则&lt;/li&gt;
&lt;li&gt;分包配置subpackages字段参数含义&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;三wxml-模板语法&#34;&gt;三、WXML 模板语法&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;WXML数据绑定语法规则&lt;/li&gt;
&lt;li&gt;插值表达式支持哪些运算&lt;/li&gt;
&lt;li&gt;wx:if、wx:elif、wx:else 条件渲染&lt;/li&gt;
&lt;li&gt;hidden属性与wx:if性能差异&lt;/li&gt;
&lt;li&gt;wx:for列表渲染，wx:key作用&lt;/li&gt;
&lt;li&gt;wx:key使用规范，禁止index的场景&lt;/li&gt;
&lt;li&gt;block标签作用，是否生成真实节点&lt;/li&gt;
&lt;li&gt;模板template定义与引入，数据传递&lt;/li&gt;
&lt;li&gt;wxs脚本作用，运行环境限制&lt;/li&gt;
&lt;li&gt;wxs与js的区别，能否调用小程序API&lt;/li&gt;
&lt;li&gt;事件绑定bind、catch、capture-bind区别&lt;/li&gt;
&lt;li&gt;mut-bind互斥事件作用&lt;/li&gt;
&lt;li&gt;事件传参几种实现方式&lt;/li&gt;
&lt;li&gt;数据双向绑定model语法&lt;/li&gt;
&lt;li&gt;标签属性布尔值绑定规则&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;四组件系统原生自定义组件&#34;&gt;四、组件系统（原生+自定义组件）&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;小程序自定义组件创建完整结构&lt;/li&gt;
&lt;li&gt;Component中properties传参配置规则&lt;/li&gt;
&lt;li&gt;properties三种数据监听方式&lt;/li&gt;
&lt;li&gt;data、properties、observers执行顺序&lt;/li&gt;
&lt;li&gt;observers监听对象、数组深层变化写法&lt;/li&gt;
&lt;li&gt;组件生命周期完整钩子&lt;/li&gt;
&lt;li&gt;lifetimes与pageLifetimes区别&lt;/li&gt;
&lt;li&gt;组件插槽slot，具名插槽使用&lt;/li&gt;
&lt;li&gt;组件父子通信方式&lt;/li&gt;
&lt;li&gt;triggerEvent触发自定义事件传参&lt;/li&gt;
&lt;li&gt;selectComponent、selectAllComponents获取子组件&lt;/li&gt;
&lt;li&gt;behaviors复用逻辑，合并规则&lt;/li&gt;
&lt;li&gt;原生内置常用容器、表单、媒体组件&lt;/li&gt;
&lt;li&gt;scroll-view滚动注意事项&lt;/li&gt;
&lt;li&gt;movable-area、movable-view实现拖拽原理&lt;/li&gt;
&lt;li&gt;canvas新旧版本差异，2d画布使用&lt;/li&gt;
&lt;li&gt;web-view嵌入H5通信方案&lt;/li&gt;
&lt;li&gt;cover-view、cover-image使用限制场景&lt;/li&gt;
&lt;li&gt;自定义组件样式隔离options配置&lt;/li&gt;
&lt;li&gt;组件pureDataPattern作用&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;五数据管理与渲染更新&#34;&gt;五、数据管理与渲染更新&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;setData底层更新原理&lt;/li&gt;
&lt;li&gt;setData频繁调用性能问题&lt;/li&gt;
&lt;li&gt;setData单次数据大小限制&lt;/li&gt;
&lt;li&gt;局部更新数据简写写法&lt;/li&gt;
&lt;li&gt;直接修改this.data不调用setData为什么不更新视图&lt;/li&gt;
&lt;li&gt;复杂对象、数组更新setData写法&lt;/li&gt;
&lt;li&gt;全局数据共享几种方案&lt;/li&gt;
&lt;li&gt;getApp()全局变量优缺点&lt;/li&gt;
&lt;li&gt;globalData跨页面同步更新缺陷&lt;/li&gt;
&lt;li&gt;数据本地持久化storage存储限制&lt;/li&gt;
&lt;li&gt;wx.setStorage同步异步API区别&lt;/li&gt;
&lt;li&gt;storage大数据存储优化方案&lt;/li&gt;
&lt;li&gt;页面间数据传递方式对比&lt;/li&gt;
&lt;li&gt;页面栈取上一页实例方法&lt;/li&gt;
&lt;li&gt;大数据列表渲染卡顿优化思路&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;六路由与页面跳转&#34;&gt;六、路由与页面跳转&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;五种路由API区别（navigateTo/redirectTo/reLaunch/switchTab/navigateBack）&lt;/li&gt;
&lt;li&gt;switchTab跳转限制条件&lt;/li&gt;
&lt;li&gt;navigateTo无法跳tab页面解决方案&lt;/li&gt;
&lt;li&gt;路由传参两种方式，长参数丢失问题&lt;/li&gt;
&lt;li&gt;页面返回监听onUnload、onShow触发时机&lt;/li&gt;
&lt;li&gt;获取当前页面栈方法getCurrentPages()&lt;/li&gt;
&lt;li&gt;路由拦截统一封装思路&lt;/li&gt;
&lt;li&gt;tabBar配置规则，自定义tabBar实现&lt;/li&gt;
&lt;li&gt;自定义tabBar踩坑点&lt;/li&gt;
&lt;li&gt;页面跳转后保留表单状态方案&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;七网络请求与后端交互&#34;&gt;七、网络请求与后端交互&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;wx.request请求基础配置&lt;/li&gt;
&lt;li&gt;request合法域名校验规则，开发环境规避&lt;/li&gt;
&lt;li&gt;小程序请求携带cookie机制&lt;/li&gt;
&lt;li&gt;请求header统一封装token思路&lt;/li&gt;
&lt;li&gt;拦截器封装wx.request方案&lt;/li&gt;
&lt;li&gt;并发请求、请求超时处理&lt;/li&gt;
&lt;li&gt;文件上传wx.uploadFile参数配置&lt;/li&gt;
&lt;li&gt;文件下载wx.downloadFile使用场景&lt;/li&gt;
&lt;li&gt;websocket实时通信完整流程&lt;/li&gt;
&lt;li&gt;socket断线重连实现逻辑&lt;/li&gt;
&lt;li&gt;接口返回加密数据解密处理&lt;/li&gt;
&lt;li&gt;批量请求统一捕获异常&lt;/li&gt;
&lt;li&gt;小程序不支持跨域的根本原因&lt;/li&gt;
&lt;li&gt;上传图片压缩、裁剪处理&lt;/li&gt;
&lt;li&gt;上传进度监听API&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;八登录授权用户信息&#34;&gt;八、登录、授权、用户信息&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;wx.login获取code作用&lt;/li&gt;
&lt;li&gt;code换取openid完整流程&lt;/li&gt;
&lt;li&gt;openid、unionid区别与生成规则&lt;/li&gt;
&lt;li&gt;隐私保护新规下获取用户头像昵称方案&lt;/li&gt;
&lt;li&gt;getUserInfo接口废弃替代方案&lt;/li&gt;
&lt;li&gt;手机号一键登录流程&lt;/li&gt;
&lt;li&gt;授权scope各权限含义&lt;/li&gt;
&lt;li&gt;用户拒绝授权后重新引导授权逻辑&lt;/li&gt;
&lt;li&gt;登录态session_key过期处理&lt;/li&gt;
&lt;li&gt;第三方登录、关联账号实现&lt;/li&gt;
&lt;li&gt;登录状态持久化存储方案&lt;/li&gt;
&lt;li&gt;多端打通unionid获取条件&lt;/li&gt;
&lt;li&gt;隐私协议弹窗实现规范&lt;/li&gt;
&lt;li&gt;小程序订阅消息下发流程&lt;/li&gt;
&lt;li&gt;模板消息与订阅消息区别&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;九媒体图片地图设备api&#34;&gt;九、媒体、图片、地图、设备API&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;wx.chooseMedia选择图片视频参数&lt;/li&gt;
&lt;li&gt;图片预览wx.previewImage使用&lt;/li&gt;
&lt;li&gt;图片本地缓存方案&lt;/li&gt;
&lt;li&gt;录音、播放音频API使用&lt;/li&gt;
&lt;li&gt;video视频播放常见问题&lt;/li&gt;
&lt;li&gt;map地图组件标记、覆盖物绘制&lt;/li&gt;
&lt;li&gt;获取当前定位wx.getLocation权限配置&lt;/li&gt;
&lt;li&gt;后台持续定位配置要求&lt;/li&gt;
&lt;li&gt;设备信息、系统API获取&lt;/li&gt;
&lt;li&gt;振动、剪贴板、屏幕亮度API&lt;/li&gt;
&lt;li&gt;扫码wx.scanCode场景&lt;/li&gt;
&lt;li&gt;蓝牙BLE设备连接流程&lt;/li&gt;
&lt;li&gt;NFC基础使用场景&lt;/li&gt;
&lt;li&gt;相机camera组件适配&lt;/li&gt;
&lt;li&gt;文件管理FileSystemManager读写文件&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;十性能优化专项&#34;&gt;十、性能优化专项&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;setData性能优化手段&lt;/li&gt;
&lt;li&gt;长列表渲染优化方案&lt;/li&gt;
&lt;li&gt;虚拟列表实现思路&lt;/li&gt;
&lt;li&gt;分包加载优化首屏速度&lt;/li&gt;
&lt;li&gt;图片懒加载处理&lt;/li&gt;
&lt;li&gt;减少页面、组件层级嵌套&lt;/li&gt;
&lt;li&gt;wxss样式体积压缩优化&lt;/li&gt;
&lt;li&gt;分包预加载preloadRule配置&lt;/li&gt;
&lt;li&gt;避免频繁创建定时器、监听事件&lt;/li&gt;
&lt;li&gt;页面卸载清除所有订阅、定时器&lt;/li&gt;
&lt;li&gt;包体积超限优化方案&lt;/li&gt;
&lt;li&gt;开发者工具性能面板排查卡顿&lt;/li&gt;
&lt;li&gt;避免在onShow频繁请求接口&lt;/li&gt;
&lt;li&gt;图片资源压缩、webp适配&lt;/li&gt;
&lt;li&gt;减少observers深层监听开销&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;十一适配兼容多端&#34;&gt;十一、适配、兼容、多端&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;rpx、px、rem转换关系&lt;/li&gt;
&lt;li&gt;刘海屏、安全区适配css写法&lt;/li&gt;
&lt;li&gt;深色模式适配配置&lt;/li&gt;
&lt;li&gt;不同微信版本API兼容处理&lt;/li&gt;
&lt;li&gt;caniuse判断接口是否可用&lt;/li&gt;
&lt;li&gt;小程序转H5、转uni-app差异&lt;/li&gt;
&lt;li&gt;平板、PC端小程序适配要点&lt;/li&gt;
&lt;li&gt;低版本微信兼容降级方案&lt;/li&gt;
&lt;li&gt;字体、图片多设备适配&lt;/li&gt;
&lt;li&gt;自定义导航栏适配胶囊按钮&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;十二工程化第三方框架&#34;&gt;十二、工程化、第三方框架&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;原生小程序、uni-app、Taro区别&lt;/li&gt;
&lt;li&gt;Taro编译原理，多端适配逻辑&lt;/li&gt;
&lt;li&gt;uni-app分包、条件编译写法&lt;/li&gt;
&lt;li&gt;小程序npm依赖使用规则&lt;/li&gt;
&lt;li&gt;按需引入UI组件库优化&lt;/li&gt;
&lt;li&gt;工程化打包、环境变量区分&lt;/li&gt;
&lt;li&gt;多环境请求域名配置&lt;/li&gt;
&lt;li&gt;ESLint校验小程序代码规范&lt;/li&gt;
&lt;li&gt;Git协同开发规范&lt;/li&gt;
&lt;li&gt;CI自动上传小程序工具&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;十三支付分享广告业务能力&#34;&gt;十三、支付、分享、广告、业务能力&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;小程序支付完整流程&lt;/li&gt;
&lt;li&gt;支付回调后端处理逻辑&lt;/li&gt;
&lt;li&gt;分享onShareAppMessage、onShareTimeline配置&lt;/li&gt;
&lt;li&gt;分享图、分享路径动态处理&lt;/li&gt;
&lt;li&gt;分享到朋友圈限制条件&lt;/li&gt;
&lt;li&gt;插屏广告、激励视频广告接入&lt;/li&gt;
&lt;li&gt;小程序跳转其他小程序API&lt;/li&gt;
&lt;li&gt;跳转限制与关联配置要求&lt;/li&gt;
&lt;li&gt;客服消息接入流程&lt;/li&gt;
&lt;li&gt;商品卡片、搜索收录配置sitemap&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;十四安全审核合规&#34;&gt;十四、安全、审核、合规&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;小程序合法域名、业务域名、web-view域名区别&lt;/li&gt;
&lt;li&gt;前端存储敏感信息安全风险&lt;/li&gt;
&lt;li&gt;session_key不能传输到前端原因&lt;/li&gt;
&lt;li&gt;接口数据防篡改简单方案&lt;/li&gt;
&lt;li&gt;隐私合规要求有哪些&lt;/li&gt;
&lt;li&gt;图片、内容审核API调用&lt;/li&gt;
&lt;li&gt;小程序常见审核驳回原因&lt;/li&gt;
&lt;li&gt;诱导分享、诱导支付违规点&lt;/li&gt;
&lt;li&gt;本地存储数据加密思路&lt;/li&gt;
&lt;li&gt;防止恶意刷接口方案&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;十五实战场景综合题&#34;&gt;十五、实战场景综合题&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;项目整体目录架构设计&lt;/li&gt;
&lt;li&gt;封装通用请求库完整思路&lt;/li&gt;
&lt;li&gt;全局登录拦截、未登录跳转实现&lt;/li&gt;
&lt;li&gt;大型表单组件封装与校验&lt;/li&gt;
&lt;li&gt;多页面共享登录状态管理&lt;/li&gt;
&lt;li&gt;列表上拉加载、下拉刷新封装&lt;/li&gt;
&lt;li&gt;图片上传、预览、删除完整流程&lt;/li&gt;
&lt;li&gt;分包改造解决主包体积超限&lt;/li&gt;
&lt;li&gt;页面返回保留搜索条件、分页数据&lt;/li&gt;
&lt;li&gt;小程序热更新主动检测逻辑&lt;/li&gt;
&lt;li&gt;websocket聊天断线重连方案&lt;/li&gt;
&lt;li&gt;自定义tabBar遇到的坑与解决&lt;/li&gt;
&lt;li&gt;页面大量数据滑动卡顿优化&lt;/li&gt;
&lt;li&gt;线上白屏、加载失败排查思路&lt;/li&gt;
&lt;li&gt;原生小程序迁移Taro/uni改造方案&lt;/li&gt;
&lt;/ol&gt;</description>
    </item>
  </channel>
</rss>
