android测试面试题1 1、写出你所知道的常见异常(至少5个) NullPointerException空指针 ClassCastException强制转换错误 ArrayIndexOu下面是小编为大家整理的2023年android测试面试题3篇(范例推荐),供大家参考。
android测试面试题1
1、 写出你所知道的常见异常(至少5个)
NullPointerException 空指针
ClassCastException 强制转换错误
ArrayIndexOutOfBoundsException 下标越界异常
FileNotFoundException 文件找不到异常
ArithMeticException 算术异常如 5/0
ClassNotFoundException 类找不到异常
JSONParserException json解析错误异常
NumberFormatException 数组格式化异常
2、 Activity的生命周期包括那几个方法,其中页面打开时执行什么,页面关闭时执行什么
onCreate—onStart onResume onRestart
onPause onStop onDestroy
打开:onCreate onStart onResume
关闭:onPause onStop onDesotry
A界面被完全遮挡:A会onPause onStop
完全遮挡它的界面关闭,A会:onRestart onStart onResume
A界面被半遮挡:A会onPause
半遮挡它的界面关闭:A会:onResume
3、 Android中打开一个Activity有哪两种方法,区别是什么
startActivity
startActivityForResult
startActivityForResult方式打开的页面关闭时,前一个页面会得到一个自动onActivityResult方法触发
4、 Android中本地数据存储有哪几种方式,分别适合用来存储什么样的数据?
SharedPreferences适合存储比较简单的、配置文件信息(xml形式存储)
Sqlite: :存储比较多的数据信息
文件存储:存储比较简单的信息
android测试面试题2
1、 Android中的布局有哪几种?
线性布局 LinearLayout
相对布局 RelativeLayout
绝对布局(废弃不用) AbsoluteLayout
帧布局 FrameLayout
表格布局 TableLayout
网格布局 GridLayout
2、 Andorid中的四大组件是什么?分别用来干什么,越详细越好
Activity:表示一个可见的界面
Service:后台运行的*面一种组件(音乐后台播放、文件后台下载)
BroadcastReceiver:自动接收系统、自定义发送的广播信息并作出响应的.组件(收发短信,)
ContentProvider:不同应用程序之间数据共享的一种组件
3、 Android的应用程序架构是什么?
Linux内核层
系统运行库层
应用程序框架层
应用程序层
android测试面试题3篇扩展阅读
android测试面试题3篇(扩展1)
——android软件测试面试题及答案3篇
android软件测试面试题及答案1
1、 Android的四大组件是哪些,它们的作用?
答:Activity:Activity是Android程序与用户交互的窗口,是Android构造块中最基本的一种,它需要为保持各界面的状态,做很多持久化的事情,妥善管理生命周期以及一些跳转逻辑
service:后台服务于Activity,封装有一个完整的功能逻辑实现,接受上层指令,完成相关的食物,定义好需要接受的Intent提供同步和异步的接口
Content Provider:是Android提供的第三方应用数据的访问方案,可以派生Content
Provider类,对外提供数据,可以像数据库一样进行选择排序,屏蔽内部数据的存储细节,向外提供统一的.借口模型,大大简化上层应用,对数据的整合提供了更方便的途径
BroadCast Receiver:接受一种或者多种Intent作触发事件,接受相关消息,做一些简单处理,转换成一条Notification,统一了Android的事件广播模型
2、 请介绍下Android中常用的五种布局。
常用五种布局方式,分别是:FrameLayout(框架布局),LinearLayout (线性布局),AbsoluteLayout(绝对布局),RelativeLayout(相对布局),TableLayout(表格布局)。
一、FrameLayout:所有东西依次都放在左上角,会重叠,这个布局比较简单,也只能放一点比较简单的东西。
二、LinearLayout:线性布局,每一个LinearLayout里面又可分为垂直布局
(android:orientation=”vertical”)和水*布局(android:orientation=”horizontal” )。当垂直布局时,每一行就只有一个元素,多个元素依次垂直往下;水*布局时,只有一行,每一个元素依次向右排列。
三、AbsoluteLayout:绝对布局用X,Y坐标来指定元素的位置,这种布局方式也比较简单,但是在屏幕旋转时,往往会出问题,而且多个元素的时候,计算比较麻烦。
四、RelativeLayout:相对布局可以理解为某一个元素为参照物,来定位的布局方式。主要属性有:相对于某一个元素android:layout_below、 android:layout_toLeftOf相对于父元素的地方android:layout_alignParentLeft、android:layout_alignParentRigh;
五、TableLayout:表格布局,每一个TableLayout里面有表格行TableRow,TableRow里面可以具体定义每一个元素。每一个布局都有自己适合的方式,这五个布局元素可以相互嵌套应用,做出美观的界面。
android软件测试面试题及答案2
1、 android中的动画有哪几类,它们的特点和区别是什么
答:两种,一种是Tween动画、还有一种是Frame动画。
Tween动画,这种实现方式可以使视图组件移动、放大、缩小以及产生透明度的变化; 另一种Frame动画,传统的动画方法,通过顺序的播放排列好的图片来实现,类似电影。
2、 android 中有哪几种解析xml的类?官方推荐哪种?以及它们的原理和区别。
答:XML解析主要有三种方式,SAX、DOM、PULL。常规在PC上开发我们使用Dom相对轻松些,但一些性能敏感的数据库或手机上还是主要采用SAX方式,SAX读取是单向的,优点:不占内存空间、解析属性方便,但缺点就是对于套嵌多个分支来说处理不是很方便。而DOM方式会把整个XML文件加载到内存中去,这里Android开发网提醒大家该方法在查找方面可以和XPath很好的结合如果数据量不是很大推荐使用,而PULL常常用在J2ME对于节点处理比较好,类似SAX方式,同样很节省内存,在J2ME中我们经常使用的KXML库来解析。
3、 ListView的优化方案
答:01、如果自定义适配器,那么在getView方法中要考虑方法传进来的参数contentView是否为null,如果为null就创建contentView并返回,如果不为null则直接使用。在这个方法中尽可能少创建view。
02、给contentView设置tag(setTag()),传入一个viewHolder对象,用于缓存要显示的数据,可以达到图像数据异步加载的效果。
03、如果listview需要显示的item很多,就要考虑分页加载。比如一共要显示100条或者更多的时候,我们可以考虑先加载20条,等用户拉到列表底部的时候再去加载接下来的20条。
android测试面试题3篇(扩展2)
——android软件测试面试题3篇
android软件测试面试题1
1、什么是手机软件测试
手机作为专用的消费类电子产品需要进行以下测试:可靠性测试(对于硬件则是RQT;对于软件则是field trial);标准符合性测试(FTA);互操作性测试(IOT);安全性测试(安规测试);强度测试等。
2、性能测试
性能测试强调长时间、重复或者高强度的进行某些操作,来验证产品在各种极限条件下的表现。性能测试隶属于软件测试中的系统测试,它对软件在集成系统中运行的性能行为进行测试,旨在及早确定和消除软件中与构架有关的性能瓶颈。
3、手机中的性能测试分类
(1)时间相关的性能测试可分为长时间保持测试和限定时间反应测试
(2)次数相关的性能测试是测试终端重复稳定地进行某项功能的能力
(3)并发测试主要是测试终端同时进行多项业务时表现出的处理能力,例如同时进行CS域语音业务和PS域下载业务,或者在MP3播放的同时进行上网业务,以测试协议栈、操作系统和处理器对并发业务的支持能力
(4)负载测试主要是验证系统的负载工作能力。例如同时进行多个ftp下载,使下行传输率接近极限值,观察终端是否可以正常工作
4、手机性能测试的方法
手机性能测试的方法按照自动化程度不同可分为手工测试和自动测试。
手工测试主要是通过测试人员手动操作,并借助某些监测仪器和工具,来验证手机性能
5、白盒测试、黑盒测试
白盒测试(White-box Testing,又称逻辑驱动测试,结构测试)是把测试对象看作一个打开的盒子。利用白盒测试法进行动态测试时,需要测试软件产品的内部结构和处理过程,不需测试软件产品的功能。白盒测试又称为结构测试和逻辑驱动测试。
任何工程产品(注意是任何工程产品)都可以使用以下两种方法之一进行测试。
黑盒测试:已知产品的功能设计规格,可以进行测试证明每个实现了的功能是否符合要求。
白盒测试:已知产品的内部工作过程,可以通过测试证明每种内部操作是否符合设计规格要求,所有内部成分是否以经过检查。
软件的黑盒测试意味着测试要在软件的接口处进行。这种方法是把测试对象看做一个黑盒子,测试人员完全不考虑程序内部的逻辑结构和内部特性,只依据程序的需求规格说明书,检查程序的功能是否符合它的功能说明。因此黑盒测试又叫功能测试或数据驱动测试。黑盒测试主要是为了发现以下几类错误:
1、是否有不正确或遗漏的功能?
2、在接口上,输入是否能正确的接受?能否输出正确的结果?
3、是否有数据结构错误或外部信息(例如数据文件)访问错误?
4、性能上是否能够满足要求?
5、是否有初始化或终止性错误?
软件的白盒测试是对软件的过程性细节做细致的检查。这种方法是把测试对象看做一个打开的盒子,它允许测试人员利用程序内部的逻辑结构及有关信息,设计或选择测试用例,对程序所有逻辑路径进行测试。通过在不同点检查程序状态,确定实际状态是否与预期的状态一致。因此白盒测试又称为结构测试或逻辑驱动测试。白盒测试主要是想对程序模块进行如下检查:
1、对程序模块的所有独立的执行路径至少测试一遍。
2、对所有的逻辑判定,取“真”与取“假”的两种情况都能至少测一遍。
3、在循环的边界和运行的界限内执行循环体。
4、测试内部数据结构的有效性,等等。
android软件测试面试题2
问题一:为什么要在一个团队中开展软件测试工作?
任何软件在开发过程中都会留下缺陷,带有缺陷的软件产品如果提交出去,可能会给公司带来不可估量的损失,我们必须在客户之前发现尽可能多的问题,从而保障客户满意。而发现问题的这个过程称之为测试。
问题二:简述你在以前的工作中做过哪些事情,比较熟悉什么。
此问题每个人都不一样。我自己的答案如下。
我主要的工作是系统测试和自动化测试,也曾少量涉及性能测试。在系统测试中,主要是对BOSS系统的业务逻辑功能,以及软交换系统的Class 5特性进行测试。性能测试中,主要是进行的压力测试,在各个不同数量请求的情况下,获取系统响应时间以及系统资源消耗情况。自动化测试主要是通过自己写脚本以及一些第三方工具的结合来测试软交换的特性测试。
问题三:你所了解的的软件测试类型都有哪些,简单介绍一下。
1. 基本功能验证。主要是对发布的版本进行一些最主要功能的测试。英文常见叫法是Smoking Test, Basic Verification Test或者Sanity Check。
2. 功能测试。主要是依据需求或者需求分析文档,对所发布的版本进行测试,看看是否满足需求,是否出现了不必要的功能。
3. 单元测试。是开发人员进行的测试之一,一般是开发人员对很小的模块,比如函数进行测试,一般来说,开发人员还需要开发相应的测试桩来进行此类测试。
4. 集成测试。在大型的开发过程中,软件是模块化进行开发的,将不同的模块揉合在一起的话,需要进行的测试就是集成测试。
5. 系统测试。当软件提交给测试组后,是对整个系统的所有功能进行测试,一般来说,功能测试是系统测试的一个部分。
6. 压力测试。主要是在很大性能的情况下,这个性能已经接近了系统的极限,看看系统运转的情况。
7. 负载测试。主要是用各种不同的性能去检测系统,采集各个数据在这些性能情况下的数据。
8. 黑盒测试。指系统对你来说是完全不透明的,只给你留下了输入和最终输出,这个是功能测试的方法之一。
9. 灰盒测试。指在了解部分系统内部工作机制的情况下,对于系统进行的覆盖性测试。
10. 白盒测试。主要是在单元测试和集成测试的情况下,开发人员已知代码,对这一段的代码进行全路径的覆盖测试。
11. 界面测试。主要是看用户界面的友好性和易用性,是否有文字或者排版错误,是否有输入限制等等。
12. 回归测试。一般是系统发现BUG,开发人员修改后,和BUG直接相关以及可能相关的功能进行的测试。
13. 安装和卸载的测试。
14. 恢复测试。主要是一个系统在发生了灾难的情况下,从错误中是否容易恢复。
15. 兼容性测试。一个系统在不同的语言,操作系统下的系统测试。
16. 安全测试。系统在遇到攻击或者类似情况下的表现。
17. Alpha测试。系统在给最终用户前,测试人员在实验室中模拟最终用户的测试。
18. Beta测试。由部分最终用户通过使用来进行的测试。
19. 比较测试。和其他具有相同或者类似功能的系统进行对比的测试。
20. 验收测试。一般是最终用户在接受产品前,依据自己所提出的要求进行的测试,很多情况下,验收测试可能委托第三方机构完成。
问题四:测试计划工作的目的是什么?测试计划文档的内容应该包括什么?其中哪些是最重要的?
软件测试计划是指导测试过程的纲领性文件。
包含了产品概述、测试策略、测试方法、测试区域、测试配置、测试周期、测试资源、测试交流、风险分析等内容。借助软件测试计划,参与测试的项目成员,尤其是测试管理人员,可以明确测试任务和测试方法,保持测试实施过程的顺畅沟通,跟踪和控制测试进度,应对测试过程中的各种变更。
测试计划和测试详细规格、测试用例之间是战略和战术的关系,测试计划主要从宏观上规划测试活动的范围、方法和资源配置,而测试详细规格、测试用例是完成测试任务的具体战术。所以其中最重要的是测试测试策略和测试方法(最好是能先评审)。
android测试面试题3篇(扩展3)
——android面试题3篇
android面试题1
1、Android中五种数据存储方式分别是什么?他们的特点?
Android提供了五种存取数据的方式
1)SharedPreference,存放较少的五种类型的数据,只能在同一个包内使用,生成XML的格式存放在设备中;
2)SQLite数据库,存放各种数据,是一个轻量级的嵌入式数据库;
3)File文件,通过读取写入方式生成文件存放数据;
4)ContentProvider,主要用于让其他应用程序使用保存的数据;
5)通过网络获取数据和写入数据到网络存储空间。
2、说说 android 中 mvc 的具体体现
mvc是model,view,controller的缩写,mvc包含三个部分:
模型(model)对象:是应用程序的主体部分,所有的业务逻辑都应该写在该层。 视图(view)对象:是应用程序中负责生成用户界面的部分。也是在整个mvc架构中用户唯一可以看到的一层,接收用户的输入,显示处理结果。
控制器(control)对象:是根据用户的输入,控制用户界面数据显示及更新model对象状态的部分,控制器更重要的一种导航功能,响应用户出发的相关事件,交给m层处理。
android鼓励弱耦合和组件的重用,在android中mvc的具体体现如下:
1)视图(view):一般采用xml文件进行界面的描述,使用的时候可以非常方便的引入。
2)控制层(controller):android的控制层的重任通常落在了众多的`acitvity的肩上,这句话也就暗含了不要在activity中写过多的代码,要通过activity交割model业务逻辑层处理,这样做的另外一个原因是android中的activity的响应时间是5s,如果耗时的操作放在这里,程序就很容易被回收掉。
3)模型层(model):对数据库的操作、对网络等的操作都应该在model里面处理,当然对业务计算等操作也是必须放在的该层的。
3、简述SharedPreferences存储方式以及SharedPreferences与SQLite数据库的区别。
SharedPreferences也是一种轻型的数据存储方式,它的本质是基于XML文件存储key-value键值对数据,通常用来存储一些简单的配置信息。其存储位置在/data/data/<包名>/shared_prefs目录下。SharedPreferences对象本身只能读取数据而不支持写入数据,存储修改是通过Editor对象实现。SharedPreferences对象与SQLite数据库相比,免去了创建数据库,创建表,写SQL语句等诸多操作,相对而言更加方便,简洁。但是SharedPreferences也有其自身缺陷,比如其职能存储boolean,int,float,long和String五种简单的数据类型,比如其无法进行条件查询等。所以不论SharedPreferences的数据存储操作是如何简单,它也只能是存储方式的一种补充,而无法完全替代如SQLite数据库这样的其他数据存储方式。
4、描述handler 机制的原理
andriod提供了 Handler 和 Looper 来满足线程间的通信。
Handler 先进先出原则。Looper类用来管理特定线程内对象之间的消息交换(Message Exchange)。
1)Looper: 一个线程可以产生一个Looper对象,由它来管理此线程里的Message Queue(消息队列)。
2)Handler: 你可以构造Handler对象来与Looper沟通,以便push新消息到Message Queue里;或者接收Looper从Message Queue取出)所送来的消息。
3)Message Queue(消息队列):用来存放线程放入的消息。
4)线程:UI thread 通常就是main thread,而Android启动程序时会替它建立一个Message Queue。
android面试题2
1. 请描述下Activity的声明周期。
onCreate->onStart->onRemuse->onPause->onStop->onRestart->onDestroy
2. 如果后台的Activity由于某种原因被系统回收,如何在回收之前保存当前状态。
onSaveInstanceState().
程序中的某一个Activity A 在运行时,主动或被动的运行另一个新的Activity B,这个时候A会执行onSaveInstanceState()。B完成以后又回来找A,这个时候有两种情况:一是A被回收,二是A没有被回收,被回收的A就要重新调用onCreate()方法,不同于直接启动的是这回onCreate()里是带上了参数savedInstanceState;而没被回收的就直接执行onResume(),跳过onCreate()。
3. 如何将一个Activity设置成窗口样式。
在AndroidManifext.xml中Activity定义处添加
android:theme="@android:style/Theme.Dialog" 或
android:theme="@android:style/Theme.Translucent"。
4. 如何退出Activity?如何安全退出已调用多个Activity的Application?
01.Activity.finish();
也可以用killProcess()和System.exit()这样的方法
2.用ActivityManager的restartPackage方法
5. 请介绍下android大众常用的五种布局。
FrameLayout(框架布局)
只可以有一个控件,并且不能设计这个控件的位置,控件会放在左上角
LinearLayout(线性布局)
一行只能控制一个控件的线性布局,所以当有很多控件需要在一个界面中列出时,可以用LinearLayout布局
AbsoluteLayout(绝对布局)
可以放置多个控件,并且可以自己定义控件的x,y的位置
RelativeLayout(相对布局)
比如要在一行上显示多个控件,这时就要用到相对布局
TableLayout(表格布局)
将子元素的位置分配到行或列中,一个TableLayout由许多的TableRow组成
6. 请介绍下android的数据存储方式。
SharedPreferences方式
用来存储”key-value paires”格式的数据,它是一个轻量级的"键值存储机制,只可以存储基本数据类型,可以通过它保存一些上次用户所做的修改操作
文件存储方式
它通过FileInputStream和FileOutputStream对文件进行操作。但是在Android中,文件是一个应用程序私有的,一个应用程序无法读写其他应用程序的文件,如果要共享数据就用Content Providers
SQLite数据库方式
Android提供的一个标准的数据库,支持SQL语句
内容提供器(Content provider)方式
是所有应用程序之间数据存储和检索的桥梁,它的作用是使得各个应用程序之间实现数据共享
网络存储方式
通过网络来存储和获取数据
android面试题3
1、IntentService有何优点?
答:IntentService 的好处
* Acitivity的进程,当处理Intent的时候,会产生一个对应的Service
* Android的进程处理器现在会尽可能的不kill掉你
* 非常容易使用
2、横竖屏切换时候activity的生命周期?
01、不设置Activity的android:configChanges时,切屏会重新调用各个生命周期,切横屏时会执行一次,切竖屏时会执行两次
02、设置Activity的android:configChanges="orientation"时,切屏还是会重新调用各个生命周期,切横、竖屏时只会执行一次
03、设置Activity的android:configChanges="orientation|keyboardHidden"时,切屏不会重新调用各个生命周期,只会执行onConfigurationChanged方法
3. 如何将SQLite数据库(dictionary.db文件)与apk文件一起发布?
解答:可以将dictionary.db文件复制到Eclipse Android工程中的res aw目录中。所有在res aw目录中的文件不会被压缩,这样可以直接提取该目录中的文件。可以将dictionary.db文件复制到res aw目录中
4. 如何将打开res aw目录中的数据库文件?
解答:在Android中不能直接打开res aw目录中的数据库文件,而需要在程序第一次启动时将该文件复制到手机内存或SD卡的某个目录中,然后再打开该数据库文件。复制的基本方法是使用getResources().openRawResource方法获得res aw目录中资源的 InputStream对象,然后将该InputStream对象中的数据写入其他的目录中相应文件中。在Android SDK中可以使用SQLiteDatabase.openOrCreateDatabase方法来打开任意目录中的SQLite数据库文件。
5. Android引入广播机制的用意?
答:a:从MVC的角度考虑(应用程序内)
其实回答这个问题的时候还可以这样问,android为什么要有那4大组件,现在的移动开发模型基本上也是照搬的web那一套MVC架构,只不过是改了点嫁妆而已。android的四大组件本质上就是为了实现移动或者说嵌入式设备上的MVC架构,它们之间有时候是一种相互依存的关系,有时候又是一种补充关系,引入广播机制可以方便几大组件的信息和数据交互。
b:程序间互通消息(例如在自己的应用程序内监听系统来电)
c:效率上(参考UDP的广播协议在局域网的方便性)
d:设计模式上(反转控制的一种应用,类似监听者模式)
android测试面试题3篇(扩展4)
——android常见面试题3篇
android常见面试题1
1、 android 中的动画有哪几类,它们的特点和区别是什么?
参考答案:
有两种,一种是 Tween(补间) 动画、还有一种是 Frame(帧) 动画。Tween 动画,这种实现方式可以使视图组件移动、放大、缩小以及产生透明度的变化;另一种 Frame 动画,传统的动画方法,通过顺序的播放排列好的图片来实现,类似电影。
2、 请简述Handler的机制原理
参考答案:
andriod 提供了 Handler 和 Looper 来满足线程间的通信。Handler 先进先出原则。
Looper类用来管理特定线程内对象之间的消息交换(Message Exchange)。
1)Looper: 一个线程可以产生一个 Looper 对象,由它来管理此线程里的 Message Queue(消息队列)。
2)Handler: 你可以构造 Handler 对象来与 Looper 沟通,以便 push 新消息到 Message Queue 里;或者接收 Looper从 Message Queue 取出)所送来的消息。
3) Message Queue(消息队列):用来存放线程放入的消息。
4)线程:UI thread 通常就是 main thread,而 Android 启动程序时会替它建立一个Message Queue。
3、 说说mvc模式的原理,它在android中的运用
参考答案:
MVC 是 Model,View,Controller 的缩写,从上图可以看出 MVC 包含三个部分:
模型( Model )对象:是应用程序的主体部分,所有的业务逻辑都应该写在该层。
视图( View )对象:是应用程序中负责生成用户界面的部分。也是在整个MVC 架构中用户唯一可以看到的一层,接收用户的输入,显示处理结果。
控制器( Control )对象:是根据用户的输入,控制用户界面数据显示及更新Model 对象状态的部分,控制器更重要的一种导航功能,想用用户触发的相关事件,交给 Model处理。
Android 鼓励弱耦合和组件的重用,在 Android 中 MVC 的具体体现如下
1) 视图层( view ) :一般采用 xml 文件进行界面的描述,使用的时候可以非常方便的引入,当然,如何你对 android 了解的比较的多了话,就一定可 以想到在 android 中也可以使用javascript+html 等的方式
作为 view 层,当然这里需要进行 java 和 javascript 之间的通 信,幸运的是, android 提供了它们之间非常方便的通信实现。
2) 控制层( controller ): android 的控制层的重任通常落在了众多的 acitvity 的肩上,这句话也就暗含了不要在 acitivity 中写代码,要通过 activity 交割 model 业务逻辑层处理, 这样做的另外一个原因是 android 中的 acitivity 的响应时间是 5s ,如果耗时的操作放在这里,程序就很容易被回收掉。
3) 模型层( model ): 对数据库的操作、对网络等的操作都应该在 model 里面处理,当然对业务计算等操作也是必须放在的该层的。
4、通过Intent传递一些二进制数据的方法有哪些?
参考答案:
1). 使用Serializable接口实现序列化,这是Java常用的方法。
2). 实现Parcelable接口,这里Android的部分类比如Bitmap类就已经实现了,同时Parcelable在Android AIDL中交换数据也很常见的。
android常见面试题2
1、在onCreate方法中Bundle savedInstanceState这个参数有什么作用?
参考答案:
在onCreate方法中有saveInstanceState这个参数,其实这个参数对应两个方法。void onSaveInstanceState(Bundle outState);void onRestoreInstanceState(Bundle savedInstanceState)。当某个activity变得“容易”被系统销毁时,说白了就是系统在内存不足或者其他异常情况下把你的Activity销毁时,将调用这个方法。需要注意的是它是系统调用的,并且你的Activity是被动得被销毁。你可以在销毁的时候保存一下数据。然后在onCreate方法中拿出来。那什么情况下能触发这两个方法呢?
1)、当用户按下HOME键时。
这是显而易见的,系统不知道你按下HOME后要运行多少其他的程序,自然也不知道activity A是否会被销毁,故系统会调用onSaveInstanceState,让用户有机会保存某些非永久性的数据。以下几种情况的分析都遵循该原则
2)、长按HOME键,选择运行其他的程序时。
3)、按下电源按键(关闭屏幕显示)时。
4)、从activity A中启动一个新的activity时。
5)、屏幕方向切换时,例如从竖屏切换到横屏时。
在屏幕切换之前,系统会销毁activity A,在屏幕切换之后系统又会自动地创建activity A,所以onSaveInstanceState一定会被执行
总而言之,onSaveInstanceState的调用遵循一个重要原则,即当系统“未经你许可”时销毁了你的activity,则onSaveInstanceState会被系统调用,这是系统的责任,因为它必须要提供一个机会让你保存你的数据(当然你不保存那就随便你了)。
至于onRestoreInstanceState方法,需要注意的是,onSaveInstanceState方法和onRestoreInstanceState方法“不一定”是成对的被调用的,onRestoreInstanceState被调用的前提是,activity A“确实”被系统销毁了,而如果仅仅是停留在有这种可能性的情况下,则该方法不会被调用,例如,当正在显示activity A的时候,用户按下HOME键回到主界面,然后用户紧接着又返回到activity A,这种情况下activity A一般不会因为内存的原因被系统销毁,故activity A的onRestoreInstanceState方法不会被执行
另外,onRestoreInstanceState的bundle参数也会传递到onCreate方法中,你也可以选择在onCreate方法中做数据还原。
2、请谈谈Activity的生命周期?
参考答案:
在系统中的Activity被一个Activity栈所管理。当一个新的Activity启动时,将被放置到栈顶,成为运行中的Activity,前一个Activity保留在栈中,不再放到前台,直到新的Activity退出为止。
Activity有四种本质区别的.状态:
1)在屏幕的前台(Activity栈顶),叫做活动状态或者运行状态(active or running)
2)如果一个Activity失去焦点,但是依然可见(一个新的非全屏的Activity 或者一个透明的Activity 被放置在栈顶),叫做暂停状态(Paused)。一个暂停状态的Activity依然保持活力(保持所有的状态,成员信息,和窗口管理器保持连接),但是在系统内存极端低下的时候将被杀掉。
3)如果一个Activity被另外的Activity完全覆盖掉,叫做停止状态(Stopped)。它依然保持所有状态和成员信息,但是它不再可见,所以它的窗口被隐藏,当系统内存需要被用在其他地方的时候,Stopped的Activity将被杀掉。
4)如果一个Activity是Paused或者Stopped状态,系统可以将该Activity从内存中删除,Android系统采用两种方式进行删除,要么要求该Activity结束,要么直接杀掉它的进程。当该Activity再次显示给用户时,它必须重新开始和重置前面的状态。
3、谈谈你对BroadCastRceiver的理解?
参考答案:
广播接收者,android四大组件之一,也是唯一一个能动态注册的组件。
1)广播接收者是一个专注于接收广播通知信息,并做出对应处理的组件。很多广播是源自于系统──比如,通知时区改变、电池电量低、拍摄了一张照片或者用户改变了语言选项。应用程序也可以进行广播──比如说,通知其它应用程序一些数据下载完成并处于可用状态。
2)应用程序可以拥有任意数量的广播接收者以对所有它感兴趣的通知信息予以响应。所有的接收器均继承自BroadcastReceiver基类。
3)广播接收者没有用户界面。然而,它们可以启动一个activity来响应它们收到的信息,或者用NotificationManager来通知用户。通知可以用很多种方式来吸引用户的注意力──闪动背灯、震动、播放声音等等。一般来说是在状态栏上放一个持久的图标,用户可以打开它并获取消息。
4、广播分几种?他们有什么区别?
参考答案:
广播被分为两种不同的类型:“普通广播(Normal broadcasts)”和“有序广播(Ordered broadcasts)”。普通广播是完全异步的,可以在同一时刻(逻辑上)被所有接收者接收到,消息传递的效率比较高,但缺点是:接收者不能将处理结果传递给下一个接收者,并且无法终止广播Intent的传播。
然而有序广播是按照接收者声明的优先级别,被接收者依次接收广播。如:A的级别高于B,B的级别高于C,那么,广播先传给A,再传给B,最后传给C 。优先级别声明在 intent-filter 元素的 android:priority 属性中,数越大优先级别越高,取值范围:-1000到1000,优先级别也可以调用IntentFilter对象的setPriority()进行设置 。有序广播的接收者可以终止广播Intent的传播,广播Intent的传播一旦终止,后面的接收者就无法接收到广播。
另外,有序广播的接收者可以将数据传递给下一个接收者,如:A得到广播后,可以往它的结果对象中存入数据,当广播传给B时,B可以从A的结果对象中得到A存入的数据。
Context.sendBroadcast()
发送的是普通广播,所有订阅者都有机会获得并进行处理。
Context.sendOrderedBroadcast()
发送的是有序广播,系统会根据接收者声明的优先级别按顺序逐个执行接收者, 前面的接收者有权终止广播(BroadcastReceiver.abortBroadcast()),如果广播被前面的接收者终止,后面的接收者就再也无法获取到广播。对于有序广播,前面的接收者可以将数据通过setResultExtras(Bundle)方法存放进结果对象,然后传给下一个接收者,下一个接收者通过代码:Bundle bundle = getResultExtras(true))可以获取上一个接收者存入在结果对象中的数据。
android测试面试题3篇(扩展5)
——android面试题及答案3篇
android面试题及答案1
1. Intent的几种有关Activity启动的方式有哪些,你了解每个含义吗?
这里Android123提示大家,Intent的一些标记有FLAG_ACTIVITY_BROUGHT_TO_FRONT 、FLAG_ACTIVITY_CLEAR_TOP、FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET、FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS、FLAG_ACTIVITY_MULTIPLE_TASK和FLAG_ACTIVITY_NEW_TASK 等。每种含义大家看SDK文档和具体跑下这样你的记忆会更深刻些。
2. Activity和Task的启动模式有哪些? 每种含义是什么?
有关在AndroidManifest.xml中的android:launchMode定义,主要有standard、singleTop、singleTask和singleInstance,同时对于android:taskAffinity这些问题大家也要了解,Android开发网在以前的文章中讲过,不过很多开发者仍然不是很清楚,这些基础问题我们以后仍然会再次总结。
3. 通过Intent传递一些二进制数据的方法有哪些?
1). 使用Serializable接口实现序列化,这是Java常用的方法。
2). 实现Parcelable接口,这里Android的部分类比如Bitmap类就已经实现了,同时Parcelable在Android AIDL中交换数据也很常见的。
4. 能说下Android应用的入口点吗?
在Google的虚拟机中Application实例中已经实现了main方法,有关具体的Application介绍可以参考 Android程序的入口点是什么,不是Main()吗
5. Java基础问题,说说HashSet和HashTable的区别?
这个相信Java程序员都知道HashSet相对于HashMap就是不能存放重复的数据,对于HashTable来说,存放的数据不能出现key或value为null这样的情况。
6. Java基础问题,用Java的集合类写下广度优先搜索.
这个属于基础数据结构问题,通过队列处理一层一层,相对于深度优先的栈处理方式来说更实用一些。
7. Android都有哪些XML解析器,都熟练掌握吗?
这里XmlPull、SAX和DOM相信做过Web开发的都已经滚瓜烂熟了。
8. SQLite支持事务吗? 添加删除如何提高性能?
SQLite作为轻量级的数据库,比MySQL还小,但支持SQL语句查询,提高性能可以考虑通过原始经过优化的SQL查询语句方式处理。
9. Android Service和Binder、AIDL你都熟练吗?
作为Android重要的后台服务,这些每个Android开发者都应该掌握,这也算是和Java SE最大的不同了,具体的实例大家可以查看Android音乐播放器的源代码Music.git中的,这里不再赘述。
10. 你用过哪款Android手机,有哪些优点和不足,相对于iPhone或Symbian又有哪些优缺点?
把这个作为面试题也是考察下,可以大概了解到它对Android的了解程度,多移动开发的认识。
android面试题及答案2
1、 Android的四大组件是哪些,它们的作用?
答:Activity:Activity是Android程序与用户交互的窗口,是Android构造块中最基本的一种,它需要为保持各界面的状态,做很多持久化的事情,妥善管理生命周期以及一些跳转逻辑
service:后台服务于Activity,封装有一个完整的功能逻辑实现,接受上层指令,完成相关的食物,定义好需要接受的`Intent提供同步和异步的接口
Content Provider:是Android提供的第三方应用数据的访问方案,可以派生Content
Provider类,对外提供数据,可以像数据库一样进行选择排序,屏蔽内部数据的存储细节,向外提供统一的借口模型,大大简化上层应用,对数据的整合提供了更方便的途径
BroadCast Receiver:接受一种或者多种Intent作触发事件,接受相关消息,做一些简单处理,转换成一条Notification,统一了Android的事件广播模型
2、 请介绍下Android中常用的五种布局。
常用五种布局方式,分别是:FrameLayout(框架布局),LinearLayout (线性布局),AbsoluteLayout(绝对布局),RelativeLayout(相对布局),TableLayout(表格布局)。
一、FrameLayout:所有东西依次都放在左上角,会重叠,这个布局比较简单,也只能放一点比较简单的东西。
二、LinearLayout:线性布局,每一个LinearLayout里面又可分为垂直布局(android:orientation=”vertical”)和水*布局(android:orientation=”horizontal” )。当垂直布局时,每一行就只有一个元素,多个元素依次垂直往下;水*布局时,只有一行,每一个元素依次向右排列。
三、AbsoluteLayout:绝对布局用X,Y坐标来指定元素的位置,这种布局方式也比较简单,但是在屏幕旋转时,往往会出问题,而且多个元素的时候,计算比较麻烦。
四、RelativeLayout:相对布局可以理解为某一个元素为参照物,来定位的布局方式。主要属性有:相对于某一个元素android:layout_below、 android:layout_toLeftOf相对于父元素的地方android:layout_alignParentLeft、android:layout_alignParentRigh;
五、TableLayout:表格布局,每一个TableLayout里面有表格行TableRow,TableRow里面可以具体定义每一个元素。每一个布局都有自己适合的方式,这五个布局元素可以相互嵌套应用,做出美观的界面。
3、 android中的动画有哪几类,它们的特点和区别是什么
答:两种,一种是Tween动画、还有一种是Frame动画。
Tween动画,这种实现方式可以使视图组件移动、放大、缩小以及产生透明度的变化; 另一种Frame动画,传统的动画方法,通过顺序的播放排列好的图片来实现,类似电影。
4、 android 中有哪几种解析xml的类?官方推荐哪种?以及它们的原理和区别。
答:XML解析主要有三种方式,SAX、DOM、PULL。常规在PC上开发我们使用Dom相对轻松些,但一些性能敏感的数据库或手机上还是主要采用SAX方式,SAX读取是单向的,优点:不占内存空间、解析属性方便,但缺点就是对于套嵌多个分支来说处理不是很方便。而DOM方式会把整个XML文件加载到内存中去,这里Android开发网提醒大家该方法在查找方面可以和XPath很好的结合如果数据量不是很大推荐使用,而PULL常常用在J2ME对于节点处理比较好,类似SAX方式,同样很节省内存,在J2ME中我们经常使用的KXML库来解析。
5、 ListView的优化方案
答:1、如果自定义适配器,那么在getView方法中要考虑方法传进来的参数contentView是否为null,如果为null就创建contentView并返回,如果不为null则直接使用。在这个方法中尽可能少创建view。
2、给contentView设置tag(setTag()),传入一个viewHolder对象,用于缓存要显示的数据,可以达到图像数据异步加载的效果。
3、如果listview需要显示的item很多,就要考虑分页加载。比如一共要显示100条或者更多的时候,我们可以考虑先加载20条,等用户拉到列表底部的时候再去加载接下来的20条。
android测试面试题3篇(扩展6)
——性能测试面试题 (菁选2篇)
性能测试面试题1
1.什么是负载测试?什么是性能测试?
性能测试(Performance Test):通常收集所有和测试有关的所有性能,通常被不同人在不同场合下进行使用;负载测试(Load Test):负载测试是一种性能测试,指数据在超负荷环境中运行,程序是否能够承担。
2.性能测试包含了哪些测试(至少举出3种)
基准测试-比较新的或未知测试对象与已知参照标准(如现有软件或评测标准)的性能。
争用测试:-核实测试对象对于多个主角对相同资源(数据记录、内存等)的请求的处理是否可以接受。 性能配置-核实在操作条件保持不变的情况下,测试对象在使用不同配置时其性能行为的可接受性。
负载测试(Load Test)-是一种性能测试,指数据在超负荷环境中运行,程序是否能够承担。核实在保持配置不变的情况下,测试对象在不同操作条件(如不同用户数、事务数等)下性能行为的可接受性。
强度测试Stress Testing-核实测试对象性能行为在异常或极端条件(如资源减少或用户数过多)之下的可接受性。
强度测试在系统资源特别低的情况下软件系统运行情况,目的是找到系统在哪里失效以及如何失效的地方。
3.简述性能测试的步骤
第一,分析产品结构,明确性能测试的需求,包括并发、极限、配置和指标等方面的性能要求,必要时基于LOAD测试的相同测略需同时考虑稳定性测试的需求。
第二,分析应用场景和用户数据,细分用户行为和相关的数据流,确定测试点或测试接口,列示系统接口的可能瓶颈,一般是先主干接口再支线接口,并完成初步的测试用例设计。
第三,依据性能测试需求和确定的测试点进行测试组网设计,并明确不同组网方案的重要程度或优先级作为取舍评估的依据,必要时在前期产品设计中提出支持性能测试的可测试性设计方案和对测试工具的需求。 第四,完成性能测试用例设计、分类选择和依据用户行为分析设计测试规程,并准备好测试用例将用到的测试数据。
第五,确定采用的测试工具。
第六,进行初验测试,以主干接口的可用性为主,根据测试结果分析性能瓶颈,通过迭代保证基本的指标等测试的环境。
第七,迭代进行全面的性能测试,完成计划中的性能测试用例的执行。
第八,完成性能测试评估报告
性能测试面试题2
1.简述使用Loadrunner的步骤
01,创建脚本VuGen-创建脚本,选择协议-录制脚本-编辑脚本-检查修改脚本是否有误
02,用中央控制器Controller来调度虚拟用户-创建场景,选择脚本-设置机器虚拟用户数-设置事务-如果模拟多机测试,设置IP
03,运行脚本
04,分析测试结果Analyze
2.什么时候可以开始执行性能测试?
在产品相对比较稳定,功能测试结束后。灵活性比较强。
3.LoadRunner由哪些部件组成?
Virtual User Generator、Controller、Analyze
4.你使用LoadRunner的哪个部件来录制脚本?
Virtual User Generator
5.LoadRunner的哪个部件可以模拟多用户并发下回放脚本?
Controller
android测试面试题3篇(扩展7)
——移动端测试面试题 (菁选2篇)
移动端测试面试题1
1、 集成测试也叫组装测试或者联合测试,请简述集成测试的主要内容?
集成测试是在单元测试的基础上,测试在将所有的软件单元按照概要设计规格说明的要求组装成模块、子系统或系统的过程中各部分工作是否达到或实现相应技术指标及要求的活动。
集成测试应该考虑以下问题:
(1)在把各个模块连接起来的时候,穿越模块接口的数据是否会丢失;
(2)一个模块的功能是否会对另一个模块的功能产生不利的影响;
(3)各个子功能组合起来,能否达到预期要求的父功能;
(4)全局数据结构是否有问题;
(5)单个模块的误差累积起来,是否会放大,从而达到不能接受的程度。
2、 单元测试主要内容是什么?
01,模块接口测试。单元测试的基础,只有在数据能正确流入,流出模块的前提下才有意义。
02,局部数据结构测试 检查局部数据结构是为了保证临时存储在模块内的数据在程序执行中完整,正确。重点是一些执行函数是否正确执行,内部是否运行正确。局部数据结构往往是错误的根源,应仔细设计测试用例。
03,边界条件测试 单元测试中最重要的一项任务。因为软件经常在边界上失败,采用边界值分析,可能发现新的错误。
04,模块中所有独立路径的测试 在模块中执行每一条独立执行路径进行测试,单元测试的基本任务保证模块中每条语句执行一次。
05,模块的各条错误处理通路测试:程序在遇到异常情况时不应该退出,好的程序应能预见各种出错条件,并预设各种出错处理通路。
3、 如何理解强度测试?
测试系统在高负载,高强度下的工作能力,意在获取系统在极限状态下运行时的各项性能指数,查看其是否在允许的范围内。
注:
01.疲劳强度测试是一类特殊的强度测试,主要测试系统长时间运行后的性能表现,例如7x24小时的"压力测试。
02. 强度测试总是通常模拟系统在异常的资源配置下运行,如人为降低系统工作环境所需要的资源,如网络带宽,系统内存,数据锁等等,以测试系统在资源不足的情况下的工作状态
移动端测试面试题2
1.怎么做好文档测试?
仔细阅读,跟随每个步骤,检查每个图形,尝试每个示例,检查文档的编写是否满足文档编写的目的,内容是否齐全,正确,完善.标记是否正确.
软件测试分哪2种方法?分别适合什么情况?
软件测试分2种:白盒测试和黑盒测试。白盒测试又称为结构测试、逻辑驱动测试或基于程序本身的测试,它着重于程序的内部结构及算法,通常不关心功能与性能指标;黑盒测试又称功能测试、数据驱动测试或基于规格说明的测试,它实际上是站在最终用户的立场,检验输入输出信息及系统性能指标是否符合规格说明书中有关功能需求及性能需求的规定
2.白盒测试有几种方法?
总体上分为静态方法和动态方法两大类。
静态:关键功能是检查软件的表示和描述是否一致,没有冲突或者没有歧义。
动态:语句覆盖、判定覆盖、条件覆盖、判定条件覆盖、条件组合覆盖、路径覆盖。
3.系统测试计划是否需要同行审批,为什么?
需要,系统测试计划属于项目阶段性关键文档,因此需要评审。
4.Alpha测试与beta的区别?
Alpha测试在系统开发接近完成时对应用系统的测试;测试后仍然会有少量的设计变更。这种测试一般由最终用户或其它人员完成,不能由程序或测试员完成。
Beta测试当开发和测试根本完成时所做的测试,最终的错误和问题需要在最终发行前找到。这种测试一般由最终用户或其它人员完成,不能由程序员或测试员完成。
推荐访问:面试题 测试 android android测试面试题3篇 android测试面试题1 android测试面试题及答案