android面试题

时间:2022-11-24 01:33:57 面试技巧 我要投稿

android面试题大全

  android面试者如何才能在面试中又出色的表现呢?面试前做好准备很有必要,那么你了解相关面试题目了吗?以下是阳光网小编帮你们整理的android面试题大全,一起来学习啦。

android面试题大全

  android面试题大全篇一

  1. Android dvm的进程和Linux的进程, 应用程序的进程是否为同一个概念

  DVM 执行时,在linux看来就是一应用程序进程,所以说是同一概念

  2. sim卡的EF 文件有何作用

  sim卡的文件系统有自己规范,主要是为了和手机通讯,sim本 身可以有自己的操作系统,EF就是作存储并和手机通讯用的

  3.嵌入式操作系统内存管理有哪几种, 各有何特性

  页式,段式,段页,用到了MMU,虚拟空间等技术

  4. 什么是嵌入式实时操作系统, Android 操作系统属于实时操作系统吗?

  分硬实时和软实时,android属于linux内核,linux在用户空间可抢占,内核空间在2.4以后可局部抢占,严格来讲 Android属于软实时系统

  5、 Android dvm的进程和Linux的进程, 应用程序的进程是否为同一个概念

  DVM指dalivk的虚拟机。每一个Android应用程序都在它自己的进程中运行,都拥有一个独立的Dalvik虚拟机实例。而每一个DVM都是在Linux 中的一个进程,所以说可以认为是同一个概念。

  6、sim卡的EF 文件有何作用

  sim卡的文件系统有自己规范,主要是为了和手机通讯,sim本 身可以有自己的操作系统,EF就是作存储并和手机通讯用的

  7、嵌入式操作系统内存管理有哪几种, 各有何特性

  页式,段式,段页,用到了MMU,虚拟空间等技术

  8、 什么是嵌入式实时操作系统, Android 操作系统属于实时操作系统吗?

  嵌入式实时操作系统是指当外界事件或数据产生时,能够接受并以足够快的速度予以处理,其处理的结果又能在规定的时间之内来控制生产过程或对处理系统作出快速响应,并控制所有实时任务协调一致运行的嵌入式操作系统。主要用于工业控制、军事设备、航空航天等领域对系统的响应时间有苛刻的要求,这就需要使用实时系统。又可分为软实时和硬实时两种,而android是基于linux内核的',因此属于软实时。

  9、一条最长的短信息约占多少byte?

  中文70(包括标点),英文160,160个字节

  10、 android中的动画有哪几类,它们的特点和区别是什么?

  两种,一种是Tween动画、还有一种是Frame动画。Tween动画,这种实现方式可以使视图组件移动、放大、缩小以及产生透明度的变化;另一种Frame动画,传统的动画方法,通过顺序的播放排列好的图片来实现,类似电影。

  11、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面试题大全篇二

  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面试题大全篇三

  1、显式intent和隐式intent的区别是什么(Android)

  Intent定义:Intent是一种在不同组件之间传递的请求消息,是应用程序发出的请求和意图。作为一个完整的消息传递机制,Intent不仅需要发送端,还需要接收端。

  显式Intent定义:对于明确指出了目标组件名称的Intent,我们称之为显式Intent; 隐式Intent定义:对于没有明确指出目标组件名称的Intent,则称之为隐式Intent。 说明:Android系统使用IntentFilter 来寻找与隐式Intent相关的对象。

  2、如何优化ListView

  1)如果自定义适配器,那么在getView方法中要考虑方法传进来的参数contentView是否为null,如果为null就创建contentView并返回,如果不为null则直接使用。在这个方法中尽可能少创建view;

  2)给contentView设置tag(setTag()),传入一个viewHolder对象,用于缓存要显示的数据,可以达到图像数据异步加载的效果;

  3)如果listview需要显示的item很多,就要考虑分页加载。比如一共要显示100条或者更多的时候,我们可以考虑先加载20条,等用户拉到列表底部的时候再去加载接下来的20条。

  3、简述通过contentResolver获取ContentProvider内容的基本步骤

  1)得到ContentResolver类对象:ContentResolver cr = getContentResolver();

  2)定义要查询的字段String数组;

  3)使用cr.query();返回一个Cursor对象;

  4)使用while循环得到Cursor里面的内容。

  4、描述4 种 activity 的启动模式

  1)standard :系统的默认模式,一次跳转即会生成一个新的.实例。假设有一个activity命名为MainActivity,执行语句:

  startActivity(new Intent(MainActivity.this, MainActivity.class))后,MainActivity将跳转到另外一个MainActivity,也就是现在的Task栈里面有MainActivity的两个实例。按返回键后你会发现仍然是在MainActivity(第一个)里面。

  2)singleTop:singleTop 跟standard 模式比较类似。如果已经有一个实例位于Activity栈的顶部时,就不产生新的实例,而只是调用Activity中的newInstance()方法。如果不位于栈顶,会产生一个新的实例。例:当MainActivity为 singleTop 模式时,执行跳转后栈里面依旧只有一个实例,如果现在按返回键程序将直接退出。

  3)singleTask: singleTask模式和后面的singleInstance模式都是只创建一个实例的。在这种模式下,无论跳转的对象是不是位于栈顶的activity,程序都不会生成一个新的实例(当然前提是栈里面已经有这个实例)。这种模式相当有用,在以后的多activity开发中,经常会因为跳转的关系导致同个页面生成多个实例,这个在用户体验上始终有点不好,而如果你将对应的activity声明为 singleTask 模式,这种问题将不复存在。

  4)singleInstance: 设置为 singleInstance 模式的 activity 将独占一个task(感觉task可以理解为进程),独占一个task的activity与其说是activity,倒不如说是一个应用,这个应用与其他activity是独立的,它有自己的上下文activity。

【android面试题】相关文章:

android测试面试题11-25

android面试题201704-04

android面试题及答案04-04

android面试题整理04-04

android面试题练习04-04

总结的android面试题12-09

android软件测试面试题04-04

android面试题库04-04

android常见面试题04-04