1.自我介绍
2.介绍自己的任务栈
3.组件化通信用了什么技术
4.Handler机制的理解
5.Handler匿名内部类AS警告内存泄漏的原因
6.Handler机制延时任务的执行方法
7.Kotlin的inline
8.Kotlin静态的原理
9.volitile的原理
10.DCL单例中volitile的作用
11.DCL单例中两次判空的原因
1.JAVA的多态
2.多态的作用
3.JVM内存分区
4.JVM垃圾回收算法
5.新生代老年代算法
6.性能优化
7.启动优化的数据分析
8.内存优化
9.内存泄漏
10.常见的内存泄漏场景
11.非静态内部类Handler持有外部类引用的解决方法
12.静态内部类以弱引用方式持有外部引用解决交互和内存泄漏
13.JAVA四种引用的区别
14.OOM处理方案
15.LeakCanary原理
16.okhttp连接与线程池
17.okhttp请求流程和同步异步区别
18.okHttp的责任链如何连起来
19.okhttp拦截器源码
20.HashMap源码
21.HashMap插入元素的原理
22.数组和链表的区别
23.sychronized升级过程
24.CAS作用
25.ConcurrentHashMap安全原理
26.乐观锁
27.线程池源码
28.线程池addWorker原理
29.类加载机制
30.热修复
31.热修复dex文件替换原理
32.Activity启动流程
33.Activity启动流程中的进程间通信
34.AMS
35.Zygote
36.自定义View
37.onMeasure测量原理(很复杂 仔细看)
38.从Activity的启动流程到View的绘制流程
39.对flutter的了解
40.设计模式
41.动态代理和静态代理的区别
42.设计模式六大原则
43.迪米特原则的意义
44.项目重构的思想
45.对AAC架构的理解
46.组件化实施方案
47.项目的版本控制如何实现
48.ARouter原理
49.一个未捕获的异常crash 怎么能让程序继续运行下去
1.线上BUG和行为的监控方案
2.ANR监控方案
3.Looper死循环不ANR原理
4.线上OOM监控方案
5.OOM可以捕获吗
6.Jetpack常用的内容
7.ViewModel的作用
8.ViewModel的生命周期
9.ViewModel保存在Application和ViewModelScope的区别
10.ViewModel如何保证Activity销毁后保存数据
11.Lifecycle的使用场景
12.自定义控件使用Lifecycle
13.Kotlin扩展函数适合使用场景
14.子线程Toast
15.子线程Dialog
16.子线程如何弹Dialog
17.广播和Service弹Dialog
18.Service使用场景
19.大文件下载然后加载的方案
20.Service启动方式
21.Service可以先start再bind或者先bind再start吗
22.多次调用bindService
23.Service后台常驻方案
24.Service保活方案
25.MVC,MVP,MVVM区别
26.databinding可能导致什么问题
27.自定义一个图片框架要考虑哪些内容
28.android在当前包名下的可用空间上限
29.LruCache原理
30.开发中常用的集合
31.线程安全的集合
32.synchronized可用范围
33.synchronized静态方法和普通方法的区别
34.同步方法继承
35.顺序请求多个接口方案
36.同时请求多个接口方案
37.线程池
38.系统提供的线程池
39.流式编程和响应式编程
40.Kotlin的Flow
41.SharedPreferences的apply和commit的区别
42.Parcelable和Serializable的区别
43.枚举和常量的性能区别
44.静态内部类和普通内部类的区别
45.Kotlin静态内部类
46.Kotlin 普通内部类和inner内部类
47.Kotlin直接声明变量 和 创建类再声明变量 的区别
48.ActivityA打开ActivityB,再从ActivityB返回到A的生命周期
49.ViewPager管理Fragment的生命周期
50.ViewPager预加载
51.ViewPager2和ViewPager懒加载的区别
52.ViewPager2懒加载机制
53.Flutter热更新方案
54.flutter_boost
55.Google Firebase
56.多语言切换可能有哪些问题
57.组件化动态依赖方案,如aar,jar包,在使用时下载对应的包