android面试题

来源:互联网 发布:zabbix windows 模板 编辑:程序博客网 时间:2024/06/03 03:39

1.String a = "a"String a = new String("a")区别?

String str = “a”;  创建了一个对象(字符串常量池中)

String a = new String("a") 创建了两个对象,new String()和“a”对象

 

2.a.equals("a")a=="a"区别?

equals  默认比较对象的值

==     默认比较对象的地址

 

3.接口和抽象类的区别?

语法层面:

1. 抽象类可以提供方法的实现细节,接口只能做方法的声明。

2. 抽象类中成员变量可以式各种类型,接口中只能是public static

3. 一个类只能继承一个抽象类,一个类可以实现多个接口

4. 抽象类中可以有静态块和静态方法,接口中不能有。

设计层面:

1.抽象类是对一种(类)事物的抽象(属性,行为),对事物的整体进行抽象。

接口是对行为的抽象,是对类局部(行为)进行抽象。继承是一种is-a,接口式一种has-a的关系。

2.抽象类作为许多子类的父类,是一种模板式的设计,接口是一种行为规范,是一种辐射式设计。  

 

4.简要说明MVC开发模式?在Android中的应用?

画图(箭头)


M:业务处理类(数据库操作,网络操作)

CActivity

V:布局文件

 

5.Android系统分层?Library层起什么作用?

 

Library层提供了一系列的动态库和静态库,通常使用C或者C++开发,实现底层访问接口,提供接口给Framework调用。通过NDK实现调用。

 

6.ListView的优化方式有哪些?

复用convertView,减少findViewById的次数。

使用ViewHolder缓存item条目

ListView中数据分批加载或者分页加载

 

7.Activity生命周期?为什么Activity要这么设计?这样设计有什么好处?


Activity生命周期各种回调方法的设计,是为了确保提供一个流畅的用户体验,在Activity切换时,以及Activity停止或者销毁的意外中断情况下,保存好Activity状态

 

8.ActivityFragment之间相互传值方式有几种,分别是什么?

Activity传值给Fragment:通过Bundle对象来传递,Activity中构造bundle数据包,调用Fragment对象的setArguments(Bundle b)方法,Fragment中使用getArguments方法获取Activity传递过来的数据包取值。

 

Fragment传值给Activity

Fragment中定义一个内部回调接口,Activity实现该回调接口,Fragment中获取Activity的引用,调用Activity实现的业务方法。接口回调机制式Java不同对象之间数据交互的通用方法。

 

9.如果Activity崩溃,如何恢复数据?

onPause()中保存数据适合持久化数据,onCreate()中恢复数据

onSavaInstanceState()保存数据,onRestoreInstanceState()或者onCreate()中恢复数据。

 

10.Activity的加载模式有哪些?请简要说明

1.standard:默认启动模式,每次都会创建一个新的实例,新的Activity覆盖在原Activity上。

2.singleTop:如果指定启动的Activity设置未SingleTop模式,系统会判断当前栈顶Activity是不是要启动的Activity。如果是不创建新的实例,直接引用这个Activity,调用该ActvityonNewIntent()方法。如果不是,创建新的Activity实例。

3.singleTask:如果指定启动的Activity设置未SingleTask模式,系统检测整个Task里面是否有改Activity,如果有,将该Activity置于栈顶,并将该Activity以上所有Activity全部销毁。

4.singleInstance:新建一个Task,将要启动的Activity放入这个Task中,该Task中只有一个Activity的实例。

 

11.通过Intent传递一些二进制数据的方法有哪些?显式意图和隐式意图的区别?

实现Serializable Parcelable接口

显式意图:通过指定Intent组件名称来实现,明确指明要激活的组件名称。一般在应用内部使用。

隐式意图:通过Intent Filter来实现,一般用在没有明确指出目标组件名称的前提下使用action,category,data来处理意图,用在不同应用之间。

 

12.如何让Service不被Kill

提高Service所属进程的生命周期,可以在启动Service的时候使用startForeground()方法将该进程提高为前台进程。

 

13.Service有几种启动方式,区别是什么?各有什么使用场景?

startService(Intent i);   播放音乐,下载操作,Activity启动Service后,如果被销毁,Service仍然运行。

bindService(Intent i,ServiceConnection conn,int flag); 进程通信(或者内部方法调用)Activity绑定Service后,如果被销毁,Service也会销毁。

 

14.ContentProvider的作用是什么?如何实现的?

应用之间共享数据(CRUD)的一种机制

1.定义自己的ContentProvider类,继承ContentProvider,实现相关方法。

2.AndroidManifest.xml中注册该ContentProvider,绑定一个URI

3,其它应用使用ContentResolver传入URI来实现操作ContentProivder

 

15.说说Handler机制,LooperMessageQueue,Message之间的关系?


 

16.AndroidANR是什么?如果避免ANR

Application Not Response应用程序没有响应

以下情况会出现ANR

1.应用界面5秒内未响应

2.BroadcastReceiveronReceiver方法10秒内没有处理完。

3.绑定式Service20秒内没有绑定成功。

ANR出现的原因是阻塞了主线程,以上情况中,耗时任务使用子线程完成。

 

17.android 中线程与线程,进程与进程之间如何通信?

线程和线程通信:Thread+Handler

进程与进程通信:AIDLBroadcastReceiverContentProvider,文件共享,SocketBundle

 

18.请介绍一下Android数据存储方式有几种,请简述?

http://blog.csdn.net/u013488580/article/details/42524469

 

19.Android动画有哪几类?他们的特点和区别是什么?

1.Drawable Animation:加载一系列图片资源来创建动画,创建不同的图片序列,顺序播放,类似胶片电影。

2.View Animation:通过对View的渐变,缩放,位移,旋转实现动画效果,只是改变了View的绘制效果,实际属性值没有改变。

3.Property Animation:通过改变View的属性值实现View动画。

 

20.Java实现一个Singleton单例模式?

public class Singleton{

   //定义Singleton类型的变量

   private static Singleton instance;

   //提供私有构造方法,防止通过new的方式创建对象

private Singleton(){

}

//定义返回当前类对象的方法

public static Singleton getInstance(){

    if(instance == null){

        instance = new Singleton();

}

return instance;

}

 

0 0
原创粉丝点击