




已阅读5页,还剩2页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Android笔试题一、选择题1. 对一些资源以及状态的操作保存,最好是保存在生命周期的哪个函数中进行(d) A、onPause() B、onCreate() C、 onResume()D、onStart()2. android 中下列属于Intent的作用的是(c) A、实现应用程序间的数据共享B、是一段长的生命周期,没有用户界面的程序,可以保持应用在后台运行,而不会因为切换页面而消失C、可以实现界面间的切换,可以包含动作和动作数据,连接四大组件的纽带D、处理一个应用程序整体性的工作3. 下面的对自定style的方式正确的是(a)A、 fill_parent B、 fill_parent C、 fill_parentD、 fill_parent4. 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并传递给HandlerHandler逐个获取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.打开Eclipse 2.选择 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-windowstools目录下。这个由DDMS生成的文件不能直接在MAT打开,需要转换。 运行cmd打开命令行,cd到 android-sdk-windowstools所在目录,并输入命令hprof-conv xxxxx.hprof yyyyy.hprof,其中xxxxx.hprof为原始文件,yyyyy.hprof为转换过后的文件。转换过后的文件自动放在android-sdk-windowstools 目录下。 OK,到此为止,.hprof文件处理完毕,可以用来分析内存泄露情况了。 5.打开MAT: 在Eclipse中点击Windows-Open Perspective-Other-Memory Analysis 6.导入.hprof文件 在MAT中点击 File-Open File,浏览到刚刚转换而得到的.hprof文件,并Cancel掉自动生成报告,点击Dominator Tree,并按Package分组,选择自己所定义的Package 类点右键,在弹出菜单中选择List objects-With incoming references。 这时会列出所有可疑类,右键点击某一项,并选择Path to GC Roots-exclude weak/soft references,会进一步筛选出跟程序相关的所有有内存泄露的类。据此,可以追踪到代码中的某一个产生泄露的类。 6、 JNI和NDK的区别android常用的开发方式是java封装的库,而这些库的底层实现是由C/C+实现,如媒体,图形库等java调用这样实现就需要用JNI(Java Native Interface)平时用的也就是google给我们封装的好的库,即便是底层实现用的不是Java,但都有统一的Java接口而NDK的作用是“我们自己写本地代码”(C/C+),自己用JNI封装成Java接口比如我们想做个计算,二这不是Java的强项,可以用C/C+来写实现,返回一个运算结果就行了NDKr5已经实现了不用写一行Java代码开发程序了,只不过还是用到了虚拟机,细节被封装隐藏起来了而已JNI是Java调用Native机制,是Java语言自己的特性全称为 Java Native Interface,类似的还有微软.Net Framework上的p/invoke,可以让C#或Visual Basic.Net可以调用C/C+的API,所以说J
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 核酸理论考试题及答案
- 汉字默写考试题及答案
- 国贸自考试题及答案
- 柜员高考试题及答案
- 关于腹泻考试题及答案
- 古文鉴赏考试题及答案
- 公关国考试题及答案
- 工会业务考试题及答案
- 高压叉车考试题及答案
- 服装概论考试题及答案
- 反洗钱可疑交易识别课件
- 人教部编版小学三年级语文上册课后习题参考答案
- 光伏运维安全培训总结课件
- 2025年第九届全国中小学“学宪法、讲宪法”活动知识竞赛题库及答案
- 土石方运输居间合同范本土石方运输居间合同格式-仅供参考8篇
- 2025-2026学年人教版(PEP)三年级上册英语教学计划(三篇)
- 室外消火栓埋地施工方案
- 电源老化知识培训课件
- 施工质量月课件
- 2025年辅警笔试考试题库题库与答案
- 心血管疾病患者血糖波动管理的专家共识解读 8
评论
0/150
提交评论