2022年最全的android面试题目及其答案 .pdf

上传人:Q****o 文档编号:28359019 上传时间:2022-07-27 格式:PDF 页数:13 大小:100.14KB
返回 下载 相关 举报
2022年最全的android面试题目及其答案 .pdf_第1页
第1页 / 共13页
2022年最全的android面试题目及其答案 .pdf_第2页
第2页 / 共13页
点击查看更多>>
资源描述

《2022年最全的android面试题目及其答案 .pdf》由会员分享,可在线阅读,更多相关《2022年最全的android面试题目及其答案 .pdf(13页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、面试题目及其答案1、 Android dvm的进程和Linux的进程 , 应用程序的进程是否为同一个概念DVM 指 dalivk 的虚拟机。每一个Android 应用程序都在它自己的进程中运行,都拥有一个独立的Dalvik 虚拟机实例。而每一个DVM 都是在 Linux 中的一个进程, 所以说可以认为是同一个概念。2、sim 卡的 EF 文件有何作用sim 卡的文件系统有自己规范,主要是为了和手机通讯,sim 本 身可以有自己的操作系统, EF就是作存储并和手机通讯用的3、嵌入式操作系统内存管理有哪几种,各有何特性页式,段式,段页,用到了MMU,虚拟空间等技术4、 什么是嵌入式实时操作系统,

2、Android 操作系统属于实时操作系统吗? 嵌入式实时操作系统是指当外界事件或数据产生时,能够接受并以足够快的速度予以处理,其处理的结果又能在规定的时间之内来控制生产过程或对处理系统作出快速响应,并控制所有实时任务协调一致运行的嵌入式操作系统。主要用于工业控制、军事设备、航空航天等领域对系统的响应时间有苛刻的要求,这就需要使用实时系统。又可分为软实时和硬实时两种,而android 是基于 linux 内核的,因此属于软实时。5、一条最长的短信息约占多少byte? 中文 70( 包括标点 ),英文 160,160 个字节。6、 android中的动画有哪几类,它们的特点和区别是什么? 两种,一

3、种是Tween 动画、还有一种是Frame 动画。 Tween 动画,这种实现方式可以使视图组件移动、放大、缩小以及产生透明度的变化;另一种 Frame 动画, 传统的动画方法,通过顺序的播放排列好的图片来实现,类似电影。7、handler机制的原理andriod提供了Handler 和 Looper 来满足线程间的通信。Handler 先进先出原则。Looper 类用来管理特定线程内对象之间的消息交换(Message Exchange)。1)Looper: 一个线程可以产生一个Looper对象,由它来管理此线程里的Message Queue( 消息队列 )。名师资料总结 - - -精品资料欢

4、迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 13 页 - - - - - - - - - 2)Handler: 你可以构造Handler 对象来与Looper 沟通,以便push 新消息到Message Queue 里;或者接收Looper 从 Message Queue取出 )所送来的消息。3) Message Queue(消息队列 ):用来存放线程放入的消息。4)线程: UI thread 通常就是main thread ,而Android启动程序时会替它建立一个Message Queue 。8、

5、说说 mvc 模式的原理,它在android中的运用MVC(Model_view_contraller)” 模型 _视图 _控制器 ” 。 MVC 应用程序总是由这三个部分组成。 Event( 事件 )导致 Controller 改变 Model 或 View,或者同时改变两者。只要Controller改变了 Models 的数据或者属性,所有依赖的View 都会自动更新。类似的,只要Contro 9、Activity的生命周期和其他手机平台的应用程序一样, Android的应用程序的生命周期是被统一掌控的,也就是说我们写的应用程序命运掌握在别人(系统 )的手里,我们不能改变它,只能学习 并

6、适应它。简单地说一下为什么是这样:我们手机在运行一个应用程序的时候,有可能打进来电话 发进来短信,或者没有电了,这时候程序都会被中断,优先去服务电话的基本功能,另 外系统也不允许你占用太多资源,至少要保证电话功能吧,所以资源不足的时候也就有可 能被干掉。言归正传, Activity 的基本生命周期如下代码所示:Java 代码1. public 2. class MyActivity extends Activity 3. protected 4. void onCreate(Bundle savedInstanceState); 5. 6. protected 7. void onStart(

7、); 8. 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 13 页 - - - - - - - - - 9. protected 10. void onResume(); 11. 12. protected 13. void onPause(); 14. 15. protected 16. void onStop(); 17. 18. protected 19. void onDestroy(); 20. 21. 22.public class MyActivity e

