android笔试题二,android笔试题一

 

1、android系统架构:

1.Android DVM(Dalvik VM)的经过和Linux的经过, 应用程序的经过是同八个概念呢?

Linux内核——标准库——Framework层——应用层

DVM(Dalvik VM)指dalvik的虚构机。每三个Android应用程序都在它自个儿的长河中运转,都拥有三个独自的Dalvik虚构机实例。而每多少个DVM都是在Linux 中的三个进度,所以说能够感觉是同五个概念。运转在友好的DVM进度之中,不相同的app不会互相忧虑,且不会因为贰个DVM的夭亡导致全体的app进程都完蛋。

Linux层包蕴:Android系统的主导服务,硬件驱动,进度管理,系统安全等等

Android 运转景况重要指的虚构机技巧——Dalvik。Android中的全部Java程序都以运营在Dalvik VM上的。Android上的种种程序都有谈得来的线程,DVM只试行.dex的Dalvik executable 文件。各个Android应用在尾巴部分都对应当三个独自的DVM实例并在其表达下实践。

(今后又加了一层产生了:Linux内核——硬件抽象层——标准库——Framework层——应用层)

 

 

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

2、UI分界面框架图:

DVM:Dalvik virtual machine 
JVM:Java virtual machine

图片 1

不同一:dvm施行的是.dex格式文件  jvm实践的是.class文件   Android程序编写翻译完事后生产.class文件,然后,dex工具会把.class文件管理成.dex文件,然后把能源文件和.dex文件等包裹成.apk文件。apk正是android package的情趣。 jvm施行的是.class文件。

3、View的度量情势:EXACTLY,AT_MOST,UNSPECIFIED。

分歧二:dvm是基于寄放器的设想机  而jvm试行是依照虚构栈的虚构机。贮存器存取速度比栈快的多,dvm能够依照硬件达成最大的优化,相比符合运动器具。

4、自定义View与ViewGroup的时候理应注意什么?

区分三:.class文件存在不菲的冗余音讯,dex工具会删除冗余音讯,并把持有的.class文件整合到.dex文件中。降低了I/O操作,提升了类的检索速度。

自定义ViewGroup的时候理应注意重写onLayout来支配子类展现的位置。

 

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?

