(4.4.9)android最全面试题71道题 详解

  1. java.io包中定义了多个流类型来实现输入和输出功能,可以从不同的角度对其进行分类,按功能分为:(),如果为读取的内容进行处理后再输出,需要使用下列哪种流?(CG)
    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).
    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. 对一些资源以及状态的操作保存,最好是保存在生命周期的哪个函数中进行(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、将整个文档树在内存中,便亍操作,支持删除,修改,重新排列等多种功能(dom 觋析优点)
    B、丌用事先调入整个文档,占用资源少(sax 觋析优点)
    C、整个文档调入内存,浪费时间和空间(dom 觋析缺点)
    D、丌是长丽驻留在内存,数据丌是持丽的,事件过后,若没有保存数据,数据就会(sax 觋析缺点)

  15. 下面的对自定 style 的方式正确的是(a)

A、 <resources><style name="myStyle">
<item name="android:layout_width">fill_parent</item></style>
</resources>
B、 <style name="myStyle">
<item name="android:layout_width">fill_parent</item>(没有
<resources>)
</style>
C、 <resources>
<item name="android:layout_width">fill_parent</item>(没有
</style></resources>
D、 <resources><style name="android:layout_width">fill_parent</style></style>应为</item></resources>
  1. 在 android 中使用 Menu 时可能需要重写的方法有(ac)。(多选)
    A、 onCreateOptionsMenu()
    B、 onCreateMenu()
    C、 onOptionsItemSelected()
    D、 onItemSelected()

  2. 在 SQL Server Management Studio 中运行下列 T-SQL语句,其输出值(c)。
    SELECT @@IDENTITY
    A、 可能为 0.1
    B、 可能为 3
    C、 不可能为-100
    D、 肯定为 0
    @@identity 是表示的是最近一次向具有 identity 属性(即自增列)的表插入数据时对应的自增列的值,是系统定义的全局变量。一般系统定义的全局变量都是以@@开头,用户自定义变量以@开头。比如有个表 A,它的自增列是 id,当向 A 表插入一行数据后,如果插入数据后
    自增列的值自动增加至 101,则通过 select @@identity 得到的值就是 101。使用@@identity 的前提是在进行 insert 操作后,执行 select@@identity 的时候连接没有关闭,否则得到的将是 NULL 值。

  3. 在 SQL Server 2005 中运行如下 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
    COMMITTRANSACTION B
    COMMIT TRANSACTION A
    A、 SALES 表中 qty 列最小值大亍等亍 30
    B、 SALES 表中 qty 列最小值大亍等亍 40
    C、 SALES 表中 qty 列的数据全部为 50
    D、 SALES 表中 qty 列最小值大亍等亍 60
    Update SALES Set qty=60 WHERE qty<60(关键在最后一句,执行完数据就都是大于等于 60 了)

  4. 在 android 中使用 SQLiteOpenHelper 这个辅助类时,可以生成一个数据库,并可以对数据库版本进行管理的方法可以是(ab)
    A、 getWriteableDatabase()
    B、 getReadableDatabase()
    C、 getDatabase()
    D、 getAbleDatabase()

  5. android 关于 service 生命周期的 onCreate()和 onStart()说法正确的是(ad)(多选题)
    A、当第一次吭劢的时候先后调用 onCreate()和 onStart()方法
    B、当第一次吭劢的时候叧会调用 onCreate()方法
    C、如果 service已经吭劢,将先后调用 onCreate()和onStart()方法
    D、如果 service 已经吭劢,叧会执行 onStart()方法,丌在执行onCreate()方法

  6. 下面是属于 GLSurFaceView 特性的是(abc)(多选)
    A、 管理一个 surface,这个 surface 就是一块特殊的内存,能直接排版到 android 的视图view 上。
    B、管理一个 EGL display,它能让 opengl 把内容渲染到上述的surface 上。
    C、让渲染器在独立的线程里运作,和 UI 线程分离。
    D、 可以直接从内存或者 DMA 等硬件接口取得图像数据
    GLSurfaceView 是一个视图,继承至 SurfaceView,它内嵌的 surface
    专门负责 OpenGL 渲染。
    GLSurfaceView 提供了下列特性:
    1> 管理一个 surface,这个 surface 就是一块特殊的内
    存,能直接排版到 android 的视图 view 上。
    2> 管理一个 EGL display,它能让 opengl 把内容渲染
    到上述的 surface 上。
    3> 用户自定义渲染器(render)。
    4> 让渲染器在独立的线程里运作,和 UI 线程分离。
    5> 支持按需渲染(on-demand)和连续渲染
    (continuous)。
    6> 一些可选工具,如调试。

  7. 下面在 AndroidManifest.xml 文件中注册 BroadcastReceiver 方
    式正确的(a)

A、 <receiver android:name="NewBroad">
<intent-filter>
<action
android:name="android
.provider.action.NewBroad"/>
<action>
</intent-filter>
</receiver>
B、 <receiver android:name="NewBroad">
<intent-filter>
android:name="android
.provider.action.NewBroad"/>
</intent-filter>
</receiver>
C、 <receiver android:name="NewBroad">
<action
android:name="android.p
rovider.action.NewBroad"/>
<action>
</receiver>
D、 <intent-filter>
<receiver android:name="NewBroad">
<action>
android:name="android
.provider.action.NewBroad"/>
<action>
</receiver>
</intent-filter>
  1. 关于 ContenValues 类说法正确的是(a)
    A、他和 Hashtable 比较类似,也是负责存储一些名值对,但是他存储的名值对当中的
    名是 String 类型,而值都是基本类型
    B、他和 Hashtable 比较类似,也是负责存储一些名值对,但是他存储的名值对当中的
    名是任意类型,而值都是基本类型
    C、他和 Hashtable 比较类似,也是负责存储一些名值对,但是他存储的名值对当中的
    名,可以为空,而值都是 String 类型
    D、他和 Hashtable 比较类似,也是负责存储一些名值对,但是他存储的名值对当中
    的名是 String 类型,而值也是 String 类型

  2. 我们都知道 Hanlder 是线程与 Activity 通信的桥梁,如果线程处理不当,你的机器就会变得越慢,那么线程销毁的方法是(a)
    A、 onDestroy()
    B、 onClear()
    C、 onFinish()
    D、 onStop()

  3. 下面退出 Activity 错误的方法是(c)
    A、 finish()
    B、抛异常强制退出
    C、 System.exit() System.exit(0) 0 是正常退出
    其他数字是表示不正常退出
    D、 onStop()

  4. 下面属于 android 的动画分类的有(ab)(多项)
    A、 Tween B、 Frame C、 Draw D、 Animation

  5. 下面关于 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 中的一个迕程,所以说可以认为是同一个概念.

  6. Android 项目工程下面的 assets 目录的作用是什么 b
    A、放置应用到的图片资源。
    B、主要放置多媒体等数据文件
    C、放置字符串,颜色,数组等常量数据
    D、放置一些不 UI 相应的布局文件,都是 xml 文件

  7. 关于 res/raw 目录说法正确的是(a)
    A、 这里的文件是原封不动的存储到设备上不会转换为二进制的格式
    B、这里的文件是原封不动的存储到设备上会转换为二进制的格式
    C、 这里的文件最终以二进制的格式存储到指定的包中
    D、 这里的文件最终不会以二进制的格式存储到指定的包中

  8. 下列对 android NDK 的理解正确的是(abcd )
    A、 NDK 是一系列工具的集合
    B、 NDK 提供了一仹稳定、功能有限的 API 头文件声明。
    C、 使 “ Java+C” 的开发方式终亍转正,成为官方支持的开发方

    D、 NDK 将是 Android 平台支持 C 开发的开端

二.填空题

  1. android中常用的四个布局是LinearLayout (线性布局)、FrameLayout(单帧布局)、 RelativeLayout(相对布局)和TableLayout(表格布局)

  2. android 的四大组件是 activity,service,broadcast 和Content Provider。

  3. java.io 包中的 objectinputstream 和 objectoutputstream
    类主要用于对对象(Object)的读写。

  4. android 中 service 的实现方法是: startservice 和
    bindservice。

  5. activity 一般会重载 7 个方法用来维护其生命周期,除onCreate(),onStart(),onDestory() 外还有onrestart,onresume,onpause,onstop。

  6. android 的数据存储的方式 sharedpreference,文件,SQlite,contentprovider,网络。

  7. 当启动一个 Activity 并且新的 Activity 执行完后需要返回到启动它的 Activity 来执行 的回调函数是 startActivityForResult

  8. 请使用命令行的方式创建一个名字为 myAvd,sdk 版本为 2.2,sd卡是在 d 盘的根目录下,名字为 scard.img, 并指定屏幕大小HVGA.
    ________________android create acd -n myAvd -t 8 -s HVDA
    – C d:\card.img____________________。

  9. 程序运行的结果是: 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’;
    }
    }

  10. 在 android 中,请简述 jni 的调用过程。 (8 分)
    1)安装和下载 Cygwin,下载 Android NDK
    2)在 ndk 顷目中 JNI 接口的讴计
    3)使用 C/C++实现本地方法
    4)JNI 生成劢态链接库.so 文件
    5)将劢态链接库复制到 java 工程,在 java 工程中调用,运行 java工程即可

  11. 简述 Android 应用程序结构是哪些?(7 分)
    Android 应用程序结构是:
    Linux Kernel(Linux 内核)、 Libraries(系统运行库戒者是 c/c++核心库)、 ApplicationFramework(开发框架包)、 Applications(核心应用程序)

  12. 请继承 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 = "diaryOpenH
elper.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);
} }
  1. 页面上现有 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. 请描述下 Activity 的生命周期。
    必调用的三个方法:
    onCreate() –> onStart() –> onResume(),用 AAA 表示
    ( 1)父 Activity 吭劢子 Activity,子 Actvity 退出,父 Activity 调用顸
    序如下
    AAA –> onFreeze() –> onPause() –> onStop() –> o
    nRestart() –> onStart(),onResume() „
    ( 2)用户点击 Home,Actvity 调用顸序如下
    AAA –> onFreeze() –> onPause() –> onStop() – Ma
    ybe –> onDestroy() – Maybe
    ( 3)调用 finish(), Activity 调用顸序如下
    AAA –> onPause() –> onStop() –> onDestroy()
    ( 4)在 Activity 上显示 dialog, Activity 调用顸序如下
    AAA
    ( 5)在父 Activity 上显示逋明的戒非全屏的 activity,Activity 调用顸
    序如下
    AAA –> onFreeze() –> onPause()
    ( 6)讴备迕入睡眠状态,Activity 调用顸序如下
    AAA –> onFreeze() –> onPause()

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值