8、xtends Activity protected void onCreate(Bundle savedInstanceState); protected void onStart(); protected void onResume(); protected void onPause(); protected void onStop(); protected void onDestroy(); 你自己写的Activity会按需要重载这些方法,onCreate是免不了的,在一个Activity名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - -

9、- - - 名师精心整理 - - - - - - - 第 3 页,共 13 页 - - - - - - - - - 正常启动的过程中,他们被调用的顺序是onCreate - onStart - onResume, 在 Activity被干掉的时候顺序是onPause - onStop - onDestroy ,这样就是一个完整的生命周期,但是有人问了,程序正运行着呢来电话了,这个程序咋办?中止了呗, 如果中止的时候新出的一个 Activity 是全屏的那么:onPause-onStop ,恢复的时候onreStart-onResume ,如果打断这个应用程序的是一个Theme 为 Transl

10、ucent 或者 Dialog 的 Activity那么只是onPause , 恢复的时候 onResume 。详细介绍一下这几个方法中系统在做什么以及我们应该做什么:onCreate: 在这里创建界面,做一些数据的初始化工作onStart: 到这一步变成用户可见不可交互的onResume: 变成和用户可交互的, (在 activity 栈系统通过栈的方式管理这些个Activity 的最上面,运行完弹出栈,则回到上一个Activity) onPause: 到这一步是可见但不可交互的,系统会停止动画等消耗CPU 的事情从上文的描述已经知道,应该在这里保存你的一些数据,因为这个时候你的程序的优先级

11、降低,有可能被系统收回。在这里保存的数据,应该在onResume 里读出来,注意:这个方法里做的事情时间要短,因为下一个 activity 不会等到这个方法完成才启动onstop: 变得不可见,被下一个activity 覆盖了onDestroy: 这是 activity 被干掉前最后一个被调用方法了,可能是外面类调用finish 方法或者是系统为了节省空间将它暂时性的干掉,可以用isFinishing() 来判断它,如果你有一个 Progress Dialog 在线程中转动,请在onDestroy 里 把他 cancel 掉,不然等线程结束的时候,调用Dialog 的 cancel 方法会抛异

12、常的。onPause,onstop , onDestroy ,三种状态下 activity 都有可能被系统干掉为了保证程序的正确性,你要在onPause() 里写上持久层操作的代码,将用户编辑的内容都保存到存储介质上(一般都是数据库)。实际工作中因为生命周期的变化而带来的问题也很多, 比如你的应用程序起了新的线程在跑,这时候中断了,你还要去维护那个线程,是暂停还是杀掉还是数据回滚,是吧?因为 Activity可能被杀掉,所以线程中使用的变量和一些界面元素就千万要注意了,一般我都是采用Android 的消息机制Handler ,Message 来处理多线程和界面交互的问题。这个我后面会讲一些,最

13、近因为这些东西头已经很大了,等我理清思绪再跟大家分享。ller 改变了 View,View 会 从潜在的Model 中获取数据来刷新自己。10 、让 Activity变成一个窗口:Activity属性设定讲点轻松的吧,可能有人希望做出来的应用程序是一个漂浮在手机主界面的东西,那么很简单你只需要设置一下Activity的主题就可以了在AndroidManifest.xml 中定义Activity 的 地方一句话:名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 13 页 -

14、- - - - - - - - Xml 代码1. android :theme=android:style/Theme.Dialog 2. 3. android:theme=android:style/Theme.Dialog android :theme=android:style/Theme.Dialog android:theme=android:style/Theme.Dialog 这就使你的应用程序变成对话框的形式弹出来了,或者Xml 代码1. android:theme=android:style/Theme.Translucent 2. 3. android:theme=andr

15、oid:style/Theme.Translucent android:theme=android:style/Theme.Translucent android:theme=android:style/Theme.Translucent 就变成半透明的,友情提示 -.- 类似的这种activity的属性可以在android.R.styleable 类的 AndroidManifestActivity 方法中看到,AndroidManifest.xml中所有元素的属性的介绍都可以参考这个类android.R.styleable 上面说的是属性名称,具体有什么值是在android.R.style

