android笔试题及答案
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
单选题
中可以用来处理js中警示,确认等对话框的是(C)
2.假设assets目录下有文件结构html/,用loadUrl()方法将该网页加载至 webView 时,需传入的参数是(B)
A.
B.
C.
D.
3.下列不属于补间动画相关类的是(B)
中网络互连中需要获取状态码,根据状态码来判断请求是否已经完成,下列状
态码表示请求完成的是(D)
5.关于ImageSwitcher 说法错误的是:( B )
里可以通过Alpha设定转换时候的透明位
B.在使用一个ImageSwitcher之前,不一定要调用setFactory方法
是设置资源被读入到这个ImageSwitcher的时候动画效果
是资源文件从这个ImageSwitcher里消失的时候要实现的动画效果
6.建立蓝牙连接时通过_D_方法来获取BluetoothAdapter对象
D. ()
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.不是长久驻留在内存,数据不是持久的,事件过后,若没有保存数据,数据就会消失
a1="abc"; String a2="abc"; String a3="abcd"; 总共创建( A )个String对象。
多选题
1.在添加第一个appwidget窗口小部件时,会执行的方法是(ABD)
2.下列属于SOAP优点的是(ABCD)
A,SOAP 与编程语言无关。SOAP 可以使用任何语言来完成 B,SOAP 是完全和厂商无关。 C,SOAP 与平台无关D,SOAP 是简单的,可扩展的
3.下列属于SAX解析XML需要用到的类和接口是(BCD)
A.DocumentBuilder
4.在使用蓝牙必须获取的权限是(AD)
5.Chronometer类的重要方法(ABC)
简答题
1.oom是什么如何避免
当程序需要申请一段“大”内存,但是虚拟机没有办法及时的给到,即使做了GC操作以后这就会抛出OutOfMemoryException 也就是OOM
避免:
1)减少内存对象的占用
SparseArray代替hashmap
II.避免在android里面使用Enum
III.减少bitmap的内存占用
IV.减少资源图片的大小,过大的图片可以考虑分段加载
内存对象的重复利用
2)大多数对象的复用,都是利用对象池的技术。
gridview/recycleview contentview的复用
属性对于内存对象的复用ARGB_8888/RBG_565/ARGB_4444/ALPHA_8
这个方法在某些条件下非常有用,比如要加载上千张图片的时候。
III.避免在ondraw方法里面 new对象
代替 +
& View 的区别
view的更新必须在UI thread中进行
surfaceview会单独有一个线程做ui的更新。
surfaceview 支持open GL绘制。
3.什么时候会发生内存泄露内存泄露的根本原因
长生命周期的对象持有短生命周期的对象。短周期对象就无法及时释放。
I. 静态集合类引起内存泄露
方法无法删除set集(firstName, lastName);
III. observer 我们在使用监听器的时候,往往是addxxxlistener,但是当我们不需要的时候,忘记removexxxlistener,就容易内存leak。
IV.各种数据链接没有关闭,数据库contentprovider,io,sokect等。cursor
V.内部类:
java中的内部类(匿名内部类),会持有宿主类的强引用this。
所以如果是new Thread这种,后台线程的操作,当线程没有执行结束时,activity不会被回收。
Context的引用,当TextView 等等都会持有上下文的引用。如果有static drawable,就会导致该内存无法释放。
VI.单例
单例是一个全局的静态对象,当持有某个复制的类A是,A无法被释放,内存leak。
4.横竖屏切换时Activity的生命周期
切换时的生命周期跟清单文件里的配置有关系。
不设置Activity的android:configChanges时,切屏会重新调用各个生命周期默认首先销毁当前activity,然后重新加载。
设置Activity android:configChanges="orientation|keyboardHidden|screenSize"时,切屏不会重新调用各个生命周期,只会执行onConfigurationChanged方法。
通常在游戏开发, 屏幕的朝向都是写死的。
机制的原理
andriod提供了 Handler 和 Looper 来满足线程间的通信。Handler 先进先出原则。Looper类用来管理特定线程内对象之间的消息交换(Message Exchange)。
1)Looper: 一个线程可以产生一个Looper对象,由它来管理此线程里的Message Queue(消息队列)。
2)Handler: 你可以构造Handler对象来与Looper沟通,以便push新消息到Message Queue里;或者接收Looper从Message Queue取出)所送来的消息。
3) Message Queue(消息队列):用来存放线程放入的消息。
4)线程:UI thread 通常就是main thread,而Android启动程序时会替它建立一个Message Queue。