A Job InterView总结

不积跬步无以至千里

1.Bundle与HashMap的区别(小米)

答:其中Bundle内部存储封装的是ArrayMap,因此这里就要说一下ArrayMap与HashMap的区别;

HashMap:它是由数组与链表构成,其中内部的元素有初始因子与初始大小,其中当大于初始因子*初始大小,这里就要进行扩容,这样是很消耗性能的,因此HashMap在性能这里是稍微差点的;

ArrayMap:它是与SpareArray一样,他们都是内部Key与Value分别用两个数组来存储,而其中在查找上又利用了两分法查找大大的提高了效率.

2.ArrayList与LinkedList的区别(梧桐树车载)

答:ArrayList与LinkedList他们都是继承了List,但是他们内部的存储结构大不相同

ArrayList:它的内部是由数组组成,ArrayList的插入与删除是同样的效率,而其中在中间的插入与删除是比较消耗性能的,它的查询操作是比较快的,所以进行查询操作尽量使用ArrayList;

LinkedList:它的内部是由链表组成,LinkedList的插入与删除是比较快捷的因为链表内部就是指针,而他的查询操作就效率比较低,因此关于增删操作尽量使用LinkedList.

3.关于Handler(梧桐树车载)

① 一个线程可以有几个Handler,有几个Looper?

答:一个线程可以有多个Handler,只能有一个Looper,Looper的创建通过prepare方法,可以查看源码只能执行一次,如果再次执行就会抛出异常并报错,因此只会拥有一个MessageQueue和一个Looper;

② 那他们是怎么区分自己的Handler去处理自己的Message的呢?

看这里,他们其实不管调用sendMessage()还是各种AtTime或者Delay的最终调用的是如下这个方法:

private boolean

猜你喜欢

转载自blog.csdn.net/WDYShowTime/article/details/88657092
job