一、选择题
1、CD
2、A
3、ABCD
4、A
5、A
6、C
7、B
8、A
9、C
10、AB
一、选择题(10*3)
1、解析XML的方式有()CD
A、字符类型
B、流方式
C、DOM
D、SAX
2、下列选项哪个不是activity的启动方法
A、goToActivity
B、startActivity
C、startActivityFromChild
D、startActivityForResult
3、下面异常是属于RuntimeException 的是()
A、ArithmeticException
B、IllegalArgumentException
C、NullPointerException
D、BufferUnderflowException
4、我们都知道Hanlder是线程与Activity通信的桥梁,如果线程处理不当,你的机器就会变得越慢,那么线程销毁的方法是()
A、onDestroy()
B、onClear()
C、onFinish()
D、onStop()
5、关于res/raw目录说法正确的是()
A、这里的文件是原封不动的存储到设备上不会转换为二进制的格式
B、这里的文件是原封不动的存储到设备上会转换为二进制的格式
C、这里的文件最终以二进制的格式存储到指定的包中
D、这里的文件最终不会以二进制的格式存储到指定的包中
6、在android程序中,Log.w()用于输出什么级别的日志信息?( )
A、调试 B、信息 C、警告 D、错误
7、对于一个Activity,在AndroidManifest.xml中对他这样进行定义
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<categoryandroid:name="android.intent.category.LAUNCHER" />
</intent-filter>,这样的描述代表什么含义?( )
A、无明确含义,每个Activity都需要这样定义
B、代表该Activity将作为程序的主Activity,并且在LAUNCHER菜单中启动
C、代表该Activity将在桌面上建立图标并启动
D、代表该Activity的优先级高于其他的Activity
8、在android中使用SQLiteOpenHelper这个辅助类时,可以生成一个数据库,并可以对数据库版本进行管理的方法可以是?
A、getDatabase()
B、getWriteableDatabase()
C、getReadableDatabase()
D、getAbleDatabase()
9、在android中对数据库的表进行查询操作用SQLiteDatabase类中的那两个方法进行查询:
A.insert()和rawQuery()
B.query()和execSQL()
C.query()和rawQuery()
D.query()和update()
10、关于Handler的作用,以下正确的是:
A、sendMessage()方法可以向创建Handler的线程发送消息
B、Message对象的what属性可以用于区分消息的类型
C、putExtra()方法可以向创建Handler的线程传递数据 put Intent Bundle里用
D、使用abort()方法可以中断子线程的执行 广播里用
二、简答题
1、==是判断两个变量或实例是不是指向同一个内存空间
equals是判断两个变量或实例所指向的内存空间的值是不是相同
2、DOM:消耗内存:先把xml文档都读到内存中,然后再用DOMAPI来访问树形结构,并获取数据。这个写起来很简单,但是很消耗内存。要是数据过大,手机不够牛逼,可能手机直接死机
SAX:解析效率高,占用内存少,基于事件驱动的:更加简单地说就是对文档进行顺序扫描,当扫描到文档(document)开始与结束、元素(element)开始与结束、文档(document)结束等地方时通知事件处理函数,由事件处理函数做相应动作,然后继续同样的扫描,直至文档结束。
PULL:与 SAX 类似,也是基于事件驱动,我们可以调用它的next()方法,来获取下一个解析事件(就是开始文档,结束文档,开始标签,结束标签),当处于某个元素时可以调用XmlPullParser的getAttributte()方法来获取属性的值,也可调用它的nextText()获取本节点的值。
3、AsyncTask使用在哪些场景?它的缺陷是什么?如何解决?
3、AsyncTask 运用的场景就是我们需要进行一些耗时的操作,耗时操作完成后更新主线程,或者在操作过程中对主线程的UI进行更新。
缺陷:AsyncTask中维护着一个长度为128的线程池,同时可以执行5个工作线程,还有一个缓冲队列,当线程池中已有128个线程,缓冲队列已满时,如果此时向线程提交任务,将会抛出RejectedExecutionException。
解决:由一个控制线程来处理AsyncTask的调用判断线程池是否满了,如果满了则线程睡眠否则请求AsyncTask继续处理。
4、AIDL的全称是什么?如何工作
4、全称是:Android InterfaceDefine Language 在Android中, 每个应用程序都可以有自己的进程. 在写UI应用的时候, 经常要用到Service. 在不同的进程中, 怎样传递对象呢? 显然, Java中不允许跨进程内存共享. 因此传递对象, 只能把对象拆分成操作系统能理解的简单形式, 以达到跨界对象访问的目的. 在J2EE中,采用RMI的方式, 可以通过序列化传递对象. 在Android中, 则 采用AIDL的方式. 理论上AIDL可以传递Bundle,实际上做起来却比较麻烦。AIDL(AndRoid接口描述语言)是一种借口描述语言; 编译器可以通过aidl文件生成一段代码,通过预先定义的接口达到两个进程内部通信进程的目的. 如果需要在一个Activity中, 访问另一个Service中的某个对象, 需要先将对象转化成AIDL可识别的参数(可能是多个参数), 然后使用AIDL来传递这些参数, 在消息的接收端, 使用 这些参数组装成自己需要的对象.AIDL的IPC的机制和COM或CORBA类似, 是基于接口的,但它是轻量级的。它使用代理类在客户端和实现层间传递值. 如果要使用AIDL, 需要完成2件事情: 1. 引入AIDL的相关类.; 2. 调用aidl产生的class.AIDL的创建方法: AIDL语法很简单,可以用来声明一个带一个或多个方法的接口,也可以传递参数和返回值。由于远程调用的需要, 这些参数和返回值并不是任何类型. 下面是些AIDL支持的数据类型: 1. 不需要import声明的简单Java编程语言类型(int,boolean等) 2. String,CharSequence不需要特殊声明 3. List, Map和Parcelables类型, 这些类型内所包含的数据成员也只能是简单数据类型,String等其他比支持的类型.
5、两个Activity之间跳转时必然会执行的是哪几个方法。
5、一般情况比如说有两个activity,分别叫A,B ,当在A里面激活B组件的时候, A 会调用 onPause()方法,然后B 调用onCreate(),onStart(), OnResume() , 这个时候B覆盖了窗体, A会调用onStop()方法. 如果B呢 是个透明的,或者是对话框的样式, 就不会调用onStop()方法
6、如何退出Activity?如何安全退出已调用多个Activity的Application?
1、抛异常强制退出: 该方法通过抛异常,使程序ForceClose。 验证可以,但是,需要解决的问题是,如何使程序结束掉,而不弹出Force Close的窗口。
2、记录打开的Activity: 每打开一个Activity,就记录下来。在需要退出时,关闭每一个Activity即可。
3、发送特定广播: 在需要结束应用时,发送一个特定的广播,每个Activity收到广播后,关闭即可。
4、递归退出 在打开新的Activity时使用startActivityForResult,然后自己加标志,在onActivityResult中处理,递归关闭。
7、不用service,B页面为音乐播放,从A跳转到B,再返回,如何使音乐继续播放?
7、这个问题问的很山寨.默认不做任何处理,B里面的音乐都能播放.
遇到问题, 可以随机应变,灵活发挥,多考虑些细节,比如说这个题就可以这样说,说说你对startActivityForResult的理解() A开启B的时候,用startActivityForResult()方法, B返回的时候把播放的状态信息返回给A ,A继续播放音乐.
8、什么是IntentService?有何优点?
8、普通的service ,默认运行在ui main 主线程
Sdk给我们提供的方便的,带有异步处理的service类, OnHandleIntent() 处理耗时的操作
为什么要用ContentProvider?它和sql的实现上有什么差别?
9、 屏蔽数据存储的细节,对用户透明,用户只需要关心操作数据的uri就可以了
不同app之间共享,操作数据
Sql也有增删改查的方法.
但是contentprovider 还可以去增删改查本地文件.