面试知识点总结01

1.Android 版本Bug

想必使用过 Android 5.0.1 系统的用户对内存泄露 bug 不会感到陌生,此缺陷不仅会导致内存占用过高,还会进而致使应用及其后台进程被强制关闭,甚至是系统界面崩溃等。

  内存泄露

  信息泄露

  流量泄露

2.ArrayList 和LinkList的区别

ArrayList 采用的是数组形式来保存对象的,这种方式将对象放在连续的位置中,所以最大的缺点就是插入删除时非常麻烦

LinkedList 采用的将对象存放在独立的空间中,而且在每个空间中还保存下一个链接的索引 ,但是缺点就是查找非常麻烦 要丛第一个索引开始。

通俗理解: 你可以把 ArrayList看做是一个大小长度可变的数组来使用~~~ 一般情况也常用这个做查询操作;

LinkedList呢 他其实是一种链表形式的容器,插入删除很方便 。

 

3.Service的生命周期以及Banding Service 和 Start Service 的区别?

service根据不同的启动方式会展现出不同的生命周期:

如果以onStart()方式: context.startService() ->onCreate()- >onStart()->Service running context.stopService() | ->onDestroy() ->Service stop

如果Service还没有运行,则android先调用onCreate()然后调用onStart();如果Service已经运行,则只调用onStart(),所以一个Service的onStart方法可能会重复调用多次。

stopService的时候直接onDestroy,如果是调用者自己直接退出而没有调用stopService的话,Service会一直在后台运行。

该Service的调用者再启动起来后可以通过stopService关闭Service。 所以调用startService的生命周期为:onCreate --> onStart(可多次调用) --> onDestroy

如果以onBInd()方式:   

使用使用context.bindService()启动Service会经历:

   context.bindService()->onCreate()->onBind()->Service running

  onUnbind() -> onDestroy() ->Service stop

  onBind将返回给客户端一个IBind接口实例,IBind允许客户端回调服务的方法,比如得到Service运行的状态或其他操作。  这个时候把调用者(Context,例如Activity)会和Service绑定在一起,Context退出了,Srevice就会调用onUnbind->onDestroy相应退出。

   所以调用bindService的生命周期为:onCreate --> onBind(只一次,不可多次绑定) --> onUnbind --> onDestory。    

在Service每一次的开启关闭过程中,只有onStart可被多次调用(通过多次startService调用),其他onCreate,onBind,onUnbind,onDestory在一个生命周期中只能被调用一次。

  onStart()的方式一般用以本地服务的调用,Activity与Service不需要交互,调用者与Service无任何关系 如果以onBInd()方式:远程调用,Activity与Service会有交互,调用者与Service绑定在一起。

注意:Service需要在清单文件中进行配置才能使用。

关于四大组件: http://www.cnblogs.com/pepcod/archive/2013/02/11/2937403.html 这个帖子写的很好。

4.res/raw和assets目录的区别

答:  二者的相同点:都会直接原封不动的保存在APK中而不会被编译成二进制文件  

  不同点:   

  1.raw目录下,不能存在文件,而不能包含文件夹。而assets可以包含下一级的文件夹  

   2.raw目录下的资源会映射到R.java下生成资源ID,assets不会。

    3.获得资源的方法不同如下:   

   this.getAssets().open("xml/channels.xml");    

  this.getResources().openRawResource(R.raw.students);    

  this.getClassLoader().getResourceAsStream("students.xml");

5.String与StringBuffer,StringBuilder的区别

   1.三者在执行速度方面的比较: StringBuilder>StringBuffer>String

  2.String执行速度最慢的原因  String :字符串常量  StringBuffer:字符串变量  StringBuilder:字符串变量  由上可知:string是字符串常量也就是不可改变的对象,

 如: String str1 ="Hello";   

  str1 = str1+"wolrd";   

  syso(str1);---->Helloworld;   

  虽然输出是这样,但是内部实现是:首先创建一个对象str1,然后在创建一个新的对象str1来合并操作,   而原来的对象被GC回收掉。   

  而StringBuffer和StringBuilder则是在原来的对象上进行操作。   StringBuffer有一个方法:append(),添加字符串;  

   2.线程安全性:    

    StringBuffer是线程安全的    

    StringBuilder 是线程非安全的;  

对于三者使用的总结:

 1.如果要操作少量的数据用 = String  

  2.单线程操作字符串缓冲区 下操作大量数据 = StringBuilder  

  3.多线程操作字符串缓冲区 下操作大量数据 = StringBuffer

6. .9.PNG是干什么的?怎么使用?  

9png图片一般用在需要拉伸的地方,比如聊天程序的对话框,字数不同,对话框的大小也不同。

 所以就有了9png,之所以叫9是因为图片被分割为9个部分。

 //目前制作还不是太理解。。。  

posted on 2015-07-08 10:59  涛涛的小马甲  阅读(102)  评论(0编辑  收藏  举报

导航