当前位置:操作系统 > 安卓/Android >>

android面试题之四

十六、Android中Dalvik和JVM的区别是什么?
 
1. Dalvik基于寄存器,而JVM基于栈。基于寄存器的虚拟机对于更大的程序来说,在它们编译的时候,花费的时间更短。
 
2. Dalvik负责进程隔离和线程管理,每一个Android应用在底层都会对应一个独立的Dalvik虚拟机实例,Dalvik专门针对同时高效运行多个虚拟机进行了优化,其代码在虚拟机的解释下得以执行。
 
3. Dalvik并未遵守jvm规范,两者也不兼容。jvm运行的是java字节码(.class文件),Dalvik运行的是其专有的dex(Dalvik Executable)文件。dex文件格式可以减少整体文件尺寸,提高I/o操作的类查找速度。Dalvik虚拟机有自己的 bytecode,并非使用 Java bytecode。
 
 
 
十七、通过Intent传递一些二进制数据的方法有哪些?
 
1.使用Serializable接口实现序列化,这是Java常用的方法。
 
2.实现Parcelable接口,这里Android的部分类比如Bitmap类就已经实现了,同时Parcelable在Android AIDL中交换数据也很常见的。
 
 
 
十八、能说下Android应用的入口点吗?
 
其实在android.app.Application这个包的onCreate才是真正的Android入口点,只不过大多数开发者无需重写该类,他的继承关系如下图:
 
java.lang.Object
? android.content.Context
? android.content.ContextWrapper
? android.app.Application
 
 
 
android.app.Application类包含了4个公开的方法
 
void onConfigurationChanged(Configuration newConfig)
void onCreate() //这里才是真正的入口点。
void onLowMemory()
void onTerminate()
 
所以希望大家,记住真正的Android入口点是application的main,你可以看下androidmanifest.xml的包含关系就清楚了,并不是每个应用都必须有Activity的。
 
 
 
十九、Android都有哪些XML解析器,都熟练掌握吗?
 
XML解析主要有三种方式,SAX、DOM、XmlPull。
 
至于SAX、DOM区别在http://blog.csdn.net/u010142437/article/details/11956383中已经介绍过。
 
XmlPull和Sax类似,是基于流(stream)操作文件,然后根据节点事件回调开发者编写的处理程序。因为是基于流的处理,因此Xmlpull和Sax都比较节约内存资源,不会象Dom那样要把所有节点以对橡树的形式展现在内存中。但Xmlpull比Sax更简明,而且不需要扫描完整个流。
 
 
 
二十、SQLite支持事务吗? 添加删除如何提高性能?
 
SQLite作为轻量级的数据库,比MySQL还小,但支持SQL语句查询,提高性能可以考虑通过原始经过优化的SQL查询语句方式处理。
 
 
 
二十一、assets与res/raw的不同?
 
assets:用于存放需要打包到应用程序的静态文件,以便部署到设备中。与res/raw不同点在于,ASSETS支持任意深度的子目录。这些文件不会生成任何资源ID,必须使用/assets开始(不包含它)的相对路径名。
 
Res:用于存放应用程序的资源(如图标、GUI布局等),将被打包到编译后的Java中。不支持深度子目录;
 
res/menu:存放基于XML的菜单描述;
 
res/raw:存放通用的文件,该文件夹内的文件将不会被编译成二进制文件,按原样复制到设备上;
 
res/values:存放字符串、尺寸值。
 
res/xml:存放通用的XML文件。
 
 
 
二十二、Android的优势与不足?
 
Android平台手机 5大优势:
 
开放性:在优势方面,Android平台首先就是其开发性,开发的平台允许任何移动终端厂商加入到Android联盟中来。显著的开放性可以使其拥有更多的开发者,随着用户和应用的日益丰富,一个崭新的平台也将很快走向成熟。开发性对于Android的发展而言,有利于积累人气,这里的人气包括消费者和厂商,而对于消费者来讲,最大的受益正是丰富的软件资源。开放的平台也会带来更大竞争,如此一来,消费者将可以用更低的价位购得心仪的手机。
 
挣脱运营商的束缚:在过去很长的一段时间,特别是在欧美地区,手机应用往往受到运营商制约,使用什么功能接入什么网络,几乎都受到运营商的控制。自iPhone上市 ,用户可以更加方便地连接网络,运营商的制约减少。互联网巨头Google推动的Android终端天生就有网络特色,将让用户离互联网更近。
 
