从互联网整理而来

一、Dart 基础

  1. Dart 的数据类型有哪些?
  2. var、final、const 的区别
  3. Dart 中 null safety 是什么,如何使用?
  4. late 关键字作用与使用场景
  5. Dart 函数可选参数、命名参数、位置参数区别
  6. 箭头函数适用范围
  7. Dart 异步:Future、async/await 原理
  8. Stream 与 Future 区别,StreamController 使用
  9. sync*、async*、yield、yield each 作用
  10. Dart 类中 extends、implements、mixin 区别
  11. mixin 有什么限制,能否构造函数传参
  12. 抽象类与接口区别
  13. 泛型 T、?T、T?、required T 区别
  14. Dart 单例几种实现方式
  15. 工厂构造函数 factory 作用
  16. 常量构造函数使用条件
  17. 级联运算符 .. 原理
  18. 空值操作符 ?.、??、??= 用法
  19. Dart 枚举进阶用法,能否自定义属性方法
  20. Isolate 是什么,和线程区别,通信方式
  21. Isolate 共享内存吗,数据传递限制
  22. Zone 作用是什么
  23. Dart 垃圾回收机制
  24. 函数一等公民体现在哪里
  25. typedef 作用与场景

二、Flutter 框架核心原理

  1. Flutter 三棵树:Widget、Element、RenderTree 关系
  2. StatelessWidget 和 StatefulWidget 底层差异
  3. State 生命周期完整流程
  4. initState、didChangeDependencies、build、didUpdateWidget、dispose 执行时机
  5. setState 底层更新机制
  6. Widget 为什么是不可变的 immutable
  7. Element 作用,Element 复用逻辑
  8. RenderObject 职责是什么
  9. Key 的作用,几种 Key 区别(ValueKey、ObjectKey、UniqueKey、GlobalKey)
  10. GlobalKey 使用场景与隐患
  11. LocalKey 解决什么问题
  12. Widget 重建流程,哪些情况会触发重建
  13. 什么是 const Widget,好处是什么
  14. Flutter 渲染流程:布局、绘制、合成步骤
  15. 布局约束流程:Constraints 传递规则
  16. 父布局约束如何限制子控件尺寸
  17. RepaintBoundary 作用,何时使用
  18. Layer 树作用,缓存机制
  19. Flutter 与原生 Android/iOS 渲染区别
  20. Skia 引擎作用
  21. Impeller 渲染引擎对比 Skia 优势
  22. Flutter 绘制原理,Canvas、Paint 流程
  23. PipelineOwner 作用
  24. WidgetsBinding、SchedulerBinding 职责
  25. 帧调度流程:Vsync、帧回调执行顺序
  26. transientCallbacks、persistentCallbacks、postFrameCallbacks 区别
  27. Flutter 热重载原理,热重启区别
  28. 编译模式:debug/profile/release 差异
  29. AOT、JIT 编译区别
  30. Flutter 页面路由底层实现原理

三、布局 & 基础组件

  1. Row Column Flex 布局区别,主轴交叉轴概念
  2. MainAxisAlignment、CrossAxisAlignment 所有枚举值含义
  3. Expanded、Flexible 区别,flex 参数作用
  4. Stack、Positioned 布局规则
  5. Align、Center 底层关系
  6. Padding、Container 内部结构
  7. Container 嵌套过多有什么性能问题
  8. SizedBox、ConstrainedBox、UnconstrainedBox 用途
  9. AspectRatio、FittedBox 缩放逻辑
  10. Wrap 自动换行实现原理
  11. ListView 几种构造方式区别(默认、builder、separated)
  12. ListView.builder 高性能原理,复用机制
  13. ListView 滚动复用失效场景
  14. GridView 使用与性能优化
  15. SingleChildScrollView 嵌套 ListView 报错解决方案
  16. CustomScrollView、Sliver 体系是什么
  17. SliverList、SliverGrid、SliverAppBar、SliverToBoxAdapter 使用场景
  18. SliverPersistentHeader 固定吸顶实现
  19. CustomScrollView 滚动统一原理
  20. Table、DataTable 布局特性
  21. IntrinsicHeight、IntrinsicWidth 性能损耗原因
  22. LayoutBuilder 获取父布局约束场景
  23. MediaQuery 获取设备信息,MediaQuery.of(context) 刷新机制
  24. LayoutId、MultiChildLayout 自定义布局
  25. Flow 高性能流式布局适用场景

