安卓面试题及参考答案
安卓面试题及参考答案
导读:我根据大家的需要整理了一份关于《安卓面试题及参考答案》的内容,具体内容:面试题是安卓面试的时候经常出现的形式,是安卓面试过程中必不可少的组成部分。下面是我为大家带来的安卓面试题及答案,相信对你会有帮助的。安卓面试题及答案(一)1.简要解释一...
面试题是安卓面试的时候经常出现的形式,是安卓面试过程中必不可少的组成部分。下面是我为大家带来的安卓面试题及答案,相信对你会有帮助的。
安卓面试题及答案(一)
1.简要解释一下 activity、 intent 、intent filter、service、Broadcase、BroadcaseReceiver
答案:一个 activity 呈现了一个用户可以操作的可视化用户界面
一个 service 不包含可见的用户界面,而是在后台无限地运行
可以连接到一个正在运行的服务中,连接后,可以通过服务中暴露出来的借口与其进行通信
一个 broadcast receiver 是一个接收广播消息并作出回应的component,broadcastreceiver 没有界面
provider 在接收到 ContentResolver 的请求时被激活。
activity, service 和 broadcast receiver 是被称为 intents 的异步消息激活的。
一个 intent 是一个 Intent 对象,它保存了消息的内容。对于 activity
和 service 来说,它指定了请求的操作名称和待操作数据的 URI
Intent 对象可以显式的指定一个目标 component。如果这样的话,android 会找到这个 component(基于 manifest 文件中的声明)并激活它。但如果一个目标不是显式指定的,android 必须找到响应 intent 的最佳component。
它是通过将 Intent 对象和目标的 intent filter 相比较来完成这一工作的。一个 component 的 intent filter 告诉 android 该 component 能处理的 intent。intent filter 也是在 manifest 文件中声明的。
2.IntentService 有何优点?
答案:IntentService 的好处
* Acitivity 的进程,当处理 Intent 的时候,会产生一个对应的 Service
* Android 的进程处理器现在会尽可能的不 kill 掉你
* 非常容易使用
3.横竖屏切换时候 activity 的生命周期?
答案:1、不设置 Activity 的
2、设置 Activity 的
3、设置 Activity 的
4.如何将 SQLite 数据库(dictionary.db 文件)与 apk 文件一起发布?
答案:可以将 dictionary.db 文件复制到 Eclipse Android 工程中的 res aw 目录中。所有在 res aw 目录中的文件不会被压缩,这样可以直接提取该目录中的文件。可以将 dictionary.db 文件复制到 res aw 目录中
5.如何将打开 res aw 目录中的数据库文件?
答案:在 Android 中不能直接打开 res aw 目录中的数据库文件,而需要在程序第一次启动时将该文件复制到手机内存或 SD 卡的某个目录中,然后再打开该数据库文件。复制的基本方法是使用getResources().openRawResource 方法获得 res aw 目录中资源的 InputStream 对象,然后将该 InputStream 对象中的数据写入其他的目录中相应文件中。在 Android SDK 中可以使用SQLiteDatabase.openOrCreateDatabase 方法来打开任意目录中的 SQLite数据库文件。
6.Android 引入广播机制的用意?
答案:a:从 MVC 的角度考虑(应用程序内),其实回答这个问题的时候还可以这样问,android 为什么要有那 4 大组件,现在的移动开发模型基本上也是照搬的 web 那一套 MVC 架构,只不过是改了点嫁妆而已。android的四大组件本质上就是为了实现移动或者说嵌入式设备上的 MVC 架构,它们之间有时候是一种相互依存的关系,有时候又是一种补充关系,引入广播机制可以方便几大组件的信息和数据交互。
b:程序间互通消息(例如在自己的应用程序内监听系统来电)
c:效率上(参考 UDP 的广播协议在局域网的方便性)
d:设计模式上(反转控制的一种应用,类似监听者模式)
7.Android dvm 的进程和 Linux 的进程, 应用程序的进程是否为同一个概念
答案:DVM 指 dalivk 的虚拟机。每一个 Android 应用程序都在它自己的进程中运行,都拥有一个独立的 Dalvik 虚拟机实例。而每一个 DVM 都是
在 Linux 中的一个进程,所以说可以认为是同一个概念。
8.sim 卡的 EF 文件有何作用
答案:sim 卡的文件系统有自己规范,主要是为了和手机通讯,sim 本 身可以有自己的操作系统,EF 就是作存储并和手机通讯用的
9.嵌入式操作系统内存管理有哪几种,各有何特性
答案:页式,段式,段页,用到了 MMU,虚拟空间等技术
10.什么是嵌入式实时操作系统, Android 操作系统属于实时操作系统吗?
答案:嵌入式实时操作系统是指当外界事件或数据产生时,能够接受并以足够快的速度予以处理,其处理的结果又能在规定的时间之内来控制生产过程或对处理系统作出快速响应,并控制所有实时任务协调一致运行的嵌入式操作系统。主要用于工业控制、 军事设备、 航空航天等领域对系统的响应时间有苛刻的要求,这就需要使用实时系统。又可分为软实时和硬实时两种,而 android 是基于 linux 内核的,因此属于软实时。
11.一条最长的短信息约占多少 byte?
答案:中文 70(包括标点),英文 160,160 个字节。
12.android 中的动画有哪几类,它们的特点和区别是什么?
答案:两种,一种是 Tween 动画、还有一种是 Frame 动画。Tween 动画,这种实现方式可以使视图组件移动、放大、缩小以及产生透明度的变化;另一种 Frame 动画,传统的动画方法,通过顺序的播放排列好的图片来实现,类似电影。
13.handler 机制的原理
答案: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。
14.说说 mvc 模式的原理,它在 android 中的运用
答案:MVC(Model_view_contraller)"模型_视图_控制器"。
MVC 应用程序总是由这三个部分组成。Event(事件)导致 Controller 改变 Model 或View,或者同时改变两者。只要 Controller 改变了 Models 的数据或者属性,所有依赖的 View 都会自动更新。
15.DDMS 和 TraceView 的区别?
答案:DDMS 是一个程序执行查看器,在里面可以看见线程和堆栈等信息,TraceView 是程序性能分析器。
16.java 中如何引用本地语言
答案:可以用 JNI(java nativeinterface java 本地接口)接口。
17.谈谈 Android 的 IPC(进程间通信)机制
答案:IPC 是内部进程通信的简称, 是共享"命名管道"的资源。Android中的 IPC 机制是为了让 Activity 和 Service 之间可以随时的进行交互,故在 Android 中该机制,只适用于 Activity 和 Service 之间的通信,类似于远程方法调用,类似于 C/S 模式的访问。通过定义 AIDL 接口文件来定义 IPC 接口。Servier 端实现 IPC 接口,Client 端调用 IPC 接口本地代理。
18.NDK 是什么
答案:NDK 是一些列工具的集合,NDK 提供了一系列的工具,帮助开发者迅速的开发 C/C++的动态库,并能自动将 so 和 java 应用打成 apk 包。
NDK 集成了交叉编译器,并提供了相应的 mk 文件和隔离 cpu、平台等的差异,开发人员只需简单的修改 mk 文件就可以创建出 so
>>>点击下页还有更多
上一篇:通信保护安自远动通道管理规定