丰富的硬件选择:这一点还是与Android平台的开放性相关,由于Android的开放性,众多的厂商会推出千奇百怪,功能特色各具的多种产品。
 
不受任何限制的开发商:Android平台提供给第三方开发商一个十分宽泛、自由的环境,不会受到各种条条框框的阻扰,可想而知,会有多少新颖别致的软件会诞生。但也有其两面性,血腥、暴力、易做图方面的程序和游戏如何控制正是留给Android难题之一。
 
无缝结合的Google应用:如今叱诧互联网的Google已经走过10年度历史,从搜索巨人到全面的互联网渗透,Google服务如地图、邮件、搜索等已经成为连接用户和互联网的重要纽带,而Android平台手机将无缝结合这些优秀的Google服务。
 
 
 
Android的5大不足:
 
安全和隐私:
 
由于手机与互联网的紧密联系,个人隐私很难得到保守。除了上网过程中经意或不经意留下的个人足迹,Google这个巨人也时时站在你的身后,洞穿一切,因此,互联网的深入将会带来新一轮的隐私危机。
 
首先开卖Android手机的不是最大运营商:众所周知,T-Mobile在23日,于美国纽约发布 了Android首款手机G1。但是在北美市场,最大的两家运营商乃AT&T和Verizon,而目前所知取得Android手机销售权的仅有T-Mobile和Sprint,其中T-Mobile的3G网络相对于其他三家也要逊色不少,因此,用户可以买账购买G1,能否体验到最佳的3G网络服务则要另当别论了!
 
运营商仍然能够影响到Android手机:在国内市场,不少用户对购得移动定制机不满,感觉所购的手机被人涂画了广告一般。这样的情况在国外市场同样出现。Android手机的另一发售运营商Sprint就将在其机型中内置其手机商店程序。
 
同类机型用户减少:在不少手机论坛都会有针对某一型号的子论坛,对一款手机的使用心得交流,并分享软件资源。而对于Android平台手机,由于厂商丰富,产品类型多样,这样使用同一款机型的用户越来越少,缺少统一机型的程序强化。举个稍显不当的例子,现在山寨机泛滥,品种各异,就很少有专门针对某个型号山寨机的讨论和群组,除了哪些功能异常抢眼、颇受追捧的机型以外。
 
过分依赖开发商缺少标准配置:在使用PC端的Windows Xp系统的时候,都会内置微软Windows Media Player这样一个浏览器程序,用户可以选择更多样的播放器,如Realplay或暴风影音等。但入手开始使用默认的程序同样可以应付多样的需要。在 Android平台中,由于其开放性,软件更多依赖第三方厂商,比如Android系统的SDK中就没有内置音乐 播放器,全部依赖第三方开发,缺少了产品的统一性。
 
 
 
二十三、静态变量和实例变量的区别?
 
1.在语法定义上的区别:静态变量前要加static关键字,而实例变量前则不加。
 
2.在程序运行时的区别:实例变量属于某个对象的属性,必须创建了实例对象,其中的实例变量才会被分配空间,才能使用这个实例变量。静态变量不属于某个实例对象,而是属于类,所以也称为类变量,只要程序加载了类的字节码,不用创建任何实例对象,静态变量就会被分配空间,静态变量就可以被使用了。总之,实例变量必须创建对象后才可以通过这个对象来使用,静态变量则可以直接使用类名来引用。
 
 
 
二十四、jdk中哪些类是不能继承的?
 
不能继承的是类是那些用final关键字修饰的类。一般比较基本的类型或防止扩展类无意间破坏原来方法的实现的类型都应该是final的,在jdk中System,String,StringBuffer等都是基本类型。
 
 
 
二十五、sim卡的EF 文件有何作用
 
SIM卡里的所有文件按树来组织:
主文件MF(Master File)——每一块SIM卡只有一个唯一的主文件,其他所有文件都是它的子孙, 主文件只有文件头里面存放着整个SIM卡的控制和管理信息
专用文件DF(Dedicated File)——也是只有一个文件头,里面存放着整个目录的管理控制信息,专用文件相当于一个目录的根.
补充:移动开发 , Android ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,