Android笔试面试题(三)
2015-04-13 10:55
218 查看
21 mvc模式的原理,它在android中的运用?
MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。
Model(模型)表示应用程序核心(比如数据库记录列表)。
View(视图)显示数据(数据库记录)。
Controller(控制器)处理输入(写入数据库记录)。
在android中mvc的具体体现如下:
1)视图层(view):一般采用xml文件进行界面的描述,在android中也可以使用javascript+html等的方式作为view层,当然这里需要进行java和javascript之间的通 信,幸运的是,android提供了它们之间非常方便的通信实现。
2)控制层(controller):android的控制层的重 任通常落在了众多的acitvity的肩上,这句话也就暗含了不要在acitivity中写代码,要通过activity交割model业务逻辑层处理, 这样做的另外一个原因是android中的acitivity的响应时间是5s,如果耗时的操作放在这里,程序就很容易被回收掉。
3)模型层(model):对数据库的操作、对网络等的操作都应该在model里面处理,当然对业务计算等操作也是必须放在的该层的。
22 如何退出Activity?如何安全退出已调用多个Activity的Application?
对于单一Activity的应用来说,退出很简单,直接finish()即可。当然,也可以用killProcess()和System.exit()这样的方法。但是,对于多Activity的应用来说,在打开多个Activity后,如果想在最后打开的Activity直接退出,上边的方法都是没有用的,因为上边的方法都是结束一个Activity而已。
现提供几个方法,供参考(为了编程方便,最好定义一个Activity基类,处理这些共通问题。):
1)抛异常强制退出:
该方法通过抛异常,使程序Force Close。验证可以,但是,需要解决的问题是,如何使程序结束掉,而不弹出Force
Close的窗口。
2)记录打开的Activity:
每打开一个Activity,就记录下来。在需要退出时,关闭每一个Activity即可。
3)发送特定广播:
在需要结束应用时,发送一个特定的广播,每个Activity收到广播后,关闭即可。
4)递归退出
在打开新的Activity时使用startActivityForResult,然后自己加标志,在onActivityResult中处理,递归关闭。
23 ContentProvider是如何实现数据共享的?
ContentProvider是安卓平台中,在不同应用程序之间实现数据共享的一种机制。一个应用程序如果需要让别的程序可以操作自己的数据,即可采用这种机制。并且此种方式忽略了底层的数据存储实现,ContentProvider提供了一种统一的通过Uri实现数据操作的方式。其步骤为:
1) 在当前应用程序中定义一个ContentProvider。
2.)在当前应用程序的AndroidManifest.xml中注册此ContentProvider
3.)其他应用程序通过ContentResolver和Uri来获取此ContentProvider的数据。 ContentResolver提供了诸如insert(), delete(), query()和update()之类的方法,用于实现对ContentProvider中数据的存取操作。
24 DDMS和TraceView的区别?
DDMS是一个程序执行查看器,在里面可以看见线程和堆栈等信息,TraceView是程序性能分析器。
25 android中listview的优化?
ListView优化大致从以下几个角度:
1)复用已经生成的convertView;
2)添加viewHolder类;
3)缓存数据(图片缓存);
4)分页加载。
引用:http://blog.fangjie.info/listview的性能优化/
26 两个Activity之间怎么传递数据?
1 )基于消息的通信机制
:Intent Bundler,Extra。
2 )利用静态数据,public static
成员变量。
3) 基于外部存储的传输,File/Prefernce/Sqlite,或ContentProvider。
4 )基于IPC的通信机制:AIDL接口。
27 Intent可以传递哪些类型数据?
1) Intent/Bundle支持传递基本类型的数据和基本类型的数组数据,以及String/CharSequence类型的数据和String/CharSequence类型的数组数据。
2)Intent/Bundle还可以传递Parcelable(包裹化,邮包)和Serializable(序列化)类型的数据,以及它们的数组/列表数据。所以要让非基本类型和非String/CharSequence类型的数据通过Intent/Bundle来进行传输,我们就需要在数据类型中实现Parcelable接口或是Serializable接口。
28 Android程序与Java程序的区别?
Android的应用层上的应用程序是用Java编写的,以Java作为开发语言,但是,Java并不等同于Android,因为Android SDK引用了Java
SDK的大部分,少数部分被Android SDK所抛弃。
29 AndroidManifest.xml文件中主要包括哪些信息?
uses-permission:请求你的package正常运作所需赋予的安全许可。
permission: 声明了安全许可来限制哪些程序能你package中的组件和功能。
instrumentation:声明了用来测试此package或其他package指令组件的代码。
application:包含package中application级别组件声明的根节点。
activity:Activity是用来与用户交互的主要工具。
receiver:IntentReceiver能使的application获得数据的改变或者发生的操作,即使它当前不在运行。
service:Service是能在后台运行任意时间的组件。
provider:ContentProvider是用来管理持久化数据并发布给其他应用程序使用的组件。
30 什么是Android数字签名?
1) 所有的应用程序都必须有数字证书,Android系统不会安装一个没有数字证书的应用程序。
2) Android程序包使用的数字证书可以是自签名的,不需要一个权威的数字证书机构签名认证。
3) 如果要正式发布一个Android ,必须使用一个合适的私钥生成的数字证书来给程序签名,而不能使用adt插件或者ant工具生成的调试证书来发布。
4) 数字证书都是有有效期的,Android只是在应用程序安装的时候才会检查证书的有效期。如果程序已经安装在系统中,即使证书过期也不会影响程序的正常功能。
MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。
Model(模型)表示应用程序核心(比如数据库记录列表)。
View(视图)显示数据(数据库记录)。
Controller(控制器)处理输入(写入数据库记录)。
在android中mvc的具体体现如下:
1)视图层(view):一般采用xml文件进行界面的描述,在android中也可以使用javascript+html等的方式作为view层,当然这里需要进行java和javascript之间的通 信,幸运的是,android提供了它们之间非常方便的通信实现。
2)控制层(controller):android的控制层的重 任通常落在了众多的acitvity的肩上,这句话也就暗含了不要在acitivity中写代码,要通过activity交割model业务逻辑层处理, 这样做的另外一个原因是android中的acitivity的响应时间是5s,如果耗时的操作放在这里,程序就很容易被回收掉。
3)模型层(model):对数据库的操作、对网络等的操作都应该在model里面处理,当然对业务计算等操作也是必须放在的该层的。
22 如何退出Activity?如何安全退出已调用多个Activity的Application?
对于单一Activity的应用来说,退出很简单,直接finish()即可。当然,也可以用killProcess()和System.exit()这样的方法。但是,对于多Activity的应用来说,在打开多个Activity后,如果想在最后打开的Activity直接退出,上边的方法都是没有用的,因为上边的方法都是结束一个Activity而已。
现提供几个方法,供参考(为了编程方便,最好定义一个Activity基类,处理这些共通问题。):
1)抛异常强制退出:
该方法通过抛异常,使程序Force Close。验证可以,但是,需要解决的问题是,如何使程序结束掉,而不弹出Force
Close的窗口。
2)记录打开的Activity:
每打开一个Activity,就记录下来。在需要退出时,关闭每一个Activity即可。
3)发送特定广播:
在需要结束应用时,发送一个特定的广播,每个Activity收到广播后,关闭即可。
4)递归退出
在打开新的Activity时使用startActivityForResult,然后自己加标志,在onActivityResult中处理,递归关闭。
23 ContentProvider是如何实现数据共享的?
ContentProvider是安卓平台中,在不同应用程序之间实现数据共享的一种机制。一个应用程序如果需要让别的程序可以操作自己的数据,即可采用这种机制。并且此种方式忽略了底层的数据存储实现,ContentProvider提供了一种统一的通过Uri实现数据操作的方式。其步骤为:
1) 在当前应用程序中定义一个ContentProvider。
2.)在当前应用程序的AndroidManifest.xml中注册此ContentProvider
3.)其他应用程序通过ContentResolver和Uri来获取此ContentProvider的数据。 ContentResolver提供了诸如insert(), delete(), query()和update()之类的方法,用于实现对ContentProvider中数据的存取操作。
24 DDMS和TraceView的区别?
DDMS是一个程序执行查看器,在里面可以看见线程和堆栈等信息,TraceView是程序性能分析器。
25 android中listview的优化?
ListView优化大致从以下几个角度:
1)复用已经生成的convertView;
2)添加viewHolder类;
3)缓存数据(图片缓存);
4)分页加载。
引用:http://blog.fangjie.info/listview的性能优化/
26 两个Activity之间怎么传递数据?
1 )基于消息的通信机制
:Intent Bundler,Extra。
2 )利用静态数据,public static
成员变量。
3) 基于外部存储的传输,File/Prefernce/Sqlite,或ContentProvider。
4 )基于IPC的通信机制:AIDL接口。
27 Intent可以传递哪些类型数据?
1) Intent/Bundle支持传递基本类型的数据和基本类型的数组数据,以及String/CharSequence类型的数据和String/CharSequence类型的数组数据。
2)Intent/Bundle还可以传递Parcelable(包裹化,邮包)和Serializable(序列化)类型的数据,以及它们的数组/列表数据。所以要让非基本类型和非String/CharSequence类型的数据通过Intent/Bundle来进行传输,我们就需要在数据类型中实现Parcelable接口或是Serializable接口。
28 Android程序与Java程序的区别?
Android的应用层上的应用程序是用Java编写的,以Java作为开发语言,但是,Java并不等同于Android,因为Android SDK引用了Java
SDK的大部分,少数部分被Android SDK所抛弃。
29 AndroidManifest.xml文件中主要包括哪些信息?
uses-permission:请求你的package正常运作所需赋予的安全许可。
permission: 声明了安全许可来限制哪些程序能你package中的组件和功能。
instrumentation:声明了用来测试此package或其他package指令组件的代码。
application:包含package中application级别组件声明的根节点。
activity:Activity是用来与用户交互的主要工具。
receiver:IntentReceiver能使的application获得数据的改变或者发生的操作,即使它当前不在运行。
service:Service是能在后台运行任意时间的组件。
provider:ContentProvider是用来管理持久化数据并发布给其他应用程序使用的组件。
30 什么是Android数字签名?
1) 所有的应用程序都必须有数字证书,Android系统不会安装一个没有数字证书的应用程序。
2) Android程序包使用的数字证书可以是自签名的,不需要一个权威的数字证书机构签名认证。
3) 如果要正式发布一个Android ,必须使用一个合适的私钥生成的数字证书来给程序签名,而不能使用adt插件或者ant工具生成的调试证书来发布。
4) 数字证书都是有有效期的,Android只是在应用程序安装的时候才会检查证书的有效期。如果程序已经安装在系统中,即使证书过期也不会影响程序的正常功能。
相关文章推荐
- android技术 面试题 笔试题精华重点
- Android笔试面试题二(常考问答)
- 企业级Android安卓笔试题,面试题第一篇
- Android笔试面试题整理
- Android开发经典笔试面试题汇总(持续更新中)
- Android笔试面试题三(易考问答)
- 百度 腾讯 阿里UC 迅雷 部分Android笔试 面试题
- android面试题笔试题总结
- 2011Android技术面试整理附有详细答案(包括百度、新浪、中科软等多家公司笔试面试题)
- 2011Android技术面试整理附有详细答案(包括百度、新浪、中科软等多家公司笔试面试题)
- (4.4.8)Android常见笔试面试题
- android高薪之路--笔试面试题汇总
- Android笔试面试题(二)
- 2011Android技术面试整理附有详细答案(包括百度、新浪、中科软等多家公司笔试面试题)
- 2011Android技术面试整理附有详细答案(包括百度、新浪、中科软等多家公司笔试面试题)
- Android常见笔试&面试题
- android 面试题笔试题总结
- 关于Android的面试题(笔试题)---选择(个人分析)
- Android开发史上最全笔试面试题
- Android面试题(面经笔试题)收集