android笔试题及答案Word文档格式.docx
《android笔试题及答案Word文档格式.docx》由会员分享,可在线阅读,更多相关《android笔试题及答案Word文档格式.docx(5页珍藏版)》请在冰豆网上搜索。
D.file:
///assets/html/hello.html
3.下列不属于补间动画相关类的是(B)
A.TranslateAnimation
B.FrameAnimation
C.RotateAnimation
D.AlphaAnimation
4.Android中网络互连中需要获取状态码,根据状态码来判断请求是否已经完成,下列状
态码表示请求完成的是(D)
A.100B.202C.404D.200
5.关于ImageSwitcher说法错误的是:
(B)
A.ImageSwitcher里可以通过Alpha设定转换时候的透明位
B.在使用一个ImageSwitcher之前,不一定要调用setFactory方法
C.setInAnimation是设置资源被读入到这个ImageSwitcher的时候动画效果
D.setOutAnimation是资源文件从这个ImageSwitcher里消失的时候要实现的动画效果
6.建立蓝牙连接时通过_D_方法来获取BluetoothAdapter对象
A.BluetoothAdapter.getBluetoothAdapterAdapter()
B.BluetoothAdapteradapter=newBluetoothAdapter();
C.BluetoothAdapter.BluetoothAdapterAdapter();
D.BluetoothAdapter.getDefaultAdapter()
7.关于Handler的说法不正确的是(A)
A.它实现不同进程间通信的一种机制
B.它避免了在新线程中刷新UI的操作
C.它采用队列的方式来存储Message
D.它实现不同线程间通信的一种机制
8.Vector和ArrayList的主要区别是(B):
A.ArrayList内部基于链表,而Vector是基于数组的
B.Vector的大部分方法做了同步,而ArrayList没有同步
C.Vector是可串行化的,而ArrayList不是
D.Vector实现了RandomAccess,而ArrayList没有
9.下列属于SAX解析xml文件的优点的是(B)
A.将整个文档输在内存中,便于操作,支持删除,修改,重新排列等多种功能
B.不用事先调入整个文档,占用资源少
C.整个文档调入内存,浪费时间和空间
D.不是长久驻留在内存,数据不是持久的,事件过后,若没有保存数据,数据就会消失
10.Stringa1="
abc"
;
Stringa2="
Stringa3="
abcd"
总共创建(A)个String对象。
A.2B.3C.5D.6
多选题
1.在添加第一个appwidget窗口小部件时,会执行的方法是(ABD)
A.onReceiveB.onEnabledC.onDisabledD.onUpdate
2.下列属于SOAP优点的是(ABCD)
A,SOAP与编程语言无关。
SOAP可以使用任何语言来完成B,SOAP是完全和厂商无关。
C,SOAP与平台无关
D,SOAP是简单的,可扩展的
3.下列属于SAX解析XML需要用到的类和接口是(BCD)
A.DocumentBuilderB.SAXParserC.DefaultHandlerD.SAXParserFactory
4.在使用蓝牙必须获取的权限是(AD)
A.<
uses-permissionandroid:
name="
android.permission.BLUETOOTH"
/>
B.<
android.permission.INTERNET"
/>
C.<
android.permission.BIND_BLUETOOTH"
D.<
android.permission.BLUETOOTH_ADMIN"
5.Chronometer类的重要方法(ABC)
A.startB.stopC.setBaseD.destory
简答题
1.oom是什么?
如何避免?
当程序需要申请一段“大”内存,但是虚拟机没有办法及时的给到,即使做了GC操作以后这就会抛出OutOfMemoryException也就是OOM
避免:
1)减少内存对象的占用
I.ArrayMap/SparseArray代替hashmap
II.避免在android里面使用Enum
III.减少bitmap的内存占用
IV.减少资源图片的大小,过大的图片可以考虑分段加载
内存对象的重复利用
2)大多数对象的复用,都是利用对象池的技术。
I.listview/gridview/recycleviewcontentview的复用
II.inBitmap属性对于内存对象的复用ARGB_8888/RBG_565/ARGB_4444/ALPHA_8
这个方法在某些条件下非常有用,比如要加载上千张图片的时候。
III.避免在ondraw方法里面new对象
IV.StringBuilder代替+
2.SurfaceView&
View的区别
view的更新必须在UIthread中进行
surfaceview会单独有一个线程做ui的更新。
surfaceview支持openGL绘制。
3.什么时候会发生内存泄露?
内存泄露的根本原因?
长生命周期的对象持有短生命周期的对象。
短周期对象就无法及时释放。
I.
静态集合类引起内存泄露
II.remove方法无法删除set集
Objects.hash(firstName,lastName);
III.observer我们在使用监听器的时候,往往是addxxxlistener,但是当我们不需要的时候,忘记removexxxlistener,就容易内存leak。
IV.各种数据链接没有关闭,数据库contentprovider,io,sokect等。
cursor
V.内部类:
java中的内部类(匿名内部类),会持有宿主类的强引用this。
所以如果是newThread这种,后台线程的操作,当线程没有执行结束时,activity不会被回收。
Context的引用,当TextView等等都会持有上下文的引用。
如果有staticdrawable,就会导致该内存无法释放。
VI.单例
单例是一个全局的静态对象,当持有某个复制的类A是,A无法被释放,内存leak。
4.横竖屏切换时Activity的生命周期
切换时的生命周期跟清单文件里的配置有关系。
不设置Activity的android:
configChanges时,切屏会重新调用各个生命周期默认首先销毁当前activity,然后重新加载。
设置Activity
android:
configChanges="
orientation|keyboardHidden|screenSize"
时,切屏不会重新调用各个生命周期,只会执行onConfigurationChanged方法。
通常在游戏开发,
屏幕的朝向都是写死的。
5.handler机制的原理
andriod提供了Handler和Looper来满足线程间的通信。
Handler先进先出原则。
Looper类用来管理特定线程内对象之间的消息交换(MessageExchange)。
1)Looper:
一个线程可以产生一个Looper对象,由它来管理此线程里的MessageQueue(消息队列)。
2)Handler:
你可以构造Handler对象来与Looper沟通,以便push新消息到MessageQueue里;
或者接收Looper从MessageQueue取出)所送来的消息。
3)MessageQueue(消息队列):
用来存放线程放入的消息。
4)线程:
UIthread通常就是mainthread,而Android启动程序时会替它建立一个MessageQueue。