1、handler运行原理
https://blog.csdn.net/ttxs99989/article/details/81814037
2、message 复用机制
https://blog.csdn.net/huma8848888/article/details/104072695
3、message 调整优先级
sendMessageAtFrontOfQueue
postAtFrontOfQueue
在dispatchmessage 的时候 进行消息延迟 ??
4、线程池:
五个核心参数:
- corePoolSize: 该线程池中核心线程的数量
- maximumPoolSize:该线程池中最大线程数量
- unit:上面时间属性的单位
- workQueue:任务队列
- threadFactory:线程工厂,可用于设置线程名字等等,一般无须设置该参数。
5、线程池执行过程:
- execute一个线程之后,如果线程池中的线程数未达到核心线程数,则会立马启用一个核心线程去执行。
- execute一个线程之后,如果线程池中的线程数已经达到核心线程数,且workQueue未满,则将新任务放入workQueue中等待执行。
- execute一个线程之后,如果线程池中的线程数已经达到核心线程数但未超过非核心线程数,且workQueue已满,则开启一个非核心线程来执行任务。
- execute一个线程之后,如果线程池中的线程数已经超过非核心线程数,则拒绝执行该任务,采取饱和策略,并抛出RejectedExecutionException异常。
6、那些集合是线程安全的?
安全 | 非安全 | 备注 |
---|---|---|
HashTable | ArrayList | |
Vector | LinkedList | |
StringBuffer | HashMap | |
HashSet | ||
TreeMap | ||
TreeSet | ||
StringBuilder |
7、事件分发
https://www.jianshu.com/p/e99b5e8bd67b
8、view绘制(自定义view整体流程)
https://blog.csdn.net/sinat_27154507/article/details/79748010
9、内存泄漏 & 内存溢出、如何优化
内存泄漏:无法释放已申请的内存空间;
内存溢出:没有足够的内存提供申请者使用;
二者关系:
内存泄漏的堆积会导致内存溢出;
内存泄漏的分类:(按发生方式分类)
常发性内存泄漏、偶发性内存泄漏、一次性内存泄漏、隐式内存泄漏
10、RcRoot几种标记方法
11、消息队列是什么原理
12、arraylist 、 linklist 原理
13、如何在自线程里面更新UI
14、hashmap 原理
15、threadlocal 怎么保证线程唯一
16、classloader 有哪些子类,分别的作用是什么(热修复原理、插桩)
17、anr 时间
18、bitmap计算内存大小
19、oom出现场景
20、activity生命周期
20.1、fragment 生命周期&懒加载
21、service 如何绑定,如何运转
22、aidl
23、进程间通信、线程间通信
24、Android中有多少种锁
25、性能优化、包大小优化等
26、flutter web缓存问题
27、flutter 父view与子view间使用什么通信,有几种方法
28、flutter 与native 交互的方式
29、flutter 怎么自定义widget
30、widget、element、RenderObject 关系理解
31、ynb hybrid web缓存、怎么优化,优化了哪些内容
32、Android中的方法 spreadarray 、invalidate
33、uml图、手画类图,类与类之间的六种关系