安卓面试总结

时间:2022-04-18 11:44:11 招聘与面试 我要投稿
  • 相关推荐

安卓面试总结

Android面试总结

安卓面试总结

1. Activity和Task的启动模式有哪些 ?

在android里,有4种activity的启动模式分别为:

1. standard(默认)

“standard”对于每一个启动Intent都会生成一个activity的新实例,每个Instance处理一个单个的Intent。

2. singleTop

“singleTop”的activity如果在目标task的栈顶的话,则不生成新的该activity的实例,直接使用栈顶的实例,否则,生成该activity的实例。

3. singleTask

"singleTask"的 activity 允许别的 activities 位于其所在的task中。该activity位于活动栈stack根部,其他activity并且可以在这个栈中运行。

4. singleInstance

"singleInstance"的activity不允许其它的activitise成为其所在的 task的一部分。无论在什么情况下“singleInstance”都会独占一个task。

2. Intent的几种有关Activity启动的方式有哪些,你了解每个含义吗?

FLAG_ACTIVITY_MULTIPLE_TASK

FLAG_ACTIVITY_SINGLE_TOP FLAG_ACTIVITY_NEW_TASK

3.通过Intent传递一些二进制数据的方法有哪些?

1). 使用Serializable接口实现序列化,这是Java常用的方法。

2). 实现Parcelable接口,这里Android的部分类比如Bitmap类就已经实现了,同时Parcelable在Android AIDL中交换数据也很常见的。

4. 能说下Android应用的入口点吗

真正的Android入口点是application的main,你可以看下http://www.oh100.com的包含关系就清楚了。 可以没有Activity但是必须有Application。

5. Android都有哪些XML解析器,都熟练掌握吗

XML解析有三种方式,SAX,DOM,PULL。常规在PC上开发我们使用DOM相对轻松些,DOM方式的解析会把整个XML加载到内存中进行解析。但一些性能敏感的数据库或者手机主要采用SAX方式,SAX读取是单向的,优点是不占内存空间、解析属性方便,但对于嵌套多个分支来处理很不方便。PULL常常用在J2ME对于节点处理比较好,类似SAX方式,同样很节省内存。

6. SQLite支持事务吗 添加删除如何提高性能

SQLite支持事务。SQLite作为轻量级的数据库,比MySQL还小,但支持SQL语句查询,提高性能可以考虑通过原始经过优化的SQL查询语句方式处理。

7. 谈谈对Binder的理解

8. 你用过哪款Android手机,有哪些优点和不足,相对于iPhone或Symbian又有哪些优缺点

1. 请描述下Activity的生命周期。

创建 oncreate -启动onstart – 恢复 onResume – 暂停 onPause – 结束 onStop – 销毁onDestroy

2. 如果后台的Activity由于某原因被系统回收了,如何在被系统回收之前保存当前状态?

在系统回收或者用户调用finish方法,都会销毁Activity,此时会调用onDestroy方法,利用onDestroy方法保存Activity状态.

3. 如何将一个Activity设置成窗口的样式。

在Mainfest文件中配置android:theme = “@android:style/http://www.oh100.com”

4. 如何退出Activity?如何安全退出已调用多个Activity的Application?

单个的Activity,调用finish、killProcess()、http://www.oh100.com()方法退出。 多个Activity,在2.2中调用新的方法,killBackgroundProcesses(),需要权限 http://www.oh100.com

5. 请介绍下Android中常用的五种布局。

LinearLayout: 线性布局(常用)

将组件按照属性设置的水平或者垂直方向顺序排序。

FrameLayout: 层叠布局

将组件显示屏幕的左上角,后面的组件覆盖前面的组件。

RelativeLayout: 表格布局

组件的位置是相对于它所依赖的组件的位置。

TableLayout: 表格布局

TableRow指定一行,每个组件表示一列。

AbsoluteLayout: 坐标布局

组件相对于左上角的位置而定 x=”?px” y=”?px”

6. 请介绍下Android的数据存储方式。

有四种存储方式:SharedPreferences、NetWork网络存储、文件、SQLite数据库。

http://www.oh100.com一种轻量级的键值存储方式,其存储的数据必须是基本数据类型.存储的数据以XML的形式存在,存储在/data/data/包名/shared_prefs目录下。

