Android面试题及其答案(一)

handler vs AsyncTask

AsyncTask,是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是只要解析了,就必须解析完成。

时间: 2025-01-02 15:31:09

Android面试题及其答案(一)的相关文章

常见Android面试题及答案(详细整理)

常见Android面试题及答案(详细整理) 1. 请描述一下Activity 生命周期. 答: 如下图所示.共有七个周期函数,按顺序分别是: onCreate(), onStart(), onRestart(), onResume(), onPause(),onStop(), onDestroy(). onCreate(): 创建Activity时调用,设置在该方法中,还以Bundle的形式提供对以前存储的任何状态的访问. onStart(): Activity变为在屏幕上对用户可见时调用. o

Android 面试题及答案(2)

1.Activity相关.launchmode,OnSaveInstnceState,生命周期等. 4种默认的launchmode,以及OnNewIntent的回调. OnNewIntent->OnRestart->OnStart->onResume OnActivity->OnResume. OnNewIntent ,OnActivityResult? OnNewIntent launchmode with singletask or singleInstance. but if

【转】 71道经典Android面试题和答案,重要知识点都包含了

,,面试题1.        下列哪些语句关于内存回收的说明是正确的? (b ) A. 程序员必须创建一个线程来释放内存  B.内存回收程序负责释放无用内存   C.内存回收程序允许程序员直接释放内存   D.内存回收程序可以在指定的时间释放内存对象 2.        下面异常是属于Runtime Exception 的是(abcd)(多选)      A.ArithmeticException      B.IllegalArgumentException       C.NullPoint

2018年Android面试题含答案(上)

这些面试题是我在今年年初换工作的时候整理,没有重点.包括java基础,数据结构,网络,Android相关等等.适合中高级工程师.由于内容过多,将会分为上下两部分.希望能够帮到一些朋友,如果帮助到你,希望能够点个赞.没有单独分出来,面试题目都是穿插的.因为有些事外面试过程中遇到的,我就又加上去了.总之你弄懂了这些,基本是没有问题了.如果是bat那些企业,你还得准备算法,jvm这些知识.好了,废话不多说了. 1.java中==和equals和hashCode的区别  基本数据类型的==比较的值相等.

Android面试题及其答案(三)

1.list map set三个接口,存取元素时,各有什么特点? List与Set都是单列元素的集合,它们有一个功共同的父接口Collection. Set里面不允许有重复的元素. 存元素:add方法有一个boolean的返回值,当集合中没有某个元素,此时add方法可成功加入该元素时,则返回true:当集合含有与某个元素equals相等的元素时,此时add方法无法加入该元素,返回结果为false. 取元素:没法说取第几个,只能以Iterator接口取得所有的元素,再逐一遍历各个元素. List表

android面试题及答案

JAVA 1.GC是什么? 为什么要有GC? GC是垃圾收集的意思(Gabage Collection),内存处理是编程人员容易出现问题的地方,忘记或者错误的内存回收会导致程序或系统的不稳定甚至崩溃,Java提供的GC功能可以自动监测对象是否超过作用域从而达到自动回收内存的目的,Java语言没有提供释放已分配内存的显示操作方法. 2.XML包括哪些解释技术,区别是什么? DOM和SAX DOM将文档解析成一颗文档树,可在节点上进行遍历.增加.修改和删除.一次性读入内存,对内存消耗大. SAX至上

Android 面试题(答案最全)

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

Android面试题及其答案(二)

内存相关的问题在面试中被问到的概率还是比较大的,而且内存优化对于一个程序的性能而言也是至关重要的,现在就让我们一起来学习吧! 不废话,直接上干货~ 一.内存泄漏 内存泄漏就是我们对某一内存空间的使用完成后没有释放. 主要原因:导致内存泄漏最主要的原因就是某些长存对象持有了一些其它应该被回收的对象的引用,导致垃圾回收器无法去回收掉这些对象. 出现的场景: 1.数据库的cursor没有关闭: 2.构造adapter时,没有使用缓存contentview: 3.Bitmap对象不使用时采用recycl

2018年Android面试题含答案--适合中高级(下)

1.Activity生命周期? onCreate() -> onStart() -> onResume() -> onPause() -> onStop() -> onDetroy() 2.Service生命周期? service 启动方式有两种,一种是通过startService()方式进行启动,另一种是通过bindService()方式进行启动.不同的启动方式他们的生命周期是不一样. 通过startService()这种方式启动的service,生命周期是这样:调用sta