第一篇:android面试题
选择题(包括多选)
1.下列哪些语句关于内存回收的说明是正确的?
A、程序员必须创建一个线程来释放内存
B、内存回收程序负责释放无用内存
C、内存回收程序允许程序员直接释放内存
D、内存回收程序可以在指定的时间释放内存对象
2.下面异常是属于Runtime Exception 的是
A、ArithmeticException
B、IllegalArgumentException
C、NullPointerException
D、BufferUnderflowException
3.Math.round(-11.5)等于多少
A、11 ,-11
B、11 ,-12
C、12 ,-11
D、12 ,-1
24.下列程序段的输出结果是:
void complicatedexpression_r(){
int x=20, y=30;
boolean b;
b=x>50&&y>60||x>50&&y<-60||x<-50&&y>60||x<-50&&y<-60;
System.out.println(b);
}
A、true
B、false
C、1
D、011.activity
5.对一些资源以及状态的操作保存,最好是保存在生命周期的哪个函数中进行
A、onPause()
B、onCreate()
C、onResume()
D、onStart()
6.Intent传递数据时,下列的数据类型哪些可以被传递
A、Serializable
B、charsequence
C、Parcelable
D、Bundle
7.android 中下列属于Intent的作用的是
A、实现应用程序间的数据共享
B、是一段长的生命周期,没有用户界面的程序,可以保持应用在后台运行,而不会因为切换页面而消失
C、可以实现界面间的切换,可以包含动作和动作数据,连接四大组件的纽带
D、处理一个应用程序整体性的工作
8.下列属于SAX解析xml文件的优点的是
A、将整个文档树在内存中,便于操作,支持删除,修改,重新排列等多种功能
B、不用事先调入整个文档,占用资源少
C、整个文档调入内存,浪费时间和空间
D、不是长久驻留在内存,数据不是持久的,事件过后,若没有保存数据,数据就会
消失
9.在android中使用SQLiteOpenHelper这个辅助类时,可以生成一个数据库,并可以对数据库版本进行管理的方法可以是()
A、getWriteableDatabase()
B、getReadableDatabase()
C、getDatabase()
D、getAbleDatabase()
10.android 关于service生命周期的onCreate()和onStart()说法正确的是
A、当第一次启动的时候先后调用onCreate()和onStart()方法
B、当第一次启动的时候只会调用onCreate()方法
C、如果service已经启动,将先后调用onCreate()和onStart()方法
D、如果service已经启动,只会执行onStart()方法,不在执行onCreate()方法
11.下面是属于GLSurFaceView特性的是
A、管理一个surface,这个surface就是一块特殊的内存,能直接排版到android的视图view上。
B、管理一个EGL display,它能让opengl把内容渲染到上述的surface上。
C、让渲染器在独立的线程里运作,和UI线程分离。
D、可以直接从内存或者DMA等硬件接口取得图像数据
12.下面在AndroidManifest.xml文件中注册BroadcastReceiver方式正确的A、
android:name=“android.provider.action.NewBroad”/> B、 android:name=“android.provider.action.NewBroad”/> C、 android:name=“android.provider.action.NewBroad”/> D、 android:name=“android.provider.action.NewBroad”/> 13.关于ContenValues类说法正确的是 A、他和Hashtable比较类似,也是负责存储一些名值对,但是他存储的名值对当中的名是String类型,而值都是基本类型 B、他和Hashtable比较类似,也是负责存储一些名值对,但是他存储的名值对当中的名是任意类型,而值都是基本类型 C、他和Hashtable比较类似,也是负责存储一些名值对,但是他存储的名值对当中的名,可以为空,而值都是String类型 D、他和Hashtable比较类似,也是负责存储一些名值对,但是他存储的名值对当中的名是String类型,而值也是String类型 14.我们都知道Hanlder是线程与Activity通信的桥梁,如果线程处理不当,你的机器就会变得越慢,那么线程销毁的方法是 A、onDestroy() B、onClear() C、onFinish() D、onStop() 15.下面退出Activity错误的方法是 A、finish() B、抛异常强制退出 C、System.exit() D、onStop() 16.下面属于android的动画分类的有 A、Tween B、Frame C、Draw D、Animation 17.下面关于Android dvm的进程和Linux的进程,应用程序的进程说法正确的是 A、DVM指dalivk的虚拟机.每一个Android应用程序都在它自己的进程中运行,不一定拥有一个独立的Dalvik虚拟机实例.而每一个DVM都是在Linux中的一个进程,所以说可以认为是同一个概念.B、DVM指dalivk的虚拟机.每一个Android应用程序都在它自己的进程中运行,不一定拥有一个独立的Dalvik虚拟机实例.而每一个DVM不一定都是在Linux中的一个进程,所以说不是一个概念.C、DVM指dalivk的虚拟机.每一个Android应用程序都在它自己的进程中运行,都拥有一个独立的Dalvik虚拟机实例.而每一个DVM不一定都是在Linux中的一个进程,所以说不是一个概念.D、DVM指dalivk的虚拟机.每一个Android应用程序都在它自己的进程中运行,都拥有一个独立的 Dalvik虚拟机实例.而每一个DVM都是在Linux中的一个进程,所以说可以认为是同一个概念.18.Android项目工程下面的assets目录的作用是什么 A、放置应用到的图片资源。 B、主要放置多媒体等数据文件 C、放置字符串,颜色,数组等常量数据 D、放置一些与UI相应的布局文件,都是xml文件 19.关于res/raw目录说法正确的是 A、这里的文件是原封不动的存储到设备上不会转换为二进制的格式 B、这里的文件是原封不动的存储到设备上会转换为二进制的格式 C、这里的文件最终以二进制的格式存储到指定的包中 D、这里的文件最终不会以二进制的格式存储到指定的包中 20.下列对android NDK的理解正确的是 A、NDK是一系列工具的集合B、NDK 提供了一份稳定、功能有限的 API 头文件声明。 C、使 “Java+C” 的开发方式终于转正,成为官方支持的开发方式 D、NDK 将是 Android平台支持 C 开发的开端 问答题: 1.系统上安装了多种浏览器,能否指定某浏览器访问指定页面?请说明原由。 2.Activity和Task的启动模式有哪些? 每种含义是什么? 3.SQLite支持事务吗? 添加删除如何提高性能? 4.对Intent、Activity、广播、Service等的理解 5、handler机制的原理 Android 面试题(有详细答案) 附带答案,共100分 一、选择题(30题,每题1.5分,共45分) 1.java.io包中定义了多个流类型来实现输入和输出功能,可以从不同的角度对其进行分类,按功能分为:(c),如果为读取的内容进行处理后再输出,需要使用下列哪种流?() A、输入流和输出流B、字节流和字符流C、节点流和处理流 D、File streamE、Pipe streamF、Random streamG、Filter stream 2.下列代码的执行结果是:() public class Test3{ public static void main(String args[]){ System.out.print(100%3); System.out.print(“,”); System.out.println(100%3.0); } } A、1,1 B、1,1.0 C、1.0,1 D、1.0,1.0 3.在继承中,关于构造方法的说明,下列说法错误的是() A、子类无条件的继承父类的无参构造方法,B、子类可以引用父类中的有参构造方法,使用super关键字,C、如果子类没有构造方法,则父类无参构造方法作为自已的构造方法,D、如果子类有无参构造方法,而父类的无参构造方法则被覆盖。 4.以下程序的运行结果为() public class IfTest{ public static void main(String args[]){ int x=3; int y=1; if(x==y) System.out.println(“Not equal”); else System.out.println(“Equal”); } } A、Not equalB、EqualC、无输出D、编译出错 5.Java语言中字符串“学Java”所占的内存空间是() A.6个字节 B.7个字节 C.10个字节 D.11个字节 6.关于下列程序段的输出结果,说法正确的是:() public class MyClass{ static int i; public static void main(String argv[]){ System.out.println(i); } } A、有错误,变量i没有初始化。 B、null C、1 D、0 7.下列哪些语句关于内存回收的说明是正确的?() A、程序员必须创建一个线程来释放内存 B、内存回收程序负责释放无用内存 C、内存回收程序允许程序员直接释放内存 D、内存回收程序可以在指定的时间释放内存对象 8.下面异常是属于Runtime Exception 的是()(多选) A、ArithmeticException B、IllegalArgumentException C、NullPointerException D、BufferUnderflowException 9.Math.round(11.5)等于多少().Math.round(-11.5)等于多少().A、11 ,-11B、11 ,-12C、12 ,-11D、12 ,-12 10.下列程序段的输出结果是:() void complicatedexpression_r(){ int x=20, y=30; boolean b; b=x>50&&y>60||x>50&&y<-60||x<-50&&y>60||x<-50&&y<-60; System.out.println(b); } A、trueB、falseC、1D、0 11.activity对一些资源以及状态的操作保存,最好是保存在生命周期的哪个函数中进行 () A、onPause()B、onCreate()C、onResume()D、onStart() 12.Intent传递数据时,下列的数据类型哪些可以被传递()(多选) A、SerializableB、charsequenceC、ParcelableD、Bundle 13.android 中下列属于Intent的作用的是() A、实现应用程序间的数据共享 B、是一段长的生命周期,没有用户界面的程序,可以保持应用在后台运行,而不会 因为切换页面而消失 C、可以实现界面间的切换,可以包含动作和动作数据,连接四大组件的纽带 D、处理一个应用程序整体性的工作 14.下列属于SAX解析xml文件的优点的是() A、将整个文档树在内存中,便于操作,支持删除,修改,重新排列等多种功能 B、不用事先调入整个文档,占用资源少 C、整个文档调入内存,浪费时间和空间 D、不是长久驻留在内存,数据不是持久的,事件过后,若没有保存数据,数据就会 消失 15.下面的对自定style的方式正确的是() A、 B、 C、 D、 16.在android中使用Menu时可能需要重写的方法有()。(多选) A、onCreateOptionsMenu() B、onCreateMenu() C、onOptionsItemSelected() D、onItemSelected() 17.在SQL Server Management Studio 中运行下列T-SQL语句,其输出值()。 SELECT @@IDENTITY A、可能为0.1 B、可能为3 C、不可能为-100 D、肯定为0 18.在SQL Server 2005中运行如下T-SQL语句,假定SALES表中有多行数据,执行查询之后的结果是()。 BEGIN TRANSACTION A Update SALES Set qty=30 WHERE qty<30 BEGIN TRANSACTION B Update SALES Set qty=40 WHERE qty<40 Update SALES Set qty=50 WHERE qty<50 Update SALES Set qty=60 WHERE qty<60 COMMIT TRANSACTION B COMMIT TRANSACTION A A、SALES表中qty列最小值大于等于30 B、SALES表中qty列最小值大于等于40 C、SALES表中qty列的数据全部为50 D、SALES表中qty列最小值大于等于60 19.在android中使用SQLiteOpenHelper这个辅助类时,可以生成一个数据库,并可以对数 据库版本进行管理的方法可以是() A、getWriteableDatabase() B、getReadableDatabase() C、getDatabase() D、getAbleDatabase() 20.android 关于service生命周期的onCreate()和onStart()说法正确的是()(多选题) A、当第一次启动的时候先后调用onCreate()和onStart()方法 B、当第一次启动的时候只会调用onCreate()方法 C、如果service已经启动,将先后调用onCreate()和onStart()方法 D、如果service已经启动,只会执行onStart()方法,不在执行onCreate()方法 21.下面是属于GLSurFaceView特性的是()(多选) A、管理一个surface,这个surface就是一块特殊的内存,能直接排版到android的视图view上。 B、管理一个EGL display,它能让opengl把内容渲染到上述的surface上。 C、让渲染器在独立的线程里运作,和UI线程分离。 D、可以直接从内存或者DMA等硬件接口取得图像数据 22.下面在AndroidManifest.xml文件中注册BroadcastReceiver方式正确的是() A、 android:name=“android.provider.action.NewBroad”/> B、 android:name=“android.provider.action.NewBroad”/> C、 android:name=“android.provider.action.NewBroad”/> D、 android:name=“android.provider.action.NewBroad”/> 23.关于ContenValues类说法正确的是() A、他和Hashtable比较类似,也是负责存储一些名值对,但是他存储的名值对当中的名是String类型,而值都是基本类型 B、他和Hashtable比较类似,也是负责存储一些名值对,但是他存储的名值对当中的名是任意类型,而值都是基本类型 C、他和Hashtable比较类似,也是负责存储一些名值对,但是他存储的名值对当中的名,可以为空,而值都是String类型 D、他和Hashtable比较类似,也是负责存储一些名值对,但是他存储的名值对当中的名是String类型,而值也是String类型 24.我们都知道Hanlder是线程与Activity通信的桥梁,如果线程处理不当,你的机器就会变得越慢,那么线程销毁的方法是() A、onDestroy() B、onClear() C、onFinish() D、onStop() 25.下面退出Activity错误的方法是() A、finish() B、抛异常强制退出 C、System.exit() D、onStop() 26.下面属于android的动画分类的有()(多项) A、TweenB、Frame C、Draw D、Animation 27.下面关于Android dvm的进程和Linux的进程,应用程序的进程说法正确的是() A、DVM指dalivk的虚拟机.每一个Android应用程序都在它自己的进程中运行,不一定拥有一个独立的Dalvik虚拟机实例.而每一个DVM都是在Linux 中的一个进程,所以说可以认为是同一个概念.B、DVM指dalivk的虚拟机.每一个Android应用程序都在它自己的进程中运行,不一定拥有一个独立的Dalvik虚拟机实例.而每一个DVM不一定都是在Linux 中的一个进程,所以说不是一个概念.C、DVM指dalivk的虚拟机.每一个Android应用程序都在它自己的进程中运行,都拥有一个独立的Dalvik虚拟机实例.而每一个DVM不一定都是在Linux 中的一个进程,所以说不是一个概念.D、DVM指dalivk的虚拟机.每一个Android应用程序都在它自己的进程中运行,都拥有一个独立的Dalvik虚拟机实例.而每一个DVM都是在Linux 中的一个进程,所以说可以认为是同一个概念.28.Android项目工程下面的assets目录的作用是什么 A、放置应用到的图片资源。 B、主要放置多媒体等数据文件 C、放置字符串,颜色,数组等常量数据 D、放置一些与UI相应的布局文件,都是xml文件 29..关于res/raw目录说法正确的是() A、这里的文件是原封不动的存储到设备上不会转换为二进制的格式 B、这里的文件是原封不动的存储到设备上会转换为二进制的格式 C、这里的文件最终以二进制的格式存储到指定的包中 D、这里的文件最终不会以二进制的格式存储到指定的包中 30.下列对android NDK的理解正确的是() A、NDK是一系列工具的集合B、NDK 提供了一份稳定、功能有限的 API 头文件声明。 C、使 “Java+C” 的开发方式终于转正,成为官方支持的开发方式 D、NDK 将是 Android平台支持 C 开发的开端 二.填空题(每题2分,共20分) 1.我们用___ ____来定义一个整数,用___ ____来定义一个字符类型,称为原始数据类型。 2.android中常用的四个布局是?s 3.android 的四大组件是? 4.java.io包中的__________和______________类主要用于对对象(Object)的读写。 5.android 中service的实现方法是:_______-和___________-。 6.activity一般会重载7个方法用来维护其生命周期,除了onCreate(),onStart(),onDestory()外还有_______-,_________ ,_________ ,_____________。 7.android的数据存储的方式____________,___________,________ ,_______-,________。 8.当启动一个Activity并且新的Activity执行完后需要返回到启动它的Activity来执行的回调函数是_____________()。 9.请使用命令行的方式创建一个名字为myAvd,sdk版本为2.2,sd卡是在d盘的根目录下,名字为scard.img,并指定屏幕大小HVGA.____________________________________。 10.程序运行的结果是:_______________。 public class Example{ String str=new String(“good”); char[]ch={'a','b','c'}; public static void main(String args[]){ Example ex=new Example(); ex.change(ex.str,ex.ch); System.out.print(ex.str+“ and ”); Sytem.out.print(ex.ch); } public void change(String str,char ch[]){ str=“test ok”; ch[0]='g'; } } 三 简答编程题(共35分) 1简述Android应用程序结构是哪些?(7分) Android应用程序结构是:请继承SQLiteOpenHelper实现:(10分) 1).创建一个版本为1的“diaryOpenHelper.db”的数据库,2).同时创建一个 “diary” 表(包含一个_id主键并自增长,topic字符型100长度,content字符型1000长度) 3).在数据库版本变化时请删除diary表,并重新创建出diary表。 3.页面上现有ProgressBar控件progressBar,请用书写线程以10秒的的时间完成其进度显示工作。(10分) Android面试题总结 1.简述Activity的生命周期? 1)Activity的生命周期通过7个生命周期方法onCreate(),onRestart(), onStart(), onResume(), onPause(),onStop(),onDestroy()来体现。2)其中6个生命周期方法是成对对应起来的,哪里创建的对象,一般应该在其对应的方法中销毁。 onCreate()--onDestroy()onStart()--onStop()onResume()--onPause()3)当程序启动之后,第一个Activity经过的生命周期方法是:onCreate()→onStart()→ onResume()方法,当第一个Activity A启动第二个Activity B的时候(备注:第二个Activity完全遮盖住第一个Activity,并且这个过程中没有出现点击Home键,或者第一个Activity被杀死等异常情况,并且两个Activity的启动模式是标准模式),这两个Activity经历的生命周期方法是: A onPause()→ B onCreate()→ B onStart()→ B onResume()→ A onStop()→(此时Activity A已经在回退栈的最低端,Activity B已经在Activity A的上面,在回退栈的最顶端)当通过点击后退键退出Activity B的时候: (此时Activity B 弹出回退栈)→ B onPause()→ A onRestart()→ A onStart()→ A onResume()→ B onStop()→ B onDestroy()此时B 被销毁 2.简述Service的生命周期? 1).如果在Activity中通过调用startService()方法启动一个Service的话,那么生命周期是: onCreate()→ onStartCommand()→ 运行中 →(如果自己或者客户端(如Activity)调用了stop Service的方法的话)→ onDestroy()2).如果在Activity中通过调用bindService()方法启动一个Service的话,那么生命周期是: onCreate()→ onBind()→ 运行中 →(如果有客户端(Activity)调用了unBindService()方法与Service解除绑定时)→ onUnbind()→ onDestroy()3.有几种控件布局的方式? 1)RelativeLayout:相对布局,可以根据相对位置来调整控件的位置。推荐使用相对布局,更利于屏幕的自适应。2)LinearLayout:线性布局,控件之间的水平排列或者垂直排列。但是如果要想构建复杂布局,要进行多层的LinearLayout布局嵌套,但是这样会运行布局载入效率。 3)FrameLayout:帧布局,控件与控件之间处于上下叠加的状态。 备注:还有两个已经不怎么用的布局:TableLayout:表格布局 AbsoluteLayout 绝对布局。 布局实现方式有两种:xml文件静态实现,代码动态实现。 一般xml文件中可以实现布局控制的话,就不建议放在代码中实现布局控制,因为在xml文件中实现布局控制,可以做到布局与代码分离。4.有几种数据存储方式,分别是什么? 1)SQLite数据库存储结构化数据。 2)文件存储:分为内部存储和外部存储(SD卡)两种存储方式。3)SharedPreferences共享参数,键值对形式存储。4)网络存储。 5.IntentService与Service有什么区别? IntentService是Service的子类 1)Service如果要处理异步请求(如耗时操作)的话,需要自己启动一个worker thread,如果启动多个worker thread来处理相关事务的话,各线程之间无法很好的控制。而IntentService可以将多个异步请求的Intent放入队列中,封装了一个开启worker thread的onHandleIntent()方法,来依次处理放入队列中的Intent,只有一个worker thread在运行,同一时刻只有一个Intent被处理,当一个Intent处理完了之后才会处理另外一个Intent。 2)Service可以通过startService()或者bindService()方法来启动,而IntentService则是通过startService()方法来启动。3)Service适合多线程处理异步请求。而IntentService则适合处理需要排队的请求。 6.StartService与bindService之间的区别? 1)StartService启动了Service之后无法与Activity之间进行通信,与现有的Activity分离,即使Activity被杀掉了之后,Service还可以运行,同时通过设置Service的粘性,还可以让Service被杀掉之后,可以自启动。而bindService启动Service之后,与绑定的Activity之间有关系,可以依据Server/Client模式来进行通信(binder客户端主动请求模式,或者通过信使),但是无法设置Serrvice的粘性。2)StartService启动的Service,Activity中可以调用stopService()方法来结束一个Service,或者通过Service自己调用stopSelf()方法来结束Service。而bindService只能通过Activity()来调用unbindService()方法来结束Service,Service会调用onUnBind()方法,以及onDestroy()方法。 7.ArrayAdapter BaseAdapter CursorAdapter的区别? ArrayAdpter CursorAdapter都是BaseAdapter的子类。都是用来填充那些含有item的控件。 1)主要区别是数据来源不同。ArrayAdapter数据来源是Object数组,CursorAdapter数据来源是数据库的Cursor,而BaseAdapter适合创建复杂自定义的item内容,通过继承BaseAdapter类,重写相关方法来实现。 8.Handler与Looper之间的关系? 1)Handler和Looper的关系就好比,坐地铁过安检时候:每一个人可以理解为一个Handler,一个人的一个或者多个东西看做Message而循环滚动的检查台装置可以看做是Looper,而要检查的东西排成队列可以理解为MessageQueue消息队列。 2)Looper是Handler和MessageQuene之间的桥梁,Looper将Handler发送过的消息放入MessageQueue,同时Looper也将MessageQueue中的Message发送给Handler来处理。 9.res文件夹与assets文件夹有什么区别? 1)res文件夹中的资源在会在R.java文件中生成ID,代码中可以直接通过R.id的形式来访问。而assets文件夹中的资源不会在R.java文件中生成ID,需要通过AssetsManager通过IO流的方式来访问。 2)res文件夹中的文件会被压缩,而assets文件中的文件不会被压缩。 3)Res不能自定义目录名,不支持多层目录。而assets支持自定义目录名,支持多层目录。 10.广播接收器有几种注册方式,分别是什么? 1)动态注册:在代码中注册,创建一个IntentFilter(意图过滤器)对象,设置想要就收的广播,在onCreate()方法中通过调用registerReceiver()方法来注册广播接收器,在onDestroy()方法中通过调用unregisterReceiver()方法来注销广播接收器。2)静态注册:在AndroidManifest.xml文件中注册, 馋猫工作室 1.简要解释一下Activity、Service、Broadcase、BroadcaseReceiver、ContentProvider、ContentResolver、Intent、Intent filter 2.说一下项目中最擅长的方向。例如:界面美化,网络请求,数据存储,Camera 相关,图片处理,视频方向。简述下你用过哪些技术,或者是开源包。 3.Handler机制和原理 4.写出几种你认为可以提高Android程序运行效率的方法 5.AsyncTask 的异步机制和普通线程有什么区别,分别有哪些优缺点。 6.多线程间通信和多进程之间通信有什么不同,分别怎么实现? 7.请介绍下Android的数据存储方式。请写出熟悉程度,并对应举例适合不同 存储方式的数据 8.说几个你认为非常好的软件或者游戏,概括下优缺点并且说下如果让你开发 这个软件,你如何构架,可能用到哪些技术点,对于你来说有哪些技术难点。 9.简述三个你遇到印象最深刻的bug,你是如何解决的,是否完全解决问题。 10.含有图片的listview 如何进行优化其流畅度和图片加载方向的内存管理 11.如果让你独立完成一个项目(此项目11个界面,需要和网络进行数据交互,需要在本地采用多种方式进行数据存储,有图片等相关操作),请简述下你工作顺序。 12.如果让你分配给3个同事一个项目(此项目11个界面,需要和网络进行数据 交互,需要在本地采用多种方式进行数据存储,有图片等相关操作),请简述下你将如何分配。 13.ScrollView嵌套listview是否会出现bug,为什么会出现bug,如果解决 14.说说mvc模式的原理,它在android中怎样运用,你在具体工作中怎样具体 运用mvc模式的。 15.编程题: 用最有效率的方法算出2乘以128等於几? 16.Android 中如何调用c++的方法。你是否可以熟练使用NDK编程 17.用Java语言实现的各种排序,包括插入排序、冒泡排序、选择排序、Shell 排序、快速排序、归并排序、堆排序等。18.写出怎么把前边的表查询成后边结果的格式的Sqlite语句 yearmonth amount结果 199111.1year m1m2m3m4 199121.21991 1.1 1.2 1.3 1.4 199131.31992 2.1 2.2 2.3 2.4 199141.4 199212.1 199222.2 199232.3 199242.4 19.写一个最简单的外连接查询(表名1:a 表名2:b)的sqlite语句 20.封装正式版APK时候有那些注意事项,上线到多个应用商城需要注意那些。 注:请认真选择其中6到10题,用简练语言作答。 馋猫工作室 一.Java的问题 1.回调函数是?有什么用?好处是?一般什么时候用?手写个例子代码。 2.Java抽象类是什么?你怎么理解抽象类?为什么要有抽象类?好处,坏处。3.Public,protected,private,默认 这四个修饰符的区别和范围。4.Java中泛型的概念,如何实现的? 5.Switch中支持的类型(注意string和long)6.内部类有几种?它们的区别。 7.设计模式(单例模式,工场方法模式等,它们的优缺点)8.GC机制,垃圾的清除算法 9.创建线程的几种方式 10.多线程的同步问题 11.写一下socket通信的大致代码 12.单线程和多线程处理哪个好(分单cup和多cpu)13.虚拟内存的概念,内存置换算法 14.强连接,软连接,弱连接,虚连接的概念和使用举例 15.Android开发如何进行算法和界面的优化 16.为什么内部类可以直接访问外边类的成员 17.外部类可以直接访问内部类的成员吗?(不能)为什么?那应该怎样实现访问 18.Hashmap内部是怎么实现的,他的动态内存大小怎么变,和hashtable的区别与联系? 19.Hashmap同步吗?如何实现同步。20.线程之间如何实现通信 21.线程和进程的区别,线程有自己的栈和存储机制吗? 22.Threadlocal知道吗?作用 23.Jvm和dvm的区别与联系 24.线程池,消息池,常量池的概念 25.栈和堆的区别 26.Hashmap的遍历方式有几种,各种的区别,手写下例子代码 27.Java支持中文吗? 28.Volatile的作用,是否可靠它实现同步安全? 29.如何实现同步 30.Android的动画实现有哪几种方式,区别 31.Java中继承有哪些特征 32.抽象类和接口的区别 33.Exception的概念,运行时,非运行时的区别 34.Java中一次跳出多个循环的方式 35.死锁的概念和必要条件,解决方法 36.Tcp和udp的区别 37.Tap的3次握手过程,大概画一画 38.内部碎片与外部碎片的概念和区别 39.反射机制 40.C++与java的区别 二.Android的问题 41.android中内存泄露是?产生原因?解决方法? 42.Android中内存溢出是?产生原因?解决方法?它和内存泄露有什么区别? 43.Activity的生命周期,三种状态 44.Activity的4种启动模式 45.Android的四大组件 46.说说intent 47.Androidmanifest的作用 48.Android系统有几层,了解application framework层吗? 49.Service的启动方式和它们的区别 50.用过自定义控件没?怎么实现自定义控件,手写下例子代码。 51.知道Fragment吗?哪个版本出的?它和activity的区别,它的生命周期?用它的好处?它和activity如何实现通信,相互调用。 52.Fragment怎么实习按back键进行回退而不是一次性退出它所依附的activity? 53.Android如何实现定时器(timer,alarmManager)54.handler机制的概念,应用 55.Handler如何实现定时器效果(3种)56.两个activity之间如何通信(各种方式)57.用过eclipse的debug调试没?怎么用的 58.知道多少eclipse的快捷键 59.结束一个进程的几种方式? 60.进程间如何实现通信 61.Android如何实现信息存储 62.知道volley等一些第三方库吗? 63.Android对view的更新方式 64.知道一些代码优化的方式吗? 65.Handler和thread的区别 66.Android中http访问的两种方式 67.Asynctask的概念,作用,与handler的区别 68.Android中如何实现画图,手写个简单的例子 69.一个子线程是否可用直接修改ui界面?为什么 70.Service和Intentservice的区别与联系 71.Context是什么? 72.Boardcast的概念,作用,有序广播和无序广播的区别,粘性广播的概念 73.Boardcast的静态注册和动态注册的区别 74.Aidl,如何实现进程间通信 75.Contentprovider概念和作用 76.Json比xml的好处,他们的区别 77.Listview的概念,优化,如何实现每项的布局不同 78.Touch事件的分发过程 79.Linearlayout的Weight属性的作用 80.Android有哪几种布局,它们的5种布局的区别 81.Finish和exit(0)的区别 82.Sqlite的事务处理 83.Android实现可滑动tab的3种方式,它们的区别和各种的好处 84.Android中跨进程通信的4种方式,(正好对应四大组件)85.Handler的内存泄露是? 86.Android系统提供的与用户交互的两种机制(回调函数,监听器)87.Ndk的理解,jni的理解 88.Toast的概念,它的时间设置的两种方式 89.Activity的状态保存的方式 90.Activity的5个进程等级 91.Surface了解吗? 92.程序闪退的原因有哪些,怎么解决 93.Get和post的区别 94.Android有哪三种菜单?区别 95.实现序列化的两种方式,比较它们的优缺点 96.Broadcast receiver的生命周期 97.Sharedpreference的作用,底层实现 98.如何实现一个前台的service,简单写下代码例子 99.按home键activity的生命周期变化 100.Activity由a跳到b,哪些生命周期会执行 101.横竖屏切换,activity的生命周期,configchange的应用 102.如何设置activity为对话框风格 103.Activity,window,view的联系和区别 104.Style和theme的联系和区别 105.知道android平台主流的几种消息推送方式吗? 106.Viewstub的概念,作用,好处 107.Android数字签名 108.Zygote的概念 109.Adb的概念,作用。Adb死掉了怎么办? 110.Ddms和teaceview的区别,他们的作用 111.MVC模式概念 112.Android的事件传递机制 113.图片的缓存机制 114.Android内存优化及管理 115.如何实现低版本可用高版本的新的东西 116.Gallery画廊的使用 117.http如何实现长连接 118.Android是不是linux?为什么? 119.三.算法和写代码 74.写数的后序遍历(非递归)75.实现一个字符串的全排列 76.快速排序,堆排序,归并排序 77.如何在大量数据中快速找到中位数? 78.如何判断一个数是不是2的n次方第二篇:Android面试题(十一)
第三篇:Android面试题总结
第四篇:华为Android面试题
第五篇:Android最全的面试题总结