<?xml version='1.0' encoding='utf-8' standalone='yes' ?>

<map>

<string name="gender">男性</string> <string name="name">jadde</string>

</map>

http://www.oh100.com网络存储

http://www.oh100.com上的文件存储可以存储在手机的内存或者外部的存储卡上。文件存储的操作和java中对文件存储的操作差不多。默认情况下,在/data/data/<包名>/files/目录下创建文件,且生成一个文件输出流(FileOutputStream)对象。openFileOutput(String name,int mode)方法对文件进行读写。name表示文件名,mode表示对文件的操作。

4.SQLite轻型数据库是android平台内置的一个嵌入式数据库。可以高效率的处理数据较为复杂的关系型数据,应用程序创建的数据库文件存储在/data/data/包名/database目录下,应用程序之间不能相互访问。

7. 请介绍下ContentProvider是如何实现数据共享的。

一个程序可以通过实现一个ContentProvider的抽象接口将自己的数据完全暴露出去,而且ContentProviders是以类似数据库中表 的方式将数据暴露,也就是说ContentProvider就像一个“数据库”。那么外界获取其提供的数据,也就应该与从数据库中获取数据的操作基本一 样,只不过是采用URI来表示外界需要访问的“数据库”。 ContentProvider负责:组织应用程序的数据、向其他应用程序提供数据; ContentResolver负责:获取ContentProvider提供的数据的增删改查等。

8. 如何启用Service,如何停用Service。

Service的启动分两种:http://www.oh100.com(应用停,服务不停)和http://www.oh100.com(应用停,服务停)。启动了Service后运行onCreate,之后调用onStartCommand(处理Intent),最后调用stopService或stopSelf停止service.

9. 注册广播有几种方式,这些方式有何优缺点?请谈谈Android引入广播机制的用意。

1.动态注册:调用方法http://www.oh100.com()

IntentFilter intentFilter = new IntentFilter();

http://www.oh100.com(action);

registerReceiver(BroadcastReceiver,intentFilter);

2.静态注册:在http://www.oh100.com的<receiver>标签

<receiver android:name=”BootReceiver”>

<intent-filter>

指明接收哪种广播---这里是开机启动的广播

<action android:name=”http://www.oh100.com”/> </intent-filter>

</receiver>

动态注册的广播优点灵活,手机处于关机状态时,不在监听广播。静态注册的广播的优点是比较方便和易读。

引入BroadcastReceiver的用意:

第一从MVC的角度考虑(应用程序内),就是为了实现移动或者说嵌入式设备上的MVC架构,它们之间有时候是一 种相互依存的关系,有时候又是一种补充关系,引入广播机制可以方便几大组件的信息和数据交互。

第二:程序间互通消息(例如在自己的应用程序内监听系统来电)

第三:效率上(参考UDP的广播协议在局域网的方便性)

第四:设计模式上(反转控制的一种应用,类似监听者模式)。

10. 请解释下在单线程模型中Message、Handler、Message Queue、Looper之间的关系。 Message:消息,其中包含了消息ID,消息处理对象以及处理的数据等,由MessageQueue统一列队,终由Handler处理。

Handler:处理者,负责Message发送和处理,使用Handler时,需要实现handlerMessage(Message msg)进行特定的处理,例如更新UI等。

Message Queue:消息队列,用来存放Handler发送过来的消息,并按照FIFO规则执行。当然,存放Message(不是真正的保存),而是将Message以链表的方式串起来的,等待Looper的抽取。

Looper:消息泵,不断地从MessageQueue中抽取Message执行,因此一个MessageQueue需要一个Looper.

他们的关系:

Looper和MessageQueue 是一一对应的关系,创建一个Looper的同时,会创建一个MessageQueue。Handler和他们只是简单的集聚关系,即Handler里面会引用当前线程里特定的Looper和MessageQueue.多个handler可以共享同一个Looper和MessageQueue了,这些Handler运行在同一个线程里。

11. AIDL的全称是什么?如何工作?能处理哪些类型的数据?

AIDL的全称是Android Interf-ace Define Language

12. 请解释下Android程序运行时权限与文件系统权限的区别。(Edited by Sodino)

13. 系统上安装了多种浏览器,能否指定某浏览器访问指定页面?请说明原由。

