Android面试题及其答案
Posted warmor
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android面试题及其答案相关的知识,希望对你有一定的参考价值。
handler vs AsyncTaskAsyncTask,是android提供的轻量级的异步类,可以直接继承AsyncTask,在类中实现异步操作,并提供接口反馈当前异步执行的程度(可以通过接口实现UI进度更新),最后反馈执行的结果给UI主线程。
优点:
l 简单,快捷
l 过程可控
缺点:
l 在使用多个异步操作和并需要进行Ui变更时,就变得复杂起来
Handler 异步实现时,涉及到 Handler, Looper, Message,Thread四个对象,实现异步的流程是主线程启动Thread(子线程)thread(子线程)运行并生成Message-Looper获取Message并传递给Handler,Handler逐个获取Looper中的Message,并进行UI变更。
优点:
l 结构清晰,功能定义明确
l 对于多个后台任务时,简单,清晰
缺点:
l 在单个后台异步处理时,显得代码过多,结构过于复杂(相对性)
json vs xml
XML定义
扩展标记语言 (Extensible Markup Language, XML) ,用于标记电子文件使其具有结构性的标记语言,可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。 XML使用DTD(document type definition)文档类型定义来组织数据;格式统一,跨平台和语言,早已成为业界公认的标准。
JSON定义
JSON(javascript Object Notation)一种轻量级的数据交换格式,具有良好的可读和便于快速编写的特性。可在不同平台之间进行数据交换。JSON采用兼容性很高的、完全
独立于语言文本格式,同时也具备类似于C语言的习惯(包括C, C++, C#, Java, JavaScript, Perl, Python等)体系的行为。这些特性使JSON成为理想的数据交换语言。
共同优点:
都是文本表示的数据格式,可以跨平台、跨系统交换数据
(1).可读性方面。
JSON和XML的数据可读性基本相同,JSON和XML的可读性可谓不相上下,一边是建议的语法,一边是规范的标签形式,XML可读性较好些。
(2).可扩展性方面。
XML天生有很好的扩展性,JSON当然也有,没有什么是XML能扩展,JSON不能的。
(3).编码难度方面。
XML有丰富的编码工具,比如Dom4j、JDom等,JSON也有json.org提供的工具,但是JSON的编码明显比XML容易许多,即使不借助工具也能写出JSON的代码,可是要写好XML就不太容易了。从总体来看,XML比较适合于标记文档,而JSON却更适于进行数据交换处理。
(4).解码难度方面。
XML的解析得考虑子节点父节点,让人头昏眼花,而JSON的解析难度几乎为0。这一点XML输的真是没话说。
(5).流行度方面。
XML已经被业界广泛的使用,而JSON才刚刚开始,但是在Ajax这个特定的领域,未来的发展一定是XML让位于JSON。
(6).解析手段方面。
JSON和XML同样拥有丰富的解析手段。
(7).数据体积方面。
JSON相对于XML来讲,数据的体积小,传递的速度更快些。
(8).数据交互方面。
JSON与JavaScript的交互更加方便,更容易解析处理,更好的数据交互。
(9).数据描述方面。
JSON对数据的描述性比XML较差。
(10).传输速度方面。
JSON的速度要远远快于XML。
sqlite操作
请继承SQLiteOpenHelper实现:
1).创建一个版本为1的“diaryOpenHelper.db”的数据库,
2).同时创建一个 “diary” 表(包含一个_id主键并自增长,topic字符型100
长度, content字符型1000长度)
3).在数据库版本变化时请删除diary表,并重新创建出diary表。
public class DBHelper extends SQLiteOpenHelper { public final static String DATABASENAME = “diaryOpenHelper.db”; public final static int DATABASEVERSION = 1; //创建数据库 public DBHelper(Context context,String name,CursorFactory factory,int version) { super(context, name, factory, version); } //创建表等机构性文件 public void onCreate(SQLiteDatabase db) { String sql =”create table diary”+ “(“+ “_id integer primary key autoincrement,”+ “topic varchar(100),”+ “content varchar(1000)”+ “)”; db.execSQL(sql); } //若数据库版本有更新,则调用此方法 public void onUpgrade(SQLiteDatabase db,int oldVersion,int newVersion) { String sql = “drop table if exists diary”; db.execSQL(sql); this.onCreate(db); } }
android 中有哪几种解析xml的类?官方推荐哪种?以及它们的原理和区别。
XML解析主要有三种方式,SAX、DOM、PULL。
DOM解析XML文件会将XML文件的所有内容以文档树方式存放在内存中,然后使用DOM API遍历XML树,检索所需的数据,主要用于PC机,该方法在查找方面可以和XPath很好的结合,如果数据量不是很大推荐使用。
优点:使用DOM解析XML的代码比较直观,比基于SAX的实现更加简单。缺点:须将XML文件所有内容存放在内存中,所以消耗内存大,不适用Android等移动设备。
SAX解析XML文件采用的是事件驱动,也就是说,他读取是单向的,并不需要解析完整个文档,在按内容顺序解析文档的过程中,SAX会判断当前读取到的字符是否符合XML语法中的某部分,如果符合就会触发事件,其实就是一些回调方法,然后进行判断处理。
优点:解析速度快,占用内存少,解析属性方便,适用于Android等移动设备。缺点:对于嵌套多个分支来说处理不是很方便。
PULL解析器是Android内置解析XML文件的解析器,运行方式类似于SAX解析,只是产生的事件是一个数字,而非方法,因此可以使用一个switch对感兴趣的事件进行处理。PULL解析器对节点处理比较好,同样也很省内存,官方推挤使用PULL解析器解析XML文件,而且Android系统本身用到的XML文件内部也是使用PULL解析器进行解析的。
SAX、PULL还有一点区别,PULL解析时用了一个while循环,随时可以跳出,而SAX不是,SAX是只要解析了,就必须解析完成。
以上是关于Android面试题及其答案的主要内容,如果未能解决你的问题,请参考以下文章