四、状态管理

  1. State 自身状态管理优缺点
  2. InheritedWidget 底层原理,数据传递逻辑
  3. InheritedModel 对比 InheritedWidget 优势
  4. Provider 整套库实现原理(ChangeNotifierProvider、Consumer、Selector)
  5. Selector 为什么能精准局部刷新
  6. ChangeNotifier 通知更新机制
  7. StateProvider、FutureProvider、StreamProvider 区别
  8. Riverpod 对比 Provider 改进点
  9. Riverpod 全局状态、自动 dispose、无 context 优势
  10. StateNotifier、AsyncNotifier 使用场景
  11. Bloc 核心概念:Event、State、Bloc/Cubit
  12. Cubit 与 Bloc 区别
  13. BlocProvider、BlocConsumer、BlocBuilder、BlocListener 分工
  14. Bloc 状态单一数据源优势
  15. GetX 状态管理原理,GetController 生命周期
  16. GetX 全局路由、依赖注入实现
  17. GetX 优缺点,存在什么性能隐患
  18. Redux 在 Flutter 中使用逻辑
  19. MobX 响应式原理,Observable、Action、Reaction
  20. 大型项目如何选型状态管理方案
  21. 跨页面共享状态几种实现方式对比
  22. 状态持久化配合状态管理怎么做

五、路由 & 导航

  1. Navigator 1.0 路由栈管理原理
  2. MaterialPageRoute、CupertinoPageRoute 区别
  3. PageRouteBuilder 自定义转场动画
  4. Navigator push/pop/pushReplacement/popUntil 逻辑
  5. 路由传参几种方式
  6. Navigator 2.0 核心组件:Router、RouteInformationParser、RouterDelegate
  7. Navigator 2.0 完整路由流程
  8. GoRouter 框架底层封装逻辑
  9. GoRouter 嵌套路由、路由守卫、参数获取
  10. 路由栈持久化、页面状态保存方案
  11. 底部导航多 Tab 页面状态保持实现
  12. 路由拦截、登录鉴权统一处理
  13. 原生页面与 Flutter 页面互相跳转路由处理
  14. 页面返回监听 WillPopScope、PopScope
  15. 深度链接 deep link 适配方案

六、动画

  1. Flutter 动画核心类:Animation、AnimationController、CurvedAnimation
  2. AnimationController vsync 作用,为什么需要 TickerProvider
  3. SingleTickerProviderStateMixin、TickerProviderStateMixin 区别
  4. Tween、Animatable 差值计算原理
  5. 显式动画与隐式动画区别
  6. AnimatedContainer、AnimatedOpacity 等隐式动画底层
  7. Hero 共享元素动画实现原理
  8. PageRoute 共享 Hero 流程
  9. CustomAnimation 自定义动画组件
  10. 交错动画 Interval 使用
  11. 动画性能优化,避免重建
  12. Lottie 动画集成原理,性能注意点
  13. 循环动画、反向动画实现
  14. 动画暂停、恢复、释放资源处理
  15. 自定义路由转场动画

七、网络 & 本地存储

  1. dio 库封装思路,拦截器使用
  2. dio 统一请求头、错误处理、token 自动刷新
  3. 取消请求 CancelToken 使用场景
  4. 并发请求、超时处理
  5. Json 序列化反序列化几种方式(手动、json_serializable)
  6. fromJson/toJson 生成流程
  7. Freezed 数据模型优势
  8. http 库与 dio 对比
  9. WebSocket 在 Flutter 中使用,重连机制
  10. shared_preferences 底层存储原理
  11. Hive 本地数据库优势,Box 使用
  12. Hive 加密、大数据存储优化
  13. sqflite 数据库操作,事务使用
  14. Isolate 中操作数据库注意事项
  15. 文件读写 path_provider 获取路径
  16. 图片缓存 cached_network_image 实现逻辑
  17. 网络请求缓存策略设计
  18. 接口统一异常捕获封装方案

八、原生交互 MethodChannel

  1. MethodChannel、BasicMessageChannel、EventChannel 三者区别
  2. MethodChannel 双向通信完整流程
  3. Flutter 调用 Android 原生代码步骤
  4. Flutter 调用 iOS OC/Swift 步骤
  5. 原生主动推送数据给 Flutter 使用哪个 Channel
  6. 传参类型限制,复杂对象传递方案
  7. 多页面 Channel 单例管理
  8. PlatformView 嵌入原生 View(Android View、iOS UIView)
  9. PlatformView 性能问题与优化
  10. 原生页面跳转 Flutter 传参
  11. 权限通过原生通道申请方案
  12. 混合栈开发:flutterBoost 原理
  13. flutterBoost 页面生命周期同步问题
  14. 原生资源与 Flutter 资源冲突处理
  15. 通信通道内存泄漏如何避免

