# 面试题 **Repository Path**: aarons_pig/interview-questions ## Basic Information - **Project Name**: 面试题 - **Description**: 面试题 - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 8 - **Created**: 2024-03-06 - **Last Updated**: 2024-03-06 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README [开发笔记](https://gitee.com/conghaonet/development-notes) # 面试题 - [面试题-Kotlin](面试题-Kotlin.md) - [面试题-Android](面试题-Android.md) - [面试题-Flutter](面试题-Flutter.md) - [面试题-Dart](面试题-Dart.md) --- ### Java&Kotlin相关技能 1. 数据类(data class)【kotlin】 2. 泛型(分析API返回的数据结构,定义泛型) 3. 数据类实现Parcelable(相对于序列化的优点)【kotlin】 4. 封装网络工具类(kotlin单例、懒加载)【kotlin】 5. Retrofit的协程实现(ApiService中定义的suspend方法)【kotlin】 6. 网络请求使用协程的好处(与RxJava对比) 7. 使用MVVM框架的优缺点(与MVC、MVP的简单对比) 8. 使用ViewModel的优点(生命周期感知、持久性) 9. ViewModelProvider获取和管理ViewModel对象的好处 10. 输入用户名、密码时使用LiveData校验输入项是否为空 11. 使用LiveData的setValue和postValue的区别 12. 在viewModelScope或lifecycleScope中启动协程 13. 使用ViewPager2代替ViewPager的好处 14. 使用registerForActivityResult代替过失的startActivityForResult 15. SharedPreferences(SP)存储,commit和apply的区别 16. 图片(Bitmap)采样率(InSampleSize)的作用 17. 在启动(闪屏页)页面,使用协程实现倒计时,以及如何终止协程 18. 使用InputSteam或OutputSteam时,应手动关闭(应该哪个代码块中关闭)。 19. 使用Bugly上报异常 20. 使用Profiler、Leak Canary检查内存泄漏 --- ### Flutter&Java相关技能 - 熟练掌握Java、Flutter(Dart)开发语言 - 了解Dart空安全(null safety)相关知识 - 熟悉Android(App) + Flutter(Module)混合应用开发 - 熟练掌握 MVC、MVP、MVVM等架构模式进行开发 - 熟练掌握 OkHttp、Retrofit、RxJava网络框架(Android) - 熟练掌握 Dio、Retrofit网络框架(Flutter) - 熟悉Handler工作原理(Android) - 深入理解Activity、Fragment生命周期(Android) - 熟悉StatefulWidget生命周期(Flutter) - 熟悉Flutter状态管理框架(Provider、Riverpod) - 熟练掌握Glide,了解Glide三层缓存原理(Android) - 熟练掌握CachedNetworkImage(Flutter) - 熟练掌握Android的三种动画:帧动画、View动画(补间动画)、属性动画(Android) - 熟练使用Dart Json泛型(Flutter) - 使用go_router进行路由管理(Flutter) - 熟练使用Flutter布局Rom,Column、ListView、GridView等(Flutter) - 熟悉TabLayout + ViewPager2(Android) - 使用AndroidStudio的Profiler优化,查看内存泄露 - 掌握Android/Flutter组件化开发