协程调度器 dispatcher.default 和dispatcher.IO的区别
HashMap底层实现原理
1.底层的数据结构是数组和链表,数组里面存键值对(Entry)。
2.HashMap用键的hashcode()方法生成一个哈希值,然后将hash值映射到数组索引上
3.当多个键的hash值映射到同一个索引上,然后hashmap使用链表存储这些键值对,在这个数组的位置,存储的是链表的头节点
4.如果数组当中存的链表的长度超过一个值,链表会转变成红黑树,提高查找效率
HashMap扩容原理
1.HashMap的元素数量超过一定的值,HashMap会进行扩容,把数组大小翻倍,重新分配所有键值对到新的数组位置
HashMap查找步骤
1.通过键的HashCode计算哈希值,然后找到对应的数组位置,然后在链表或者红黑树中插入新的值
startforegroundservice 不同版本的区别,导致anr的案例
Glide的缓存策略和缓存原理
Rx'java的操作符和线程切换的操作符
Arouter实现路由的原理
recyclerview缓存的底层实现
线程池的核心线程会被回收吗 线程池的线程收敛
外部存储的权限
valotatie和synchnorized的区别
android的沙盒机制