16、中可以看到,比如这个android:style/Theme.Dialog 就对应于android.R.style.Theme_Dialog ,(_换成 . - 注意:这个是文章内容不是笑脸)就可以用在描述文件中了,找找类定义和描述文件中的对应关系就都明白了。11 、 你后台的Activity被系统回收怎么办:onSaveInstanceState 当你的程序中某一个Activity A 在运行时中,主动或被动地运行另一个新的Activity B 这个时候 A 会执行Java 代码1. public 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - -

17、 - - - - 名师精心整理 - - - - - - - 第 5 页,共 13 页 - - - - - - - - - 2. void onSaveInstanceState(Bundle outState) 3. super .onSaveInstanceState(outState); 4. outState.putLong(id, 1234567890); 5. public void onSaveInstanceState(Bundle outState) super.onSaveInstanceState(outState); outState.putLong(id, 123456

18、7890); B 完成以后又会来找A, 这个时候就有两种情况,一种是 A 被回收,一种是没有被回收,被回收的 A 就要重新调用onCreate() 方法,不同于直接启动的是这回onCreate() 里是带上参数savedInstanceState,没被收回的就还是onResume 就好了。savedInstanceState是一个Bundle 对象,你基本上可以把他理解为系统帮你维护的一个 Map 对象。在 onCreate() 里你可能会用到它,如果正常启动onCreate 就不会有它,所以用的时候要判断一下是否为空。Java 代码1. if(savedInstanceState != nu

19、ll) 2. long id = savedInstanceState.getLong(id); 3. if(savedInstanceState != null) long id = savedInstanceState.getLong(id); 就像官方的Notepad 教程里的情况, 你正在编辑某一个note ,突然被中断, 那么就把这个 note 的 id 记住,再起来的时候就可以根据这个id 去把那个note 取出来,程序就完整一些。 这也是看你的应用需不需要保存什么,比如你的界面就是读取一个列表,那就不需要名师资料总结 - - -精品资料欢迎下载 - - - - - - - - -

20、 - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 13 页 - - - - - - - - - 特殊记住什么,哦,没准你需要记住滚动条的位置. 12 、 调用与被调用:我们的通信使者Intent 要说 Intent了,Intent 就是这个这个意图, 应用程序间Intent 进行交流, 打个电话啦,来个电话啦都会发Intent, 这个是 Android架构的松耦合的精髓部分,大大提高了组件的复用性,比如你要在你的应用程序中点击按钮,给某人打电话,很简单啊,看下代码先:Java 代码1. Intent intent = new Intent(); 2