一条短信是足以输入七十二个粤语字符(富含符号)的(斯洛伐克语为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("");   

         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就可以运营别的浏览器。

 

如若须要帮助wrap_content还要重写onMeasure()。

自定义View的时候,借使急需帮衬wrap_content,要求重写onMeasure().

5、自定义view的种类:

(1)、对已有的组件进行拓展

(2)、通过整合来促成新的控件

(3)、重写View来贯彻全新的控件

 

 6、达成滑动的法子:

(1)、通过layout方法。

(2)、通过LayoutParam来改造多少个view的岗位(必得有三个父布局手艺够拿走到零部件的LayoutParam)。

(3)、scrollTo,scrollBy方法。(移动的是组件里面包车型大巴内容,dx和dy要是是负数的话,那么内容往正方向移动,正数则往负方向移动)。

(4)、Scroller。

(5)、属性动画。

(6)、ViewDragHelper

(7)、offsetLeftAndRight()同有的时候候对左和右举办偏移。

             offsetTopAndBottom()同期对上和下进行偏移。

7、独立像素dp与px的折算:

android系统利用mdpi即密度值为160的显示器作为规范,在那么些显示屏上,1px=1pd,各种分辨直率接的折算比例为:

ldpi:mdpi:hdpi:xhdip:xxhdpi=3:4:6:8:12

 

8、SurfaceView与View的区别:

(1)、View首要用以主动立异的情状,而SurfaceView首要用于被动更新的情状,比如频仍地刷新。

(2)、View是在主线程中开展刷新的,而SurfaceView是透过二个子线程来刷新页面包车型地铁。

(3)、View在绘图的时候未有采取双缓冲机制,而SurfaceView在底层落成机制中就早就实现了双缓冲机制。

9、android的贵港机制:

(1)、第一道防线:代码安全体制——代码混淆proguard。

(2)、第二道防线:应用接入权限决定——AndroidMainifest文件权限申明、权限检查机制。

(3)、第三道防线:应用签字机制——数字证书(Android系统不会设置未有签定的APP)。

(4)、第四道防线:Linux内核层安全部制——Uid访谈权限决定

(5)、第五道防线:Android虚构机沙箱机制——沙箱隔绝

 

10、质量优化相关的工具:

(1)、Android Link:有帮衬开掘代码中躲藏的片段标题,举个例子布局嵌套太多等等。

(2)、Memory monitor:那些是android studio自带的内部存款和储蓄器监视工具,它能够很好地拉拉扯扯大家开展内部存款和储蓄器实时剖判。

(3)、TraceView:优化APP性能。

(4)、MAT工具深入分析应用软件内存状态。

 

11、Serializable与Parcelable的区别:

Serializable是java中的体系化接口,使用简易,可是付出大,种类化与反体系化过程需求多量的I/O操作。

Parcelable是android中的种类化格局,特别适用于Android平台上,然而使用起来有点麻烦一点,可是功效高,那是android推荐的连串化方式,由此大家要首荐Parcelable。

Parcelable首要用于内部存款和储蓄器种类化上,通过将对象连串化到存款和储蓄设备中,或许讲对象体系化后透过网络传输也是能够的,不过经过相比复杂,因而这三种情状下将已利用Serializable。

 

12、多进程会导致怎么样难题:

(1)、静态成员与单例形式完全失效。

(2)、同步机制完全失效。

(3)、SharedPrefrences可信性减弱

(4)、Application数次开立

 

13、IPC的方法有哪些,差距是怎么:

名称 优点 缺点 适用场景
Bundle 简单易用 只能够传输Bundle支持的数据 四大组件之间的进程间通讯
文件共享 简单易用 不适合高并发场景,并且无法做到进程间的即时通信 无并发访问情形,简单交换的数据实时性不高的场景
AIDL 功能强大,支持一对多并发通信 使用稍微复杂,需要处理好线程同步 一对多通信且有RPC需求
Messenger

功能一般,支持一对多串行通信

支持实时通信

不能很高的处理高并发情形,不支持RPC,数据通过

Messenger进行传输,因此只能够传输Bundle支持

的数据类型

低并发的一对多即时通信,无RPC需求,或者无需返

回结果的RPC需求

ContentProvider

在数据源访问方面功能强大,支持一对多

并发数据共享,可通过Call方法拓展其他

操作

可以理解为受约束的AIDL,主要是提供数据源的

CRUD操作

一对多的进程间数据共享
Socket

功能强大,可以通过网络传输字节流,支

持一对多并发实时通信

实现细节稍微有点繁琐,不支持直接的RPC 网络数据交换

14、线程的三种状态:

(1)、新建:新制造了叁个线程对象。

(2)、就绪:线程对象创制后,别的线程(例如 main 线程)调用了该对象 的 start ()方法。该情状的线程位于可运营线程池中,等待被线程调解选中,获 取 cpu 的使用权 。

android笔试题二,android笔试题一。(3)、运行:可运转状态( runnable )的线程获得了 cpu 时间片( timeslice ) ,实施程序代码。

(4)、阻塞:

阻塞状态是指线程因为某种原因放弃了 cpu 使用权,也即让出了 cpu timeslice ,临时告一段落运作。直到线程走入可运行( runnable )状态,才有 时机再次得到 cpu timeslice 转到运行( running )状态。阻塞的情状分二种:

(一). 等待绿灯:运营( running )的线程实行 o . wait ()方法, JVM 会把该线程归入等待队列( waitting queue )中。

(二). 同步阻塞:运转( running )的线程在获取对象的一块锁时,若该联合锁 被其他线程占用,则 JVM 会把该线程放入锁池( lock pool )中。

(三). 别的阻塞: 运转( running )的线程实行 Thread . sleep ( long ms )或 t . join ()方法,或然产生了 I / O 需要时, JVM 会把该线程置为阻塞状态。            当 sleep ()状态超时、 join ()等待线程终止只怕逾期、只怕 I / O 处理达成时,线程重新转入可运转( runnable )状态。

(5)、驾鹤归西:线程 run ()、 main () 方法试行完成,大概因不胜退出了 run ()方法,则该线程甘休生命周期。离世的线程不可再度复生。

本文由明仕msyz手机版发布于宠物-蜂鸟摄影论坛,转载请注明出处:android笔试题二,android笔试题一

TAG标签:
Ctrl+D 将本页面保存为书签,全面了解最新资讯,方便快捷。