2017.12.21三题

1.介绍垃圾回收机制

1.标记回收法:遍历对象图并且记录可达的对象,以便删除不可到达的对象,一般使用单线程工作并且可能产生内存碎片。
2.标记-压缩回收发:前期与第一种方法相同,只是多了一步,将所有的存活对象压缩到内存一段,这样内存碎片就可以合成一大块可再利用的内存区域,提高了内存利用率
3.复制回收法:把现有内存空间分成两部分,gc运行时,它可到达对象复制到另一半空间,再清空正在使用的控件的全部对象。这种方法是用于短生存期的对象,持续复制长生存期的对象则导致效率降低。
4.分代回收法:把内存分为两个或者多个域,如年轻代和老年代,年轻代的特点是对象会很快被回收,因此在年轻代使用效率比较高的算法,当一个对象经过几次回收后依然存活,对象就会被放入称为老年的内存空间,老年代则采取标记-压缩算法

2.ArrayList、LinkedList、Vector的区别

1.ArrayList和Vector底层是采用数组方式存储数据,Vector由于使用了 synchronized方法(线程安全)所以性能上比ArrayList要差。
2.Linkedlist使用双向链表实现存储,随机存取比较慢。
3.HashMap的底层源码实现:当我们往hashmap中put元素的时候,先根据key的hashCode重新计算hash值,根据hash值得到这个元素在数组中的位置(即下标),如果数组该位置上已经放有其他元素了,那么在这个位置上的原生将以链表的形式存,新加入的放在链头,最先加入的放在链尾。如果数组该位置上没有元素,就直接将该元素放到此数组中的该位置上。

3.android线程间通信有哪几种方式?

1.共享变量(内存)
2.管道
3.handler机制:runOnUiThread(Runnable)
view.post(Runnable)

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 从三月份找实习到现在,面了一些公司,挂了不少,但最终还是拿到小米、百度、阿里、京东、新浪、CVTE、乐视家的研发岗...
    时芥蓝阅读 42,419评论 11 349
  • (一)Java部分 1、列举出JAVA中6个比较常用的包【天威诚信面试题】 【参考答案】 java.lang;ja...
    独云阅读 7,155评论 0 62
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,872评论 18 399
  • 文/万俟小七
    扇子沫沫阅读 331评论 2 4
  • 2017年1月13日上午,姥爷走了。我即刻从深圳赶往广州机场,飞到家中,已是深夜。我曾以为,我可以很平静的看待80...
    小马不怕过河阅读 1,018评论 7 4