• android笔试题一


    1.Android DVM(Dalvik VM)的进程和Linux的进程, 应用程序的进程是同一个概念吗?

    DVM(Dalvik VM)指dalvik的虚拟机。每一个Android应用程序都在它自己的进程中运行,都拥有一个独立的Dalvik虚拟机实例。而每一个DVM都是在Linux 中的一个进程,所以说可以认为是同一个概念。运行在自己的DVM进程之中,不同的app不会相互干扰,且不会因为一个DVM的崩溃导致所有的app进程都崩溃。

    Android 运行环境主要指的虚拟机技术——Dalvik。Android中的所有Java程序都是运行在Dalvik VM上的。Android上的每个程序都有自己的线程,DVM只执行.dex的Dalvik executable 文件。每个Android应用在底层都对应有一个独立的DVM实例并在其解释下执行。

    2. Android中DVM与java中的JVM异同点:

    DVM:Dalvik virtual machine 
    JVM:Java virtual machine

    区别一:dvm执行的是.dex格式文件  jvm执行的是.class文件   Android程序编译完之后生产.class文件,然后,dex工具会把.class文件处理成.dex文件,然后把资源文件和.dex文件等打包成.apk文件。apk就是android package的意思。 jvm执行的是.class文件。

    区别二:dvm是基于寄存器的虚拟机  而jvm执行是基于虚拟栈的虚拟机。寄存器存取速度比栈快的多,dvm可以根据硬件实现最大的优化,比较适合移动设备。

    区别三:.class文件存在很多的冗余信息,dex工具会去除冗余信息,并把所有的.class文件整合到.dex文件中。减少了I/O操作,提高了类的查找速度。

     

    3.sim卡的EF文件有何作用?

    sim卡的EF文件就是Elementary File文件:基本文件。

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

    4.DDMS与TraceView的差别?

    DDMS是一个程序执行查看器,在里面可以看见线程和堆栈等信息,TraceView是程序性能分析器;

    DDMS 可用于  检测内存泄漏;

    TraceView 可跟踪代码的执行时间;

    5.Android数据存储方式有哪五种?

    ① 使用SharedPreferences存储数据 

    ② 文件存储数据

    ③  SQLite数据库存储数据

    ④ 使用ContentProvider存储数据

    ⑤ 网络存储数据 

    6.android一条短信息最长占多少 Byte

    一条短信是可以输入70个中文字符(包括符号)的(英文为160)。一个字符是2个字节(Byte)。一个字节是8位(bit).所以通用的计量是 一条短信可以输入70*2*8=1120 bit;

    7、Android系统属于实时操作系统吗?

    Android 操作系统用的内核是linux,而linux内核不属于实时操作系统范畴。 所以Android不是实时操作系统。

     

    8、Android程序在什么情况下会发生Force Close?如何避免,能否捕获其异常?

    抛出运行时异常时就会导致Force close,如空指针,数组越界等等。

    如何避免:在编写程序的时候,要做到思维缜密,在可能出现异常的地方都作相应的处理,增强程序的健壮性。

    捕获异常:可以通过在Logcat中查看代码抛出异常的位置,然后到程序相应位置进行更改。

     

    9、列举几种常见的RuntimeException

    NullPointerException - 空指针引用异常
    ClassCastException - 类型强制转换异常。
    IllegalArgumentException - 传递非法参数异常。
    ArithmeticException - 算术运算异常
    ArrayStoreException - 向数组中存放与声明类型不兼容对象异常
    IndexOutOfBoundsException - 下标越界异常
    NegativeArraySizeException - 创建一个大小为负数的数组错误异常
    NumberFormatException - 数字格式异常
    SecurityException - 安全异常
    UnsupportedOperationException - 不支持的操作异常

     10,简述JNI的调用过程?

    (1)、编写带有native方法声明的Java类;

    (2)、用“javac”命令来编译所编写的Java类;

    (3)、使用“javah”java类的名生成扩展名为h的头文件;

    (4)、赋值jni.h,jni_md.h文件到CPP工程;

    (5)、实现.h头文件中声明的函数;

    (6)、生成dll动态链接库;

    (7)、配置dll文件所在目录到环境变量;

    (8)、重启eclipse

    11、系统上安装了多种浏览器,能否指定某浏览器访问指定页面?请说明原由。

    在Android程序中我们可以通过发送显式Intent来启动指定的浏览器。

             Intent intent =newIntent();        
             intent.setAction("android.intent.action.VIEW");    
             Uri content_url =Uri.parse("http://www.163.com");   
             intent.setData(content_url);           
             intent.setClassName("com.android.browser","com.android.browser.BrowserActivity");   
             startActivity(intent);
    只要修改以intent.setClassName("com.android.browser","com.android.browser.BrowserActivity");
    中相应的应用程序packagename 和要启动的activity即可启动其他浏览器。

     

  • 相关阅读:
    手脱ASPack v2.12变形壳2
    手脱nSPack 2.1
    WCF分布式开发步步为赢(1):WCF分布式框架基础概念
    一个经典例子让你彻彻底底理解java回调机制
    C#三层架构详细解剖
    eclipse快捷键及各种设置
    设计模式总结
    程序猿也爱学英语(上)
    关于PDA、GPS等动态资源的几种GIS解决方案
    通过VS2010性能分析来查找代码中那些地方最损耗资源
  • 原文地址:https://www.cnblogs.com/tangZH/p/6980389.html
Copyright © 2020-2023  润新知