android面试题摘要(精选5篇)
mvc是model,view,controller的缩写,mvc包含三个部分:
模型(model)对象:是应用程序的主体部分,所有的业务逻辑都应该写在该层。
视图(view)对象:是应用程序中负责生成用户界面的部分。也是在整个mvc架构中用户唯一可以看到的一层,接收用户的输入,显示处理结果。
控制器(control)对象:是根据用户的输入,控制用户界面数据显示及更新model对象状态的部分,控制器更重要的一种导航功能,想用用户出发的相
关事件,交给model处理。
2、android鼓励弱耦合和组件的重用,在android中mvc的具体体现如下:
视图层(view):一般采用xml文件进行界面的描述,使用的时候可以非常方便的引入,当然,如何你对android了解的比较的多了话,就一定 可以想到在 android中也可以使用javascript+html等的方式作为view层,当然这里需要进行java和javascript之间的通 信,幸运的是,android提供了它们之间非常方便的通信实现。
控制层(controller):android的控制层的重 任通常落在了众多的acitvity的肩上,这句话也就暗含了不要在acitivity中写代码,要通过activity交割model业务 逻辑层处理, 这样做的另外一个原因是android中的acitivity的响应时间是5s,如果耗时的操作放在这里,程序就很容易被回收掉。
模型层(model):对数据库的操作、对网络等的操作都应该在model里面处理,当然对业务计算等操作也是必须放在的该层的。
3、Activity的生命周期
和其他手机平台 的应用 程序 一样,Android的应用程序 的生命周期是被统一掌控 的,也就是说我们写的应用程序命运掌握在别人(系统)的手里,我们不能改变它,只能学习并适应它。简单地说一下为什么是这样:我们手机在运行 一个应用程序的时候,有可能打进来电话
发进来短信 ,或者没有电了,这时候程序都会被中断,优先去服务电话的基本功能 ,另外系统也不允许你占用太多资源 ,至少要保证电话功能吧,所以资源不足的时候也就有可能被干掉。
言归正传,Activity的基本生命周期如下代码 所示:
Java代码
public
class MyActivity extends Activity {
protected
void onCreate(Bundle savedInstanceState);
protected
void onStart;
protected
void onResume();
protected
void onPause();
protected
void onStop();
protected
void onDestroy();
}
你自己写的Activity会按需要 重载这些方法,onCreate是免不了的,在一个Activity正常启动的过程中,他们被调用的顺序是 onCreate ->onStart ->onResume, 在Activity被干掉的时候顺序是onPause ->onStop ->onDestroy ,这样就是一个完整的生命周期,但是有人问了 ,程序正运行着呢来电话了,这个程序咋办?中止了呗,如果中止的时候新出的一个Activity是全屏的那么:onPause->onStop ,恢复的时候onStart->onResume ,如果打断 这个应用程序的是一个Theme为Translucent 或者Dialog 的Activity那么只是onPause ,恢复 的时候onResume 。
详细介绍一下这几个方法中系统在做什么以及我们应该做什么:
onCreate: 在这里创建界面 ,做一些数据 的初始化工作
onStart: 到这一步变成用户可见不可交互 的
onResume: 变成和用户可交互 的,(在activity 栈系统通过栈的方式管理这些个Activity的最上面,运行完弹出栈,则回到上一个Activity)
onPause: 到这一步是可见但不可交互 的,系统会停止动画 等消耗CPU 的事情从上文的描述已经知道,应该在这里保存你的一些数据,因为这个时候你的程序的优先级降低,有可能被系统收回。在这里保存的数据,应该在
onResume里读出来,注意:这个方法里做的事情时间要短,因为下一个activity不会等到这个方法完成才启动
onstop: 变得不可见 ,被下一个activity覆盖了
1.简述Activity的生命周期?
1)Activity的生命周期通过7个生命周期方法onCreate(),onRestart(), onStart(), onResume(), onPause(),onStop(),onDestroy()来体现。2)其中6个生命周期方法是成对对应起来的,哪里创建的对象,一般应该在其对应的方法中销毁。
onCreate()--onDestroy()onStart()--onStop()onResume()--onPause()3)当程序启动之后,第一个Activity经过的生命周期方法是:onCreate()→onStart()→ onResume()方法,当第一个Activity A启动第二个Activity B的时候(备注:第二个Activity完全遮盖住第一个Activity,并且这个过程中没有出现点击Home键,或者第一个Activity被杀死等异常情况,并且两个Activity的启动模式是标准模式),这两个Activity经历的生命周期方法是:
A onPause()→ B onCreate()→ B onStart()→ B onResume()→ A onStop()→(此时Activity A已经在回退栈的最低端,Activity B已经在Activity A的上面,在回退栈的最顶端)当通过点击后退键退出Activity B的时候:
(此时Activity B 弹出回退栈)→ B onPause()→ A onRestart()→ A onStart()→ A onResume()→ B onStop()→ B onDestroy()此时B 被销毁
2.简述Service的生命周期?
1).如果在Activity中通过调用startService()方法启动一个Service的话,那么生命周期是:
onCreate()→ onStartCommand()→ 运行中 →(如果自己或者客户端(如Activity)调用了stop Service的方法的话)→ onDestroy()2).如果在Activity中通过调用bindService()方法启动一个Service的话,那么生命周期是:
onCreate()→ onBind()→ 运行中 →(如果有客户端(Activity)调用了unBindService()方法与Service解除绑定时)→ onUnbind()→ onDestroy()3.有几种控件布局的方式?
1)RelativeLayout:相对布局,可以根据相对位置来调整控件的位置。推荐使用相对布局,更利于屏幕的自适应。2)LinearLayout:线性布局,控件之间的水平排列或者垂直排列。但是如果要想构建复杂布局,要进行多层的LinearLayout布局嵌套,但是这样会运行布局载入效率。
3)FrameLayout:帧布局,控件与控件之间处于上下叠加的状态。
备注:还有两个已经不怎么用的布局:TableLayout:表格布局 AbsoluteLayout 绝对布局。
布局实现方式有两种:xml文件静态实现,代码动态实现。
一般xml文件中可以实现布局控制的话,就不建议放在代码中实现布局控制,因为在xml文件中实现布局控制,可以做到布局与代码分离。4.有几种数据存储方式,分别是什么? 1)SQLite数据库存储结构化数据。
2)文件存储:分为内部存储和外部存储(SD卡)两种存储方式。3)SharedPreferences共享参数,键值对形式存储。4)网络存储。
5.IntentService与Service有什么区别? IntentService是Service的子类
1)Service如果要处理异步请求(如耗时操作)的话,需要自己启动一个worker thread,如果启动多个worker thread来处理相关事务的话,各线程之间无法很好的控制。而IntentService可以将多个异步请求的Intent放入队列中,封装了一个开启worker thread的onHandleIntent()方法,来依次处理放入队列中的Intent,只有一个worker thread在运行,同一时刻只有一个Intent被处理,当一个Intent处理完了之后才会处理另外一个Intent。
2)Service可以通过startService()或者bindService()方法来启动,而IntentService则是通过startService()方法来启动。3)Service适合多线程处理异步请求。而IntentService则适合处理需要排队的请求。
6.StartService与bindService之间的区别?
1)StartService启动了Service之后无法与Activity之间进行通信,与现有的Activity分离,即使Activity被杀掉了之后,Service还可以运行,同时通过设置Service的粘性,还可以让Service被杀掉之后,可以自启动。而bindService启动Service之后,与绑定的Activity之间有关系,可以依据Server/Client模式来进行通信(binder客户端主动请求模式,或者通过信使),但是无法设置Serrvice的粘性。2)StartService启动的Service,Activity中可以调用stopService()方法来结束一个Service,或者通过Service自己调用stopSelf()方法来结束Service。而bindService只能通过Activity()来调用unbindService()方法来结束Service,Service会调用onUnBind()方法,以及onDestroy()方法。
7.ArrayAdapter BaseAdapter CursorAdapter的区别?
ArrayAdpter CursorAdapter都是BaseAdapter的子类。都是用来填充那些含有item的控件。
1)主要区别是数据来源不同。ArrayAdapter数据来源是Object数组,CursorAdapter数据来源是数据库的Cursor,而BaseAdapter适合创建复杂自定义的item内容,通过继承BaseAdapter类,重写相关方法来实现。
8.Handler与Looper之间的关系? 1)Handler和Looper的关系就好比,坐地铁过安检时候:每一个人可以理解为一个Handler,一个人的一个或者多个东西看做Message而循环滚动的检查台装置可以看做是Looper,而要检查的东西排成队列可以理解为MessageQueue消息队列。
2)Looper是Handler和MessageQuene之间的桥梁,Looper将Handler发送过的消息放入MessageQueue,同时Looper也将MessageQueue中的Message发送给Handler来处理。
9.res文件夹与assets文件夹有什么区别? 1)res文件夹中的资源在会在R.java文件中生成ID,代码中可以直接通过R.id的形式来访问。而assets文件夹中的资源不会在R.java文件中生成ID,需要通过AssetsManager通过IO流的方式来访问。
2)res文件夹中的文件会被压缩,而assets文件中的文件不会被压缩。
3)Res不能自定义目录名,不支持多层目录。而assets支持自定义目录名,支持多层目录。
10.广播接收器有几种注册方式,分别是什么?
1.java.io包中定义了多个流类型来实现输入和输出功能,可以从不同的角度对其进行分 类,按功能分为:(c),如果为读取的内容进行处理后再输出,需要使用下列哪种流?(g)
A、输入流和输出流 B、字节流和字符流 C、节点流和处理流
D、File stream E、Pipe stream F、Random stream G、Filter stream
2.下列代码的执行结果是:(b)
public class Test3{
public static void main(String args[]){
System.out.print(100%3);
System.out.print(“,”);
System.out.println(100%3.0);
}
}
A、1,1
B、1,1.0
C、1.0,1
D、1.0,1.0
3.在继承中,关于构造方法的说明,下列说法错误的是(d)
A、子类无条件的继承父类的无参构造方法,
B、子类可以引用父类中的有参构造方法,使用super关键字,
C、如果子类没有构造方法,则父类无参构造方法作为自已的构造方法,
D、如果子类有无参构造方法,而父类的无参构造方法则被覆盖。
4.以下程序的运行结果为( b)
public class IfTest{
public static void main(String args[]){
int x=3;
int y=1;
if(x==y)
System.out.println(“Not equal”);
else
System.out.println(“Equal”);
}
}
A、Not equal B、Equal C、无输出 D、编译出错
5.Java语言中字符串“学Java”所占的内存空间是(a)
A. 6个字节
B. 7个字节
C. 10个字节
D. 11个字节
6.关于下列程序段的输出结果,说法正确的是:(d )
public class MyClass{
static int i;
public static void main(String argv[]){
System.out.println(i);
}
}
A、有错误,变量i没有初始化。
B、null
C、1
D、0
7.下列哪些语句关于内存回收的说明是正确的? (b )
A、 程序员必须创建一个线程来释放内存
B、 内存回收程序负责释放无用内存
C、 内存回收程序允许程序员直接释放内存
D、 内存回收程序可以在指定的时间释放内存对象
8.下面异常是属于Runtime Exception 的是(abcd)(多选)
A、ArithmeticException
B、IllegalArgumentException
C、NullPointerException
D、BufferUnderflowException
9. Math.round(11.5)等于多少(). Math.round(-11.5)等于多少(c). c
A、11 ,-11 B、11 ,-12 C、12 ,-11 D、12 ,-12
10.下列程序段的输出结果是:(b )
void complicatedexpression_r(){
int x=20, y=30;
boolean b;
b=x>50&&y>60||x>50&&y<-60||x<-50&&y>60||x<-50&&y<-60;
System.out.println(b);
}
A、true B、false C、1 D、0
11.activity对一些资源以及状态的操作保存,最好是保存在生命周期的哪个函数中进行(d)
A、onPause() B、onCreate() C、 onResume() D、onStart()
12.Intent传递数据时,下列的数据类型哪些可以被传递(abcd)(多选)
A、Serializable B、charsequence C、Parcelable D、Bundle
13.android 中下列属于Intent的作用的是(c)
A、实现应用程序间的数据共享
B、是一段长的生命周期,没有用户界面的程序,可以保持应用在后台运行,而不会因为切换页面而消失
C、可以实现界面间的切换,可以包含动作和动作数据,连接四大组件的纽带
D、处理一个应用程序整体性的工作
14.下列属于SAX解析xml文件的优点的是(b)
A、将整个文档树在内存中,便于操作,支持删除,修改,重新排列等多种功能
B、不用事先调入整个文档,占用资源少
C、整个文档调入内存,浪费时间和空间
D、不是长久驻留在内存,数据不是持久的,事件过后,若没有保存数据,数据就会
消失
15.下面的对自定style的方式正确的是(a)
A、
B、
C、
fill_parent
D、
16.在android中使用Menu时可能需要重写的方法有(ac)。(多选)
A、onCreateOptionsMenu()
B、onCreateMenu()
C、onOptionsItemSelected()
D、onItemSelected()
17.在SQL Server Management Studio 中运行下列T-SQL语句,其输出值(c)。
SELECT @@IDENTITY
A、 可能为0.1
B、 可能为3
C、 不可能为-100
D、 肯定为0
18.在SQL Server 中运行如下T-SQL语句,假定SALES表中有多行数据,执行查询之 后的结果是(d)。
BEGIN TRANSACTION A
Update SALES Set qty=30 WHERE qty<30
BEGIN TRANSACTION B
Update SALES Set qty=40 WHERE qty<40
Update SALES Set qty=50 WHERE qty<50
Update SALES Set qty=60 WHERE qty<60
COMMIT TRANSACTION B
COMMIT TRANSACTION A
A、SALES表中qty列最小值大于等于30
B、SALES表中qty列最小值大于等于40
C、SALES表中qty列的数据全部为50
D、SALES表中qty列最小值大于等于60
19.在android中使用SQLiteOpenHelper这个辅助类时,可以生成一个数据库,并可以对数 据库版本进行管理的方法可以是(ab)
A、getWriteableDatabase()
B、getReadableDatabase()
C、getDatabase()
D、getAbleDatabase()
20. android 关于service生命周期的onCreate()和onStart()说法正确的是(ad)(多选题)
A、当第一次启动的时候先后调用onCreate()和onStart()方法
B、当第一次启动的时候只会调用onCreate()方法
C、如果service已经启动,将先后调用onCreate()和onStart()方法
D、如果service已经启动,只会执行onStart()方法,不在执行onCreate()方法
21.下面是属于GLSurFaceView特性的是(abc)(多选)
A、管理一个surface,这个surface就是一块特殊的内存,能直接排版到android的视图
view上。
B、管理一个EGL display,它能让opengl把内容渲染到上述的surface上。
C、让渲染器在独立的线程里运作,和UI线程分离。
D、可以直接从内存或者DMA等硬件接口取得图像数据
22.下面在AndroidManifest.xml文件中注册BroadcastReceiver方式正确的是(a)
A、
android:name=”android.provider.action.NewBroad“/>
B、
android:name=”android.provider.action.NewBroad”/>
C、
android:name=”android.provider.action.NewBroad“/>
D、
android:name=”android.provider.action.NewBroad”/>
23.关于ContenValues类说法正确的是(a)
A、他和Hashtable比较类似,也是负责存储一些名值对,但是他存储的名值对当中的
名是String类型,而值都是基本类型
B、他和Hashtable比较类似,也是负责存储一些名值对,但是他存储的名值对当中的
名是任意类型,而值都是基本类型
C、他和Hashtable比较类似,也是负责存储一些名值对,但是他存储的名值对当中的
名,可以为空,而值都是String类型
D、他和Hashtable比较类似,也是负责存储一些名值对,但是他存储的名值对当中
的名是String类型,而值也是String类型
24.我们都知道Hanlder是线程与Activity通信的桥梁,如果线程处理不当,你的机器
就会变得越慢,那么线程销毁的方法是(a)
A、onDestroy()
B、onClear()
C、onFinish()
D、onStop()
25.下面退出Activity错误的方法是(c)
A、finish()
B、抛异常强制退出
C、System.exit()
D、onStop()
26.下面属于android的动画分类的有(ab)(多项)
A、Tween B、Frame C、Draw D、Animation
27.下面关于Android dvm的进程和Linux的进程,应用程序的进程说法正确的是(d)
A、DVM指dalivk的虚拟机.每一个Android应用程序都在它自己的进程中运行,不一定拥有一个独立
的Dalvik虚拟机实例.而每一个DVM都是在Linux 中的一个进程,所以说可以认为是同一个概念.
B、DVM指dalivk的虚拟机.每一个Android应用程序都在它自己的进程中运行,不一定拥有一个独立
的Dalvik虚拟机实例.而每一个DVM不一定都是在Linux 中的一个进程,所以说不是一个概念.
C、DVM指dalivk的虚拟机.每一个Android应用程序都在它自己的进程中运行,都拥有一个独立的
Dalvik虚拟机实例.而每一个DVM不一定都是在Linux 中的一个进程,所以说不是一个概念.
D、DVM指dalivk的虚拟机.每一个Android应用程序都在它自己的进程中运行,都拥有一个独立的
Dalvik虚拟机实例.而每一个DVM都是在Linux 中的一个进程,所以说可以认为是同一个概念.
28.Android项目工程下面的assets目录的作用是什么b
A、放置应用到的图片资源。
B、主要放置多媒体等数据文件
C、放置字符串,颜色,数组等常量数据
D、放置一些与UI相应的布局文件,都是xml文件
29..关于res/raw目录说法正确的是(a
A、 这里的文件是原封不动的存储到设备上不会转换为二进制的格式
B、 这里的文件是原封不动的存储到设备上会转换为二进制的格式
C、 这里的文件最终以二进制的格式存储到指定的包中
D、 这里的文件最终不会以二进制的格式存储到指定的包中
30.下列对android NDK的理解正确的是(abcd )
A、 NDK是一系列工具的集合
B、 NDK 提供了一份稳定、功能有限的 API 头文件声明。
C、 使 “Java+C” 的开发方式终于转正,成为官方支持的开发方式
D、 NDK 将是 Android平台支持 C 开发的开端
二.填空题(每题2分,共20分)
1.我们用___int____来定义一个整数,用___char____来定义一个字符类型,称为原始数据类型。
2.android中常用的四个布局是framlayout,linenarlayout,relativelayout和tablelayout。
3.android 的四大组件是activiey,service,broadcast和contentprovide。
4.java.io包中的objectinputstream和objectoutputstream类主要用于对对象(Object)的读写。
5.android 中service的实现方法是:startservice和bindservice。
6.activity一般会重载7个方法用来维护其生命周期,除了onCreate(),onStart(),onDestory() 外还有onrestart,onresume,onpause,onstop。
7.android的数据存储的方式sharedpreference,文件,SQlite,contentprovider,网络。
8.当启动一个Activity并且新的Activity执行完后需要返回到启动它的Activity来执行
的回调函数是startActivityResult()。
9.请使用命令行的方式创建一个名字为myAvd,sdk版本为2.2,sd卡是在d盘的根目录下,
名字为scard.img, 并指定屏幕大小HVGA.____________________________________。
10.程序运行的结果是:_____good and gbc__________。
public class Example{
String str=new String(“good”);
char[]ch={‘a’,b’,c’};
public static void main(String args[]){
Example ex=new Example();
ex.change(ex.str,ex.ch);
System.out.print(ex.str+” and “);
Sytem.out.print(ex.ch);
}
public void change(String str,char ch[]){
str=”test ok”;
ch[0]=’g;
}
}
三 简答编程题(共35分)
1.在android中,请简述jni的调用过程。(8分)
1)安装和下载Cygwin,下载 Android NDK
2)在ndk项目中JNI接口的设计
3)使用C/C++实现本地方法
4)JNI生成动态链接库.so文件
5)将动态链接库复制到java工程,在java工程中调用,运行java工程即可
2.简述Android应用程序结构是哪些?(7分)
Android应用程序结构是:
Linux Kernel(Linux内核)、Libraries(系统运行库或者是c/c++核心库)、Application
Framework(开发框架包)、Applications (核心应用程序)
3. 请继承SQLiteOpenHelper实现:(10分)
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);
}
}
4.页面上现有ProgressBar控件progressBar,请用书写线程以10秒的的时间完成其进度
显示工作。(10分)
答案
public class ProgressBarStu extends Activity {
private ProgressBar progressBar = null;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.progressbar);
//从这到下是关键
progressBar = (ProgressBar)findViewById(R.id.progressBar);
Thread thread = new Thread(new Runnable() {
@Override
public void run() {
int progressBarMax = progressBar.getMax();
try {
while(progressBarMax!=progressBar.getProgress())
{
int stepProgress = progressBarMax/10;
int currentprogress = progressBar.getProgress();
progressBar.setProgress(currentprogress+stepProgress);
Thread.sleep(1000);
}
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
});
thread.start();
//关键结束
}
}
答案:
一、选择题
1 2 3 4 5 6 7 8 9 10
CG B D B A D B ABCD C B
11 12 13 14 15 16 17 18 19 20
D ABCD C B A AC C D AB AD
21 22 23 24 25 26 27 28 29 30
ABC A A A C AB D B A ABCD
二、填空题
1. int char
2.FrameLayout,LilnearLayout,RelativeLayout,TableLayout
3.Activity,Broadcast,Service,ContentProvide
4.ObjectInputStream ObjectOutputSteam
5.startService ,bindService
6.onRestart(),onResume(),onPause(),onStop()
7.SharedPreferences存储,文件存储,SQLite存储,ContentProvider,网络存储
8.startActivityResult()
9.adnroid create acd -n myAvd -t 8 -s HVDA – C d:card.img
答: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文件加载到内存中去,该方法在查找方面可以和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条。
6、 请介绍下Android的数据存储方式。
答:使用SharedPreferences存储数据;文件存储数据;SQLite数据库存储数据;使用ContentProvider存储数据;网络存储数据;
Preference,File, DataBase这三种方式分别对应的目录是/data/data/Package Name/Shared_Pref, /data/data/Package Name/files, /data/data/Package Name/database 。
一:使用SharedPreferences存储数据
首先说明SharedPreferences存储方式,它是 Android提供的用来存储一些简单配置信息的一种机制,例如:登录用户的用户名与密码。其采用了Map数据结构来存储数据,以键值的方式存储,可以简单的读取与写入,具体实例如下:
void ReadSharedPreferences(){
String strName,strPassword;
SharedPreferences user = getSharedPreferences(“user_info”,0);
strName = user.getString(“NAME”,””);
strPassword = user getString(“PASSWORD”,””);
}
void WriteSharedPreferences(String strName,String strPassword){
SharedPreferences user = getSharedPreferences(“user_info”,0);
uer.edit();
user.putString(“NAME”, strName);
user.putString(“PASSWORD” ,strPassword);
user.commit();
}
数据读取与写入的方法都非常简单,只是在写入的时候有些区别:先调用edit()使其处于编辑状态,然后才能修改数据,最后使用commit()提交修改的数据。实际上SharedPreferences是采用了XML格式将数据存储到设备中,在DDMS中的File Explorer中的/data/data//shares_prefs下。使用SharedPreferences是有些限制的:只能在同一个包内使用,不能在不同的包之间使用。
二:文件存储数据
文件存储方式是一种较常用的方法,在Android中读取/写入文件的方法,与 Java中实现I/O的程序是完全一样的,提供了openFileInput()和openFileOutput()方法来读取设备上的文件。具体实例如下:
String fn = “moandroid.log”;
FileInputStream fis = openFileInput(fn);
FileOutputStream fos = openFileOutput(fn,Context.MODE_PRIVATE);
三:网络存储数据
网络存储方式,需要与Android 网络数据包打交道,关于Android 网络数据包的详细说明,请阅读Android SDK引用了Java SDK的哪些package?。
四:ContentProvider
1、ContentProvider简介
当应用继承ContentProvider类,并重写该类用于提供数据和存储数据的方法,就可以向其他应用共享其数据。虽然使用其他方法也可以对外共享数据,但数据访问方式会因数据存储的方式而不同,如:采用文件方式对外共享数据,需要进行文件操作读写数据;采用sharedpreferences共享数据,需要使用sharedpreferences API读写数据。而使用ContentProvider共享数据的好处是统一了数据访问方式。
2、Uri类简介
Uri代表了要操作的数据,Uri主要包含了两部分信息:1.需要操作的ContentProvider ,2.对ContentProvider中的什么数据进行操作,一个Uri由以下几部分组成:
1.scheme:ContentProvider(内容提供者)的scheme已经由Android所规定为:content://…
2.主机名(或Authority):用于唯一标识这个ContentProvider,外部调用者可以根据这个标识来找到它。
3.路径(path):可以用来表示我们要操作的数据,路径的构建应根据业务而定,如下:
要操作contact表中id为10的记录,可以构建这样的路径:/contact/10
要操作contact表中id为10的记录的name字段, contact/10/name
要操作contact表中的所有记录,可以构建这样的路径:/contact?
要操作的数据不一定来自数据库,也可以是文件等他存储方式,如下:
要操作xml文件中contact节点下的name节点,可以构建这样的路径:/contact/name
如果要把一个字符串转换成Uri,可以使用Uri类中的parse()方法,如下:
Uri uri = Uri.parse(“content://com.changcheng.provider.contactprovider/contact”)
3、UriMatcher、ContentUrist和ContentResolver简介
因为Uri代表了要操作的数据,所以我们很经常需要解析Uri,并从 Uri中获取数据。Android系统提供了两个用于操作Uri的工具类,分别为UriMatcher 和ContentUris 。掌握它们的使用,会便于我们的开发工作。
UriMatcher:用于匹配Uri,它的用法如下:
1.首先把你需要匹配Uri路径全部给注册上,如下:
//常量UriMatcher.NO_MATCH表示不匹配任何路径的返回码(-1)。
UriMatcher uriMatcher = new UriMatcher(UriMatcher.NO_MATCH);
//如果match()方法匹配content://com.changcheng.sqlite.provider.contactprovider /contact路径,返回匹配码为1
uriMatcher.addURI(“com.changcheng.sqlite.provider.contactprovider”, “contact”, 1);//添加需要匹配uri,如果匹配就会返回匹配码
//如果match()方法匹配 content://com.changcheng.sqlite.provider.contactprovider/contact/230路径,返回匹配码为2
uriMatcher.addURI(“com.changcheng.sqlite.provider.contactprovider”, “contact/#”, 2);//#号为通配符
2.注册完需要匹配的Uri后,就可以使用uriMatcher.match(uri)方法对输入的Uri进行匹配,如果匹配就返回匹配码,匹配码是调用 addURI()方法传入的第三个参数,假设匹配 content://com.changcheng.sqlite.provider.contactprovider/contact路径,返回的匹配码为1。
ContentUris:用于获取Uri路径后面的ID部分,它有两个比较
1心肌重量的增长超过心脏交感神经元轴突的增长,使单位重量心肌的交感神经分布密度下降,肥大心肌NE合成减少,消耗增多,含量减少,导致心肌收缩力减弱。2心肌线粒体数目不能随心肌细胞体积成比例增长,肥大心肌线粒体呼吸功能受抑制,ATP生成不足。3肥大心肌毛细血管数量不足或心肌微循环灌注不良处于缺血缺氧状态。4肥大心肌肌球蛋白ATP酶活性下降,心肌能量利用障碍。5肥大心肌的肌浆网Ca2+处理功能障碍,肌浆网Ca2+释放量减少,以及胞外Ca2+内流减少。
心脏本身代偿反应:1心率加快2心脏紧张源性扩张3心肌收缩性增强4心室重塑
试述心肌梗死引起心力衰竭的机制:①收缩相关蛋白破坏,包括坏死与凋亡;②能量代谢紊乱,包括天生障碍和利用障碍;③兴奋-收缩耦联障碍,包括肌浆网对Ca2+摄取、储存、开释障碍,胞外Ca2+内流障碍和肌钙蛋白与Ca2+结合障碍;④心室功能异常,包括Ca2+复位延缓,肌球-肌动蛋白复合体解离障碍,心室舒张势能减少。
三种呼吸困难类型机制1劳力性呼吸困难①体力活动时机体需氧增加,但衰竭的左心不能提供与之相适应的心输出量,机体缺氧加剧,CO:储留,刺激呼吸中枢产生“气急”的症状。②体力活动时,心率加快,舒张期缩短,一方面冠脉灌注不足,加剧心肌缺氧,另一方面左室充盈减少加重肺淤血。③体力活动时,回心血量增多,肺淤血加重,肺顺应性降低,通气作功增大,病人感到呼吸困难。端坐呼吸①端坐位时,下肢血液回流减少,肺淤血减轻②膈肌下移,胸腔容积增大,肺活量增加,同期改善③端坐位可减少下肢水肿液的吸收,使血容量降低,减轻肺淤血3.夜间阵发呼吸困难:①病人平卧后,胸腔容积减少,不利于通气。②入睡后,迷走神经相对兴奋,使支气管收缩,气道阻力增大。③入睡后由于中枢神经系统处于相对抑制状态,反射的敏感性降低,只有当肺淤血使PaO.下降到一定程度时,才刺激呼吸中枢,使通气增强,病人也随之被惊醒,并感到气促。若发作时伴有哮鸣音,则称为心性哮喘(cardiacasthma)。
简述心衰时心率加快的机制及意义。心率加快是心功能不全时机体的一种快速代偿反应,启动这种代偿反应的机制是:①当心输出量减少引起动脉血压下降,颈动脉窦和主动脉弓上的压力感受器的传进冲动减少,反射性引起心迷走神经紧张性减弱和心交感神经紧张性增强,心率加快;②心功能不全时心房淤血,刺激“容量感受器”,引起交感神经兴奋,心率加快。试述心功能不全时心脏的代偿反应。
心脏代偿反应有:①心率加快;②心脏扩张,包括紧张源性扩张和肌源性扩张;③心肌肥大,包括向心性肥大和离心性肥大。
试述革兰氏阴性细菌感染休克病人发生DIC的机制: 1内毒素损伤内皮细胞,使其下面带负电荷的基底膜胶原暴露,激活凝血因子Ⅻ,启动内源性凝血系统。2组织损伤,暴露TF或者表达TF,启动外源性凝血系统。3内皮细胞受损后,暴露胶原,血小板膜糖蛋白与胶原结合,使血小板产生黏附作用,同时胶原可激活粘附的血小板。4内毒素封闭促使DIC发生。5休克引起肝功能障碍,促进DIC发生。6休克时微循环障碍,促进DIC发生。7休克时机体代谢性酸中毒,损伤血管内皮细胞,促使DIC发生 试述DIC的发病机制。
1组织严重破坏,使大量组织因子入血,启动外源性凝血系统,导致DIC的发生发展。2血管内皮细胞广泛损伤,激活XII因子,启动内源性凝血系统;同时激活激肽释放酶,激活纤溶和补体系统,导致DIC。3血细胞大量破坏,血小板被激活,导致DIC。4胰蛋白酶、蛇毒等促凝物质进入血液,也可导致DIC。
简述急性DIC导致休克的机制。1出血使循环血量减少2广泛微血栓形成导致回心血量减少3ⅩⅡ因子活化可激活激肽和补体系统,导致外周阻力降低和血浆外渗4FDP可增加血管通透性和使小血管扩张5心肌缺血缺氧而引起心输出量减少 代谢性酸中毒对心血管系统的影响:
1室性心律失常:代谢性酸中毒时出现的室性心律失常与血钾升高密切相关。2心肌收缩力减弱:⑴氢离子可竞争性的抑制钙离子与肌钙蛋白钙结合亚单位的结合,影响兴奋收缩耦联⑵氢离子影响钙离子内流⑶氢离子影响心肌细胞肌浆网释放钙离子。3血管系统对儿茶酚胺的反应性降低。
肺源性心脏病的发病机制:1肺动脉高压⑴缺氧,二氧化碳驻留所导致氢离子浓度升高,引起肺小动脉收缩⑵肺血管壁增厚⑶红细胞增多⑷肺小动脉炎,肺毛细血管床破坏,肺栓塞2心肌受损:心肌缺氧,酸中毒,电解质紊乱导致心肌收缩性降低或舒张障碍。
试述休克早期微循环变化特点及代偿意义。
休克早期微血管包括微动脉、后微动脉、毛细血管前括约肌、微静脉等收缩,动-静脉短路可开放,其毛细血管床开放减少,血液灌流急剧减少,使组织缺血缺氧。主要由于交感-肾上腺髓质系统兴奋,大量儿茶酚胺开释,以及血管紧张素Ⅱ、加压素等其它多种缩血管物质增加引起。以上变化主要发生于腹腔内脏、皮肤与骨骼肌。
休克Ⅱ期微循环改变会产生什么后果?
进入休克Ⅱ期后,由于微循环血管床大量开放,血液滞留在肠、肝、肺等器官,导致有效循环血量锐减,转意血量减少,心输出量和血压进行性下降。
此期交感-肾上腺髓质系统更为兴奋,血液灌注量进行性下降,组织缺氧日趋严重,形成恶性循环。由于内脏毛细血管心流淤滞,毛细血管流体静压升高,自身输液停止,血浆外渗到组织间隙为。此外,由于组胺、激肽、前列腺素等引起毛细血管通透性增高,促进血浆外渗,引起血液浓缩,血细胞比容增大,血液粘滞度进一步升高,促进红细胞聚集,导致有效循环血量进一步减少,加重恶性循环。休克发展过程:一,代偿期:1血液重新分布2自身输血,是休克增加回心血量的第一道防线3自身输液,第二道防线;二,进展期:1酸中毒2局部输血管代谢产物增多3血液流变学的改变4内毒素的作用;三,难治期:血压进行性下降,脉搏塌陷,出现循环衰竭;毛细血管无复流;心脑肺肾等脏器出现障碍甚至衰竭。哪种类型脱水易造成失液性休克?为什么?
低容量性低钠血症(低渗性胶水)易引起失液性休克。1细胞外液汳透压降低,无口渴感,饮水减少。2细胞外液汳透压降低,ADH反射性分泌减少,尿量无明显减少。3细胞外液向细胞内液转移,细胞外液进一步减少。
多器官功能障碍综合征(MODS)最常见的病因是什么?其发病机制? MODS的病因;80%的MODS病人进院时有明显的休克。(1)感染性病因,如败血症和严重感染等,70%左右的MODS可由感染引起,特别是严重感染引起的败血症。(2)非感染性病因如大手术和严重创伤,大手术和严重创伤,无论有无感染存在均可发生MODS。
试述严重低钾血症引起呼吸衰竭的发病机制。
低钾血症对机体的主要影响是①膜电位异常引起神经肌肉的影响——骨骼肌的肌肉松弛无力甚至出现肌麻痹——导致呼吸肌收缩舒张功能障碍引起限制性通气不足导致肺通气功能障碍,即肺泡气与外界气体交换发生障碍②细胞代谢障碍引起的酸碱平衡紊乱——低钾血症时细胞外液钾离子浓度降低,细胞内钾离子顺浓度梯度向细胞外转移,同时细胞外氢离子向细胞内转移增多,即氢-钾交换;此时肾脏排氨(排氢离子)增多。二者诱发代谢性碱中毒——代谢性碱中毒时血液中PH↑、氢离子的浓度降低,它对呼吸系统产生抑制作用,呼吸变浅变慢,肺通气量下降导致肺泡通气不足,肺泡通气与血流比例失调,即比值下降V/A<0.8,造成功能性分流,引起肺换气功能障碍。综上所述,殊途同回引起PaO2降低,严重时可伴有PaCO2升高,不及时加以治疗低钾血症,终极导致呼吸衰竭。肺通气功能障碍1限制性通气不足2阻塞性通气不足3肺泡通气不足时的血气变化:肺泡气氧分压下降和肺泡气氧二氧化碳分压升高
肺换气功能障碍1弥散障碍2肺泡通气与血流比例失调3解剖分流增加 试述ARDS的发病机制。
ARDS(急性呼吸窘迫综合症)是由急性肺损伤引起的一种急性呼吸衰竭。
其机制是①由于肺泡——毛细血管膜的损伤及炎症介质的作用使肺泡上皮和毛细血管内皮通透性增高,引起渗透性肺水肿,至肺弥漫性功能障碍。②肺泡Ⅱ型上皮细胞损伤使表面活性物质天生减少,加上水肿液的稀释和肺泡过度通气消耗表面活性物质,是肺泡张力增高,肺的顺应性降低,形成肺不张。肺不张、肺水肿引起的气道阻塞,以及炎症介质引起的的支气管痉挛可导致肺内分流;肺内DIC及炎性介质引起的肺血管收缩,可导致死腔样通气。肺弥漫性功能障碍、肺内分流和死腔样通气均使PaO2降低,导致Ⅰ型呼吸衰竭。
极端严重者,由于肺部疾病广泛,肺总通气量减少,可发生Ⅱ型呼吸衰竭。低钾血症和高钾血症均可引起肌麻痹,其机制有何不同?请简述之。1低钾血症主要是由于超极化阻滞。低钾血症时[K+ ] /[K+ ]e 的比值增大,因而肌细胞静息电位负值大,静息电位与阈电位间隔增大,细胞兴奋性于是降低,严得时甚至不能兴奋,亦即细胞处于超极化阻滞状态。2高钾血症由于骨骼肌静息电位过小,因而快钠孔道失活,细胞外于往极化阻滞状态而不能被兴奋。试述慢性肾功能衰竭时肾性骨质营养不良的发病机制。
慢性肾功能衰竭常引起肾性骨营养不良,其发生机制是(1)钙磷代谢障碍和继发性甲状旁腺功能亢进:慢性肾功能患者由于高血磷导致血钙水平下降,后者刺激甲状旁腺功能亢进,分泌大量PTH致使骨质疏松;(2)维生素D代谢障碍:
肾天生1,25-二羟维生素D3减少,钙吸收减少;(3)长期酸中毒促进骨盐溶解,并干扰1,25-二羟维生素D3的合成。
急性肾衰的分类:肾前性急性肾功能肾衰,肾性急性肾功能衰竭,肾后性急性肾功能衰竭
急性肾功能衰竭发病机制:
1肾小球因素①肾血流减少(肾缺血)②肾小球病变2肾小管因素①肾小管阻塞②原尿回漏3肾细胞损伤及其机制①受损细胞有肾小管细胞,内皮细胞,系膜细胞②细胞损伤机制:ATP合成减少和离子泵失灵,自由基增多,还原型谷胱甘肽减少,磷脂酶活性增高,细胞骨架结构改变,细胞凋亡的激活 急性肾衰少尿期功能代谢变化
1尿变化:①少尿或无尿②低比重尿③尿钠高④血尿,蛋白尿,管型尿 2水中毒3高钾血症4代谢性酸中毒5氮质血症 急性肾功能衰竭多尿的机制 ①肾小球滤过功能逐渐恢复;②肾间质水肿消退,肾小管阻塞解除;③新生的肾小管上皮细胞重吸收功能尚不完善 ;④少尿期中潴留在血中的尿素等代谢产物开始经肾小球大量滤出,从而引起渗透性利尿。试述肺性脑病的发病机制。
①呼吸衰竭 → 缺氧→ 脑组织能量代谢障碍,脑微血管通透性增加→ 脑水肿→颅内高压;②Ⅱ型呼衰有高碳酸血症,脂溶性CO2易通过血脑屏障,而HCO3-为水溶性,不易通过血脑屏障,这样导致脑内pH降低明显,同时可扩张脑血管加重脑水肿;③缺氧→代谢性酸中毒和CO2蓄积→呼吸性酸中毒,抑制三羧酸循环有关酶的活性,导致脑组织能量供给不足,更加重脑组织细胞的损伤和微血管通透性的增加;酸中毒可导致抑制性神经介质γ-氨基丁酸增多,从而引起一系列神经症状。
水中毒对机体的影响和防治
【android面试题摘要】推荐阅读:
android 高级面试题10-24
android面试题和答案09-21
android实习日记07-15
android商品管理07-19
Android 个人总结07-19
android实习总结11-07
天津理工大学android06-10
android开发工程师工作岗位职责说明07-09
笔试题面试题07-24
新党章试题100题06-30