九、性能优化专项

  1. Widget 重建常见诱因与规避手段
  2. const 构造优化原理
  3. Key 不合理使用导致的性能问题
  4. ListView 长列表优化方案
  5. 图片加载优化:尺寸、缓存、压缩
  6. RepaintBoundary 拆分重绘区域场景
  7. 减少 Layer 树层级优化
  8. 避免使用 Intrinsic 系列控件原因
  9. 动画卡顿排查思路
  10. DevTools 工具使用:性能面板、内存、Widget 检查
  11. 内存泄漏常见场景(Timer、Stream、Channel、Animation)
  12. 大图片、大量对象内存释放方案
  13. Isolate 处理耗时计算优化 UI
  14. build 方法避免耗时操作
  15. 布局嵌套过深优化手段
  16. 页面 dispose 资源释放规范
  17. Profile 模式性能排查要点
  18. 启动速度优化(包体积、懒加载、预加载)
  19. Flutter 包体积优化方案
  20. 滑动卡顿完整排查流程

十、图片、手势、输入、弹窗组件

  1. Image 几种构造:AssetImage、NetworkImage、FileImage、MemoryImage
  2. ImageProvider 缓存机制
  3. Image.network 缓存缺陷,cached_network_image 弥补方案
  4. DecorationImage、FadeInImage 使用
  5. GestureDetector 手势识别原理,多手势冲突
  6. Listener 底层原始手势与 GestureDetector 区别
  7. 手势竞争、手势忽略场景
  8. InkWell 水波纹实现原理,必须嵌套 Material
  9. TextField 控制器 TextEditingController 使用
  10. TextField 输入监听、格式化、光标控制
  11. 表单 Form、GlobalKey 校验逻辑
  12. ModalRoute、showDialog、showBottomSheet 弹窗原理
  13. 弹窗状态共享问题解决方案
  14. Draggable、LongPressDraggable 拖拽实现
  15. Transform 变换不改变布局约束特性

十一、项目工程 & 打包适配

  1. pubspec.yaml 各字段含义,依赖版本约束
  2. 本地依赖、Git 依赖、远程依赖配置
  3. pub 依赖冲突解决方法
  4. Flutter 多环境配置(开发/测试/生产)
  5. Flavor 多渠道打包 Android & iOS
  6. Android 打包 keystore 配置,iOS 证书配置
  7. AndroidManifest、Info.plist 权限适配
  8. 屏幕适配方案:媒体查询、比例、flutter_screenutil
  9. 深色模式适配实现
  10. 多语言国际化 intl 库使用
  11. App 图标、启动页配置
  12. Flutter 插件开发流程
  13. 平台区分代码编写(dart.io、Platform 判断)
  14. 混合开发项目目录结构
  15. CI/CD 自动打包脚本思路
  16. 版本号管理升级方案
  17. 第三方插件兼容问题处理

十二、进阶底层 & 疑难场景

  1. WidgetsApp、MaterialApp、CupertinoApp 内部结构
  2. ThemeData 主题分发原理,局部主题覆盖
  3. Navigator 上下文与页面上下文区别
  4. context 获取上层 Widget 原理,BuildContext 分类
  5. State 保存在 Element 中,Widget 重建 State 不销毁条件
  6. Offstage、Visibility 控件隐藏区别
  7. AbsorbPointer、IgnorePointer 拦截手势差异
  8. Clip 裁剪控件:ClipRect、ClipRRect、ClipOval 性能
  9. BackdropFilter 模糊控件性能损耗原因
  10. RenderBox 自定义控件完整流程
  11. 自定义 RenderObject 实现步骤
  12. 自定义 MultiChildRenderObjectWidget
  13. ScrollController 监听滚动、滚动定位
  14. ScrollPhysics 滚动回弹、阻尼自定义
  15. 监听应用前后台切换 AppLifecycleState
  16. 截屏、屏幕亮度、震动原生能力实现
  17. WebView 插件使用与通信
  18. Flutter Web 编译差异,平台兼容问题
  19. Flutter Windows/macOS/Linux 桌面端适配要点
  20. 如何实现全局捕获异常
  21. Timer、StreamSubscription 忘记取消的内存泄漏
  22. 列表 item 点击状态保存方案
  23. 异步并发竞态条件问题处理
  24. 图片大量加载 OOM 解决方案
  25. 原生弹窗遮挡 Flutter 页面问题

十三、综合项目面试问答题

  1. 讲一下你项目整体架构分层
  2. 项目状态管理选型原因
  3. 长列表卡顿怎么优化的
  4. 多页面共享登录状态如何实现
  5. token 过期统一拦截处理方案
  6. 项目混合栈开发遇到哪些坑
  7. 图片缓存、网络缓存怎么设计
  8. 全局网络加载弹窗、错误页封装思路
  9. 项目通用业务组件封装思路
  10. 线上卡顿、崩溃排查处理经验
  11. 如何实现页面无网络重试逻辑
  12. 复杂表单页面状态管理方案
  13. 项目包体积优化做了哪些操作
  14. 多渠道、多环境配置实现
  15. 封装通用 Dio 请求库完整思路