14. 有一个一维整型数组int[]data保存的是一张宽为width,高为height的图片像素值信息。请写一个算法,将该图片所有的白色不透明(0xffffffff)像素点的透明度调整为50%。

15. 你如何评价Android系统?优缺点。

优点:1、学习的开源性;2、软件兼容比较好;3、软件发展迅速;4、界面布局好 缺点:1、版本过多;2、现有软件少;3、上午性能差

1、 什么是ANR 如何避免它?

ANR(Application Not Responding): 应用程序有一段时间响应不够灵敏,系统会向用户显示一个对话框,这个对话框称作应用程序无响应的对话框.

避免ANR:Android应用程序通常运行在一个单独的线程里面,称为主线程,所以在主线程里面少做一些耗时长的程序,而是利用子线程来操作一些繁琐的事情,用Handler把子线程处理的消息返回给主线程。

2、什么情况会导致Force Close ?如何避免?能否捕获导致其的异常?

3、Android本身的api并未声明会抛出异常,则其在运行时有无可能抛出runtime异常,你遇到过吗?诺有的话会导致什么问题?如何解决?

4、简要解释一下activity、 intent 、intent filter、service、Broadcast、BroadcaseReceiver

5、IntentService有何优点

1. android:paddingLeft与android:layout_marginLeft的区别

当按钮分别设置以上两个属性时,得到的效果是不一样的。

android:paddingLeft="30px"

按钮上设置的内容(例如图片)离按钮左边边界30个像素

android:layout_marginLeft="30px"

整个按钮离左边设置的内容30个像素

2. Android 动画有哪几种?

动画分为两种类型的动画:渐变动画(Tweened Animations)和逐帧播放动画(Frame_by_Frame Animations)。

渐变动画里主要有:Alpha淡入淡出、Scale缩放效果、Rotate旋转效果、Translate移动效果,还可以利用AnimationSet 进行多动画的组合。

逐帧播放动画的制作步骤:

1. 在xml中配置<animation-list „>

<item android:drawable=”..” android:duration=”500”/>

</animation-list>

2. 在ImageView设置背景资源 .setBackgroundResource(http://www.oh100.com)

3. 通过ImageView得到AnimationDrawable

4. .star()执行动画

5. 对Intent、Activity、BroadcastReceiver、Service等的理解。

Intent是一个将执行动作抽象的描述,由Intent来协助完成android各个组件之间的通讯好比Activity之间的桥梁。Intent的成员有:

Action : ACTION_VIEW, ACTION_EDIT, ACTION_MAIN

Data : 封装的数据,以Uri格式表示

Category : 标志动作执行的分类,例如CATEGORY_LAUNCHER

Type : MINI

Component : 标明Intent指向的class

Extras : 用于在Intent中携带一些 键-值数据对 信息

5. 隐式、显式Intent的区别

Intent解析机制主要是通过查找已注册在http://www.oh100.com中的所有IntentFilter及其中定义的Intent,最终找到匹配的Intent。在这个解析过程中,Android是通过Intent的action、type、category这三个属性来进行判断的,判断方法如下:如果Intent指明定了action,则目标组件的IntentFilter的action列表中就必须包含有这个action,否则不能匹配;如果Intent没有提供type,系统将从data中得到数据类型。和action一样,目标组件的数据类型列表中必须包含Intent的数据类型,否则不能匹配。

显式解析,调用setComponent(Component)或setClass(Context,Class)设置Intent指定的运行类。

Intent intent = new Intent(this, http://www.oh100.com);

http://www.oh100.com("name", peoples[position]);

startActivity(intent);

隐式解析,未直接标注组件,但是需要提供足够的信息以便系统能够确定运行哪个class。

Intent intent = new Intent();

http://www.oh100.com(http://www.oh100.com);

http://www.oh100.com(http://www.oh100.com);

startActivity(intent);

【安卓面试总结】相关文章:

安卓岗位职责04-20

安卓工程师岗位职责05-18

安质部个人总结05-10

安防员工作总结04-19

质安部工作总结04-09

安环部工作总结03-29

安防业务出差报告总结05-18

国-家-安-全小组总结05-19

国-家-安-全宣传总结05-19

国-家-安-全防范总结05-19