21、. intent.setAction(Intent.ACTION_CALL); 3. intent.setData(Uri.parse(tel: + number); 4. startActivity(intent); Intent intent = new Intent(); intent.setAction(Intent.ACTION_CALL); intent.setData(Uri.parse(tel: + number); startActivity(intent); 扔出这样一个意图,系统看到了你的意图就唤醒了电话拨号程序,打出来电话。 什么读联系人, 发短信啊, 邮件啊, 统统只

22、需要扔出intent 就好了, 这个部分设计地确实很好啊。那 Intent 通过什么来告诉系统需要谁来接受他呢? 通常使用 Intent有两种方法,第一种是直接说明需要哪一个类来接收代码如下: Java 代码1. Intent intent = new Intent(this, MyActivity.class); 2. intent.getExtras().putString(id, 1); 3. tartActivity(intent); Intent intent = new Intent(this, MyActivity.class); intent.getExtras().putSt

23、ring(id, 1); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 13 页 - - - - - - - - - tartActivity(intent); 第一种方式很明显,直接指定了MyActivity 为接受者 ,并且传了一些数据给MyActivity ,在 MyActivity 里可以用getIntent()来的到这个intent 和数据。第二种就需要先看一下AndroidMenifest中的 intentfilter的配置了Xml 代码 名师资料总结 -

24、- -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 13 页 - - - - - - - - - 这里面配置用到了action, data, category 这些东西,那么聪明的你一定想到intent 里也会有这些东西,然后一匹配不就找到接收者了吗? action 其实就是一个意图的字符串名称。上面这段intent-filter的配置文件说明了这个Activity 可以接受不同的Action ,当然相应的程序逻辑也不一样咯,提一下那个mimeType, 他是在ContentProvider里

25、定义的,你要是自己实现一个ContentProvider就知道了,必须指定mimeType 才能让数据被别人使用。不知道原理说明白没,总结一句,就是你调用别的界面不是直接new 那个界面,而是通过扔出一个intent ,让系统帮你去调用那个界面,这样就多么松藕合啊,而且符合了生命周期被系统管理的原则。想知道 category都有啥, Android 为你预先定制好的action 都有啥等等,请亲自访问官方链接 Intent ps:想知道怎么调用系统应用程序的同学,可以仔细看一下你的logcat ,每次运行一个程序的时候是不是有一些信息比如: Starting activity: Intent

26、action=android.intent.action.MAINcategories=android.intent.category.LAUNCHER flags=0 x10200000comp=com.android.camera/com.android.camera.GalleryPicker 再对照一下Intent 的一些 set 方法,就知道怎么调用咯,希望你喜欢:) Android面试题1. 请描述下Activity 的生命周期。2. 如果后台的Activity由于某原因被系统回收了,如何在被系统回收之前保存当前状态? 3. 如何将一个Activity 设置成窗口的样式。(Edit

27、ed by Sodino) 4. 如何退出Activity? 如何安全退出已调用多个Activity 的 Application? 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 9 页,共 13 页 - - - - - - - - - 5. 请介绍下Android 中常用的五种布局。6. 请介绍下Android 的数据存储方式。(Edited by Sodino) 7. 请介绍下ContentProvider是如何实现数据共享的。(Edited by Sodino) 8. 如何启用

28、Service ,如何停用Service。(Edited by Sodino) 9. 注册广播有几种方式,这些方式有何优缺点?请谈谈 Android 引入广播机制的用意。10. 请解释下在单线程模型中Message 、Handler 、Message Queue 、Looper 之间的关系。11. AIDL 的全称是什么 ?如何工作 ?能处理哪些类型的数据? 12. 请解释下Android 程序运行时权限与文件系统权限的区别。(Edited by Sodino) 13. 系统上安装了多种浏览器,能否指定某浏览器访问指定页面?请说明原由。14. 有一个一维整型数组intdata保存的是一张宽为w

29、idth ,高为 height的图片像素值信息。 请写一个算法, 将该图片所有的白色不透明(0 xffffffff)像素点的透明度调整为50% 。15. 你如何评价Android 系统 ?优缺点。1、什么是ANR 如何避免它 ? 答: ANR:Application Not Responding,五秒在 Android 中,活动管理器和窗口管理器这两个系统服务负责监视应用程序的响应。当出现下列情况时, Android 就会显示ANR 对话框了:对输入事件 (如按键、触摸屏事件)的响应超过5 秒意向接受器 (intentReceiver)超过 10 秒钟仍未执行完毕Android 应用程序完全运

30、行在一个独立的线程中(例如 main) 。这就意味着, 任何在主线程中运行的,需要消耗大量时间的操作都会引发ANR。因为此时,你的应用程序已经没有机会去响应输入事件和意向广播(Intent broadcast)。因此, 任何运行在主线程中的方法,都要尽可能的只做少量的工作。特别是活动生命周期中的重要方法如onCreate() 和 onResume() 等更应如此。 潜在的比较耗时的操作,如访问网络和数据库;或者是开销很大的计算,比如改变位图的大小,需要在一个单独的子线程中完成 (或者是使用异步请求,如数据库操作)。但这并不意味着你的主线程需要进入阻塞状态名师资料总结 - - -精品资料欢迎下载

31、 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 10 页,共 13 页 - - - - - - - - - 已等待子线程结束- 也不需要调用Therad.wait() 或者 Thread.sleep() 方法。 取而代之的是,主线程为子线程提供一个句柄(Handler) ,让子线程在即将结束的时候调用它(xing: 可以参看Snake 的例子, 这种方法与以前我们所接触的有所不同)。使用这种方法涉及你的应用程序,能够保证你的程序对输入保持良好的响应,从而避免因为输入事件超过5 秒钟不被处理而产生的ANR。这种实践需要应用到

32、所有显示用户界面的线程,因为他们都面临着同样的超时问题。2、什么情况会导致Force Close ? 如何避免 ?能否捕获导致其的异常? 答:一般像空指针啊,可以看logcat ,然后对应到程序中来解决错误3、 Android 本身的 api 并未声明会抛出异常,则其在运行时有无可能抛出runtime 异常,你遇到过吗 ?诺有的话会导致什么问题?如何解决 ? 4、 简要解释一下activity 、 intent 、 intent filter、 service 、 Broadcase 、 BroadcaseReceiver 答:一个 activity 呈现了一个用户可以操作的可视化用户界面一个

33、 service 不包含可见的用户界面,而是在后台无限地运行可以连接到一个正在运行的服务中,连接后, 可以通过服务中暴露出来的借口与其进行通信一个broadcast receiver是一个接收广播消息并作出回应的component ,broadcast receiver 没有界面intent:content provider在接收到 ContentResolver的请求时被激活。activity, service和 broadcast receiver是被称为 intents 的异步消息激活的。一个 intent 是一个 Intent对象,它保存了消息的内容。对于activity 和 serv

34、ice 来说,它指定了请求的操作名称和待操作数据的URI Intent 对象可以显式的指定一个目标component 。如果这样的话,android 会找到这个component( 基于manifest文件中的声明) 并激活它。但如果一个目标不是显式指定的,android 必须找到响应intent 的最佳 component 。它是通过将Intent对象和目标的intent filter相比较来完成这一工作的。一个component的 intent filter告诉 android 该 component能处理的 intent 。intent filter也是在manifest 文件中声明的。

35、5、IntentService有何优点 ? 答: IntentService 的好处名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 11 页,共 13 页 - - - - - - - - - * Acitivity的进程,当处理Intent的时候,会产生一个对应的Service * Android的进程处理器现在会尽可能的不kill 掉你* 非常容易使用IntentService 也是一个 Service,是 Service的子类,IntentService 和 Service 有所

36、不同,通过Looper 和 Thread 来解决标准Service 中处理逻辑的阻塞问题6、横竖屏切换时候activity 的生命周期 ? 1、不设置 Activity 的 android:configChanges时,切屏会重新调用各个生命周期,切横屏时会执行一次,切竖屏时会执行两次2、设置 Activity 的 android:configChanges=orientation时,切屏还是会重新调用各个生命周期,切横、竖屏时只会执行一次3、设置 Activity 的 android:configChanges=orientation|keyboardHidden时,切屏不会重新调用各个生命

37、周期,只会执行onConfigurationChanged方法1. 如何将 SQLite数据库 (dictionary.db文件 )与 apk 文件一起发布? 解答:可以将dictionary.db文件复制到Eclipse Android 工程中的res raw 目录中。所有在res aw目录中的文件不会被压缩,这样可以直接提取该目录中的文件。可以将dictionary.db文件复制到res aw 目录中2. 如何将打开res raw目录中的数据库文件? 解答:在 Android 中不能直接打开res aw 目录中的数据库文件,而需要在程序第一次启动时将该文件复制到手机内存或SD 卡的某个目录

38、中,然后再打开该数据库文件。复制的基 本 方 法 是 使用getResources().openRawResource方 法 获 得res aw 目录 中 资 源的InputStream对象,然后将该InputStream对象中的数据写入其他的目录中相应文件中。在Android SDK 中可以使用SQLiteDatabase.openOrCreateDatabase方法来打开任意目录中的SQLite 数据库文件。3. Android引入广播机制的用意? 答: a:从 MVC 的角度考虑 (应用程序内 ) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - -

39、- - - - - - 名师精心整理 - - - - - - - 第 12 页,共 13 页 - - - - - - - - - 其实回答这个问题的时候还可以这样问,android 为什么要有那4 大组件,现在的移动开发模型基本上也是照搬的web 那一套 MVC 架构,只不过是改了点嫁妆而已。android 的四大组件本质上就是为了实现移动或者说嵌入式设备上的MVC 架构,它们之间有时候是一种相互依存的关系, 有时候又是一种补充关系,引入广播机制可以方便几大组件的信息和数据交互。b:程序间互通消息(例如在自己的应用程序内监听系统来电) c:效率上 (参考 UDP 的广播协议在局域网的方便性) d:设计模式上 (反转控制的一种应用,类似监听者模式)名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 13 页,共 13 页 - - - - - - - - -

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 技术资料 > 技术总结

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com