文档章节

Android面试题及其答案(一)

abcijkxyz
 abcijkxyz
发布于 2016/07/30 17:23
字数 1587
阅读 11
收藏 0
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是只要解析了,就必须解析完成。

本文转载自:http://blog.csdn.net/wdong_love_cl/article/details/51571099

共有 人打赏支持
abcijkxyz
粉丝 63
博文 6196
码字总数 1876
作品 0
深圳
项目经理
私信 提问
Android开发工程师面试指南(面试题集附答案、简历模板)

给Android开发工程师的一份面试指南,包含面试题集与简历模板。 面试题集 面试题集里的答案大部分来源于我的博客,因此这个题集也相当于是我的博客的精华版,希望对需要面试的Android同学有所...

郭孝星
04/08
0
0
工科转CS | Amazon,华为,阿里菜鸟 会把offer给怎样的求职者?

专栏 | 九章算法 网址 | www.jiuzhang.com 学员背景 北美 Top50 非 CS 相关工科专业在职半年,裸辞刷题三个月 拿到 offer:Amazon,华为,阿里菜鸟,美东一个做手机 APP的小公司。 签约 offe...

九章算法
11/10
0
0
投稿006期| 回忆一次美团Android校招

写在前面 今天和一同学吃饭,互相诉了一波苦。他吐槽了一下这周五去美团面试不是很顺利,我吐槽了一下,业务大改版。这一个月恐怕要疯狂加班... 他提到美团的时候,这让我想起来了2017年10月...

挚爱灬丶
07/17
0
0
【Android面试】Android面试题集锦 (陆续更新)

一些常见的Android面试基础题做下总结,看看你能做出多少道? 1. Intent的几种有关Activity启动的方式有哪些,你了解每个含义吗? 这里Android123提示大家,Intent的一些标记有FLAG_ACTIVITY_B...

晨曦之光
2012/03/01
1K
0
2018年美团Android校招

写在前面 今天和一同学吃饭,互相诉了一波苦。他吐槽了一下这周五去美团面试不是很顺利,我吐槽了一下,业务大改版。这一个月恐怕要疯狂加班... 他提到美团的时候,这让我想起来了2017年10月...

MDove
07/16
0
0

没有更多内容

加载失败,请刷新页面

加载更多

使用CURL检测Clinet侧发起的HTTP请求各阶段时间

第一、HTTP请求的过程介绍 一个HTTP请求,涉及多个阶段 1、DNS解析域名 2、请求从Clinet路由至Server,Clinet与Server建立TCP连接 3、如果使用了HTTPS,还涉及SSL连接的建立 4、server开始准...

李玉长
14分钟前
0
0
Flume+Kafka双剑合璧玩转大数据平台日志采集

概述 大数据平台每天会产生大量的日志,处理这些日志需要特定的日志系统。 一般而言,这些系统需要具有以下特征: 构建应用系统和分析系统的桥梁,并将它们之间的关联解耦; 支持近实时的在线...

java菜分享
20分钟前
1
0
Jenkins 分布式-管理节点

什么是Jenkins的分布式构建: Jenkins的分布式构建,在Jenkins的配置中叫做节点;能够让同一套代码或项目在不同的环境分发 节点配置 系统设置 - 节点管理 - 新建节点...

以谁为师
26分钟前
0
0
图片无限轮播

<!doctype html><html lang="en"><head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, max......

shawnDream
29分钟前
2
0
js 在==时,则会有一些让人难以理解的陷阱

在==时,则会有一些让人难以理解的陷阱。 (function () { var undefined; undefined == null; // true 1 == true; //true 2 == true; // false 0 == false; // true 0 == ''; // true NaN ==......

之渊
31分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部