Android面试题,看看你基础如何?
### Android面试题精析 #### 一、Intent与Activity启动方式 **1. Intent的启动方式及含义** - **FLAG_ACTIVITY_BROUGHT_TO_FRONT:** 当一个Activity正在运行时,此标志位会让该Activity置于前台并使其变得可见,即使当前Activity已经在前台也会重新激活它。 - **FLAG_ACTIVITY_CLEAR_TOP:** 如果栈顶存在一个与当前Intent相关的Activity,则将其之上的所有Activity清除,使当前Intent指定的Activity成为栈顶,并启动它。 - **FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET:** 当任务被重置时(例如用户按Home键然后重新打开应用),此标志位指示系统清除此Activity之前的所有Activity,仅保留此Activity。 - **FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS:** 标记为该Activity不会出现在最近任务列表中,适用于临时或辅助功能的Activity。 - **FLAG_ACTIVITY_MULTIPLE_TASK:** 允许Activity在一个新的任务中启动,即使该Activity默认是在现有任务中启动。 - **FLAG_ACTIVITY_NEW_TASK:** 如果此Activity不在当前任务中,则创建一个新的任务来启动它;如果已在任务中,则将任务带到前台。 **2. Activity与Task的启动模式及含义** - **Standard(标准模式):** 每次启动Activity都会创建一个新的实例,即使当前Activity已经在任务栈中。这意味着每次启动都会创建一个新的实例。 - **SingleTop(单顶模式):** 当Activity位于任务栈的顶部时,如果再次启动相同的Activity,则不会创建新的实例,而是复用已有的实例。如果Activity不在栈顶,则会创建新的实例。 - **SingleTask(单任务模式):** 只有一个实例,无论何时启动,都会复用现有的实例。如果实例不存在,则创建一个新的实例并将其置于任务栈的底部。 - **SingleInstance(单实例模式):** 与SingleTask类似,但是会将此Activity放到一个全新的任务中,确保它是唯一的一个实例。 #### 二、其他重要知识点 **3. 通过Intent传递二进制数据的方法** - **使用Serializable接口实现序列化:** 这是Java中最常用的序列化方式之一,通过实现Serializable接口,可以方便地将对象转化为字节流进行传输。 - **实现Parcelable接口:** 在Android中,Parcelable接口提供了一种更加高效的方式来序列化对象。许多Android内置类如`Bitmap`等已经实现了该接口。 **4. Android应用的入口点** 在Android应用程序中,入口点通常是通过定义在`AndroidManifest.xml`文件中的`<activity>`标签来指定的。通常,`MainActivity`作为应用程序的入口点。在Google的虚拟机中,Application实例已经实现了`main`方法,但这并不是应用程序的入口点。实际上,系统首先会创建一个`Application`实例,然后根据`AndroidManifest.xml`中的配置启动指定的`Activity`。 **5. Java集合类中的HashSet与HashTable的区别** - **HashSet:** 基于`HashMap`实现,不允许存储重复元素。 - **HashTable:** 也基于哈希表实现,线程安全且不允许键或值为`null`。 **6. Java集合类实现广度优先搜索** 广度优先搜索(BFS)通常用于图或树的数据结构,可以通过队列实现。例如,从根节点开始,将所有相邻节点加入队列,然后依次处理队列中的元素直到队列为空。 **7. Android中的XML解析器** Android提供了多种XML解析器: - **XmlPullParser:** 提供了一种基于事件驱动的解析方式。 - **SAX(Simple API for XML):** 适合大型XML文档的解析,不会一次性加载整个文档到内存。 - **DOM(Document Object Model):** 将整个XML文档加载到内存中,并以对象的形式表示。 **8. SQLite支持事务及性能优化** - **支持事务:** SQLite支持事务处理,可以通过`BEGIN TRANSACTION`、`COMMIT`或`ROLLBACK`命令来管理事务。 - **提高性能:** 通过优化SQL查询语句,减少不必要的磁盘I/O操作,以及合理使用索引等方式来提高性能。 **9. Android Service、Binder与AIDL** - **Service:** 是Android四大组件之一,用于执行长时间运行的任务或者后台操作。 - **Binder:** 是Android中进程间通信的基础,提供了跨进程访问的能力。 - **AIDL(Android Interface Definition Language):** 用于定义跨进程通信的接口,使得不同进程间的对象能够互相通信。 以上是针对题目中提到的一些关键知识点的详细解答,希望能帮助你更好地准备面试或加深对Android开发的理解。
- xssfcll2013-06-17还可以,偶尔看下基础题还是不错的
- myy222013-10-09好好看看吧,对面试有帮助的,基础越牢固,自己就会越有信心
- 刘兆贤2012-07-30内容比较简单!
- zhangjie60552013-04-07是很基础的试题
- 阿系2014-01-21基础内容对应用开发挺有帮助的
- 粉丝: 0
- 资源: 15
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助