Android专项面试训练题(一)
1、下面不可以退出Activity的是?(D)
A、finish()
B、抛异常强制退出
C、System.exit(0)
D、onStop()
解析:
A、A
B、B
C、AB
3、下面关于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 中的一个进程,所以说可以认为是同一个概念.
解析:
- Zygote进程调用fork()函数创建出Zygote\' 子进程,
- 子进程Zygote\' 共享父进程Zygote的代码区与连接信息。
Android进程模型
Linux通过调用start_kernel函数来启动内核,当内核启动模块启动完成后,将启动用户空间的第一个进程——Init进程,下图为Android系统的进程模型图:
从上图可以看出,Linux内核在启动过程中,创建一个名为Kthreadd的内核进程,PID=2,用于创建内核空间的其他进程;同时创建第一个用户空间Init进程,该进程PID = 1,用于启动一些本地进程,比如Zygote进程,而Zygote进程也是一个专门用于孵化Java进程的本地进程,上图清晰地描述了整个Android系统的进程模型
4、使用Toast提示时,关于提示时长,下面说法正确的是( A ).
A、显示时长默认只有2种设置
B、可以自定义显示时长
C、传入30时,提示会显示30秒钟
D、当自定义显示时长时,比如传入30,程序会抛出异常
解析:
5、Intent传递数据时,下列的数据类型不可以被传递的是( D )
A、Serializable
B、File
C、Parcelable
D、Thread
解析:
Serializable :将 Java 对象序列化为二进制文件的 Java 序列化技术是 Java系列技术中一个较为重要的技术点,在大部分情况下,开发人员只需要了解被序列化的类需要实现 Serializable 接口,使用ObjectInputStream 和 ObjectOutputStream 进行对象的读写。
Parcelable :
android提供了一种新的类型:Parcel。本类被用作封装数据的容器,封装后的数据可以通过Intent或IPC传递。 除了基本类型以
外,只有实现了Parcelable接口的类才能被放入Parcel中。
是GOOGLE在安卓中实现的另一种序列化,功能和Serializable相似,主要是序列化的方式不同
Intent 传递的数据必须能够被序列化,凡是能被序列化的数据都能采用Intent传递
6、当 Activity 被消毁时,如何保存它原来的状态( A )
A、实现 Activity 的 onSaveInstanceState()方法
B、实现 Activity 的 onSaveInstance()方法
C、实现 Activity 的 onInstanceState()方法
D、实现 Activity 的 onSaveState()方法
解析:
onSaveInstanceState()
当你的程序中某一个Activity A在运行时,主动或被动地运行另一个新的Activity B,这个时候A会执行onSaveInstanceState()。B完成以后又会来找A,这个时候就有两种情况:一是A被回收,二是A没有被回收,被回收的A就要重新调用onCreate()方法,不同于直接启动的是这回onCreate()里是带上了参数savedInstanceState;而没被收回的就直接执行onResume(),跳过onCreate()了。
7、关于ServiceConnection接口的onServiceConnected()方法的触发条件描述正确的是?( B )
A、bindService()方法执行成功后
B、bindService()方法执行成功同时onBind()方法返回非空IBinder对象
C、Service的onCreate()方法和onBind()方法执行成功后
D、Service的onCreate()和onStartCommand()方法启动成功后
解析:
bindService是异步调用和Service进行绑定, 如果绑定成功, 则会调用ServiceConnection的onServiceConnected
当调用bindService方法后就会回调Activity的onServiceConnected,在这个方法中会向Activity中传递一个IBinder的实例,Acitity需要保存这个实例
8、Android系统对下列哪些对象提供了资源池 ( AC )
A、Message
B、Thread
C、AsyncTask
D、Looper
解析:
9、下列对android NDK的理解正确的是( ABCD )
A、NDK是一系列工具的集合
B、NDK 提供了一份稳定、功能有限的 API 头文件声明
C、使 “Java+C” 的开发方式终于转正,成为官方支持的开发方式
D、NDK 将是 Android 平台支持 C 开发的开端
10、下面是属于GLSurFaceView特性的是?( ABC )
A、管理一个surface,这个surface就是一块特殊的内存,能直接排版到android的视图view上。
B、管理一个EGL display,它能让opengl把内容渲染到上述的surface上。
C、让渲染器在独立的线程里运作,和UI线程分离。
D、可以直接从内存或者DMA等硬件接口取得图像数据
解析:
一个GLSurfaceView类 , 具有以下特点 :
1.管理一个平面, 这个平面是一个特殊的内存块 , 它可以和 android 视图系统混合 .
2.管理一个EGL 显示 , 它能够让 OpenGL 渲染到一个平面 .
3.接受一个用户提供的实际显示的Renderer 对象 .
4.使用一个专用线程去渲染从而和UI 线程解耦 .
5.支持on-demand 和连续的渲染.
6.可选的包, 追踪 和 / 或者错误检查这个渲染器的 OpenGL 调用 .