android面试题目--答案
- 格式:doc
- 大小:54.00 KB
- 文档页数:7
Android笔试题一、选择题1. 对一些资源以及状态的操作保存,最好是保存在生命周期的哪个函数中进行(d)A、onPause()B、onCreate()C、 onResume()D、onStart()2. android 中下列属于Intent的作用的是(c)A、实现应用程序间的数据共享B、是一段长的生命周期,没有用户界面的程序,可以保持应用在后台运行,而不会因为切换页面而消失C、可以实现界面间的切换,可以包含动作和动作数据,连接四大组件的纽带D、处理一个应用程序整体性的工作3. 下面的对自定style的方式正确的是(a)A、 <resources><style name="myStyle"><item name="android:layout_width">fill_parent</item> </style></resources>B、 <style name="myStyle"><item name="android:layout_width">fill_parent</item></style>C、 <resources><item name="android:layout_width">fill_parent</item> </resources>D、 <resources><style name="android:layout_width">fill_parent</style> </resources>4. android 关于service生命周期的onCreate()和onStart()说确的是(ad)(多选题)A、当第一次启动的时候先后调用onCreate()和onStart()方法B、当第一次启动的时候只会调用onCreate()方法C、如果service已经启动,将先后调用onCreate()和onStart()方法D、如果service已经启动,只会执行onStart()方法,不在执行onCreate()方法5. Android项目工程下面的assets目录的作用是什么bA、放置应用到的图片资源。
B、主要放置多媒体等数据文件C、放置字符串,颜色,数组等常量数据D、放置一些与UI相应的布局文件,都是xml文件二、填空题6. android中常用的四个布局是framlayout,linenarlayout,relativelayout 和tablelayout。
7. android 的四大组件是activiey,service,broadcast和contentprovide。
8. android 中service的启动方法是:startservice和bindservice。
9. activity一般会重载7个方法用来维护其生命周期,除了onCreate(),onStart(),onDestory()外,还有onrestart,onresume,onpause,onstop。
10. android的数据存储的方式sharedpreference,文件,SQlite,contentprovider,网络。
11. 当启动一个Activity并且新的Activity执行完后需要返回到启动它的Activity来执行的回调函数是startActivityResult()。
12. 注册广播有两种常见的方式:使用代码进行注册和AndroidManifest.xml中声明。
三、问答题1、谈谈你对同步和异步的理解和区别,在android中实现异步的常用方式以及区别。
AsyncTask和Handler两种异步方式AsyncTask实现的原理,和适用的优缺点l 过程可控缺点:l 在使用多个异步操作和并需要进行Ui变更时,就变得复杂起来.Handler异步实现的原理和适用的优缺点在Handler 异步实现时,涉及到Handler, Looper, Message,Thread四个对象,实现异步的流程是主线程启动Thread(子线程)àthread(子线程)运行并生成Message-àLooper获取Message并传递给HandleràHandler逐个获取Looper中的Message,并进行UI变更。
使用的优点:l 结构清晰,功能定义明确l 对于多个后台任务时,简单,清晰使用的缺点:l 在单个后台异步处理时,显得代码过多,结构过于复杂(相对性)2、谈谈你对http协议的理解,以及发送http请求的常用方法和他们的区别。
1、GET请求的数据会附在URL之后(就是把数据放置在HTTP协议头中),以?分割URL 和传输数据,参数之间以&相连,2、POST把提交的数据则放置在是HTTP包的包体中。
3、"GET方式提交的数据最多只能是1024字节,理论上POST没有限制,可传较大量的数据3、android中线程间是怎样通信的。
andriod提供了Handler 和 Looper 来满足线程间的通信。
Handler先进先出原则。
Looper类用来管理特定线程对象之间的消息交换(MessageExchange)。
1)Looper: 一个线程可以产生一个Looper对象,由它来管理此线程里的MessageQueue(消息队列)。
2)Handler: 你可以构造Handler对象来与Looper沟通,以便push新消息到MessageQueue里;或者接收Looper从Message Queue取出)所送来的消息。
3) Message Queue(消息队列):用来存放线程放入的消息。
4)线程:UIthread 通常就是main thread,而Android启动程序时会替它建立一个MessageQueue。
四、程序设计1、谈谈你对观察者设计模式的理解,请以编写简单的示例代码。
2、实际问题:随着android的迅速崛起,android广告平台也跟着产生,就光国就几十家,如果开发者对每个广告平台都进行集成的话是一件很费力不讨好的事情,因为开发者需要阅读各个广告平台的文档,编写代码以及维护等,如果让你为开发者解决该问题的话(即为开发者设计一个聚合多家广告平台的sdk,开发者使用该sdk后可以切换这广告平台的展示)。
你该怎么做。
假设现在有三家广告平台,请设计一个sdk聚合这三家广告平台,把这个sdk给开发者用,开发者使用该sdk后,就像使用一家广告平台一样,他们不需要阅读这三家广告平台的文档,只需要阅读我们sdk的文档即可(假设平台广告的广告只要请求就可展示,无需其他信息)。
具体要求:1、广告在30秒后切换下一个广告平台,下一个广告平台随机生成。
2、编写示例代码面试题目1、谈谈你对面向对象以及面向对象的程序设计的理解,特征。
2、对android中分辨率,密度的了解以及在android中怎样处理由于分辨率问题。
3、谈谈你对线程和后台服务的理解和区别。
4、关于android开发中如何调试,如何查看log5、android的存管理,导致android存泄露的原因,以及在android中怎样分析存泄露。
在Java中,存的分配是由程序完成的,而存的释放是由垃圾收集器(Garbage Collection,GC)完成的,程序员不需要通过调用函数来释放存,但它只能回收无用并且不再被其它对象引用的那些对象所占用的空间。
导致存泄漏主要的原因是,先前申请了存空间而忘记了释放。
如果程序中存在对无用对象的引用,那么这些对象就会驻留存,消耗存,因为无法让垃圾回收器GC验证这些对象是否不再需要。
如果存在对象的引用,这个对象就被定义为"有效的活动",同时不会被释放。
要确定对象所占存将被回收,我们就要务必确认该对象不再会被使用。
典型的做法就是把对象数据成员设为null或者从集合中移除该对象。
但当局部变量不需要时,不需明显的设为null,因为一个方法执行完毕时,这些引用会自动被清理。
在Java中,存泄漏就是存在一些被分配的对象,这些对象有下面两个特点,首先,这些对象是有被引用的,即在有向树形图中,存在树枝通路可以与其相连;其次,这些对象是无用的,即程序以后不会再使用这些对象。
如果对象满足这两个条件,这些对象就可以判定为Java中的存泄漏,这些对象不会被GC所回收,然而它却占用存。
强引用:引用为空的时候,Java的垃圾回收器会处理。
一般来说自己写的程序大部分都是强引用。
软引用:堆存不够的时候,Java的垃圾回收器会处理这类引用。
弱引用:Jave的垃圾回收器每次都会回收这类引用。
如何用MAT来分析,前提是Android开发和测试的工具安装完整,SDK,Eclipse:1.打开Eclipse2.选择 Help->Install New Software;3.在Work with中添加站点:/mat/1.0/update-site/(这个地址可能会变化,但是新的地址可以在官方上找到:/mat/downloads.php )4.生成.hprof文件:插入SD卡(Android机器很多程序都需要插入SD卡),并将设备连接到PC,在Eclipse中的DDMS中选择要测试的进程,然后点击Update Heap 和Dump HPROF file两个Button。
.hprof 文件会自动保存在SD卡上,把 .hprof 文件拷贝到PC上的\ android-sdk-windows\tools目录下。
这个由DDMS生成的文件不能直接在MAT 打开,需要转换。
运行cmd打开命令行,cd到\ android-sdk-windows\tools所在目录,并输入命令hprof-conv xxxxx.hprof yyyyy.hprof,其中xxxxx.hprof为原始文件,yyyyy.hprof为转换过后的文件。
转换过后的文件自动放在android-sdk-windows\tools 目录下。
OK,到此为止,.hprof文件处理完毕,可以用来分析存泄露情况了。
5.打开MAT:在Eclipse中点击Windows->Open Perspective->Other->Memory Analysis6.导入.hprof文件在MAT中点击 File->Open File,浏览到刚刚转换而得到的.hprof文件,并Cancel掉自动生成报告,点击Dominator Tree,并按Package分组,选择自己所定义的Package 类点右键,在弹出菜单中选择List objects->With incoming references。