6.在Android中,在屏幕密度为160时,1pt大概等于(B)sp。
A.1.22
B.2.22
C.2.12
D.1.12
理解:在Android中,1pt大概等于2.22sp。
Android支持下列所有单位:
1)px (像素):屏幕上的点;
2)in(英寸):长度单位;
3)mm(毫米):长度单位;
4)pt(磅):1/72英寸
5)dp(与密度无关的像素):一种基于屏幕密度的抽象单位。java
在每英寸160点的显示器上,1dp=1px;
6)dip (同dp)
7)sp (与刻度无关的像素):与dp相似,但是可以依据用户字体大小首选项进行缩放。android
Apk的资源包中:
当屏幕density=240时。使用hdpi标签的资源。
当屏幕density=160时,使用mdpi标签的资源。
当屏幕density=120时。使用ldpi标签的资源;
(1)在屏幕密度为160时,1dp=1px=1dip, 1pt=160/72sp, 1pt=1/72英寸。
(2)当屏幕密度为240时,1dp=1dip=1.5px
7.经过Intent传递一些二进制数据的方法:
1)使用Serializable接口实现序列化,这是java常用的方法;
2)实现Parcelable接口,这里Android的部分分类比方Bitmap类已经实现了,同一时候Parcelable在Android AIDL中交换数据也非常常见。
8.如下属于Android的动画分类的有?(A B)
A. Tween
B. Frame
C. Draw
D. Animation
理解:Tween动画,可以使视图组件移动、缩放、旋转、透明度变化;
Frame动画:经过顺序的播放排列好的图片来实现,相似电影;
9.下列关于数据持久化的描写叙述正确的有:(BD)
A. 在内存中缓存多个Bitmap对象是一种数据持久化方法
B. SQLite数据库文件可以保存在SD卡中
C. ContentProvider的主要目的是为了将Android应用的数据持久化
D. 数据持久化就是将内存的数据保存到外存
10.将一个Activity设置成窗体样式,仅仅需要设置Theme就能够。
11.Intent传递数据时。下列的数据类型不可以被传递的是(D)
A. Serializable
B. File
C. Parcelable
D. Thread
12.Android DVM的进程和Linux的进程,下面说法错误的是(D)
A.它们都是进程的一种
B. dvm是Android的虚拟机
C. Linux的进程是程序的详细实现。是运行程序的过程
D. dvm中可以建立多个进程来处理应用间的同步问题
理解:每一个Android应用程序都在它本身的进程中执行。都拥有一个独立的Dalvik虚拟机实例,每一个DVM都是在Linux中的一个进程。git
13.Toast显示时长默认仅仅有2种,分别为Toast.LENGTH_LONG和Toast.LENGTH_SHORT.
分别为2s和3.5s。其它的值都是无效的。github
API文档尽管写的第三个參数是时间。但是Framework作了重定义,限定了2s和3.5s两个值。
14.下列哪些状况下,系统可能会弹出ANR对话框(ABC)
A.在Activity中,Main线程消息队列中的消息在5s内没有获得对应
B.在Service中,onStartCommand()方法运行超过5s
C.在BroadcastReceive中。onReceive()方法运行时间超过10s
D.在启动的新线程中。run()方法运行时间超过5s
理解:ANR:Application Not Responsing
1)UI线程堵塞时间超过5s会ANR。
2)Service属于主线程,耗时操做要开启子线程
3)在BroadcastReceive中,onReceive的生命周期为10s,因此里面的操做不能超过10s
15.在Android中使用Menu时可能需要重写的方法有(AC)
A. onCreateOptionsMenu()
B. onCreateMenu()
C. onOptionsItemSelected()
D. onItemSelected()
理解:一个是建立菜单的方法,一个是菜单项点击事件的方法。
16.下列关于IntentService与Service的关系描写叙述错误的是(CD)
A. IntentService是Service的子类
B. IntentService在执行时会启动新的线程来执行任务
C. 启动方式不一样
D.没有差异
理解:IntentService是继承Service的,包括了Service的全部特性,也包括了Service的生命周期,那么与Service不一样的是。IntentService在运行onCreate()操做时候,内部开了一个线程,去运行耗时操做。
IntentService和Service的启动方式一样。都是经过startService()方法。数据库
17.在多个应用中读取共享存储数据时,需要用到query()方法,这是哪一个对象的方法(A)
A. ContentResolver
B. ContentProvider
C. Cursor
D. SQLiteHelper
理解:ContentResolver和ContentProvider是一对。缓存
一个执行在提供数据端(provider),一个执行在调用端(resolver).使用的时候利用resolver(query,insert,update)来调用provider的方法。而后provider再进行数据查询。
18.关于ServiceConnection接口的onServiceConnected()方法的触发条件描写叙述正确的是(B)
A. bindService()方法运行成功后
B. bindService()方法运行成功同一时候onBInd()方法返回非空IBinder对象
C. Service的onCreate()方法和onBind()方法运行成功后
D. Service的onCreate()和onStartCommand()方法启动成功后
19.Android中使用SQLiteOpenHelper这个辅助类时。可以生成一个数据库,并可以对数据库版本号进行管理的方法可以是(AB)
A. getWriteableDatabase()
B. getReadableDatabase()
C. getDatabase()
D. getAbleDatabase()
20.下面关于Toast说法正确的是(BD)
A. Toast能编辑
B. Toast没有焦点
C. Toast可以得到用户输入
D. Toast仅仅能持续一段时间
理解:Toast可以由程序猿本身定义,但是用户是不能编辑的。用户也没法输入。并发
注意:可编辑和本身定义的概念是不一样的。
Toast和Dialog不一样,Toast是没有焦点的。
21.在一个ListView中。显示的布局有多种不一样的形式。好比某些行仅仅有ImageView,而另一些行仅仅有TextView.需要重写哪几个方法?(ABCD)
A. getCount()
B. getItemId()
C. getItemViewType()
D. getViewTypeCount()
22.前台进程(Foreground)最重要,一般最后被销毁
与用户当前正在作的事情密切相关。不一样的应用程序组件能够经过不一样的方法使它的宿主进程移到前台。当如下不论什么一个条件知足时,能够考虑将进程移到前台:
1)进程正在执行一个与用户交互的Activity,它的onResume()方法被调用
2)进程有一个Service,该Service相应的Activity正在与用户交互
3)进程有一个Service被调用startForeground()方法,要求到前台来运行
4)进程有一个Service,并且在Service的某个回调函数(onCreate(),onStart(),onDestroy())内有正在运行的代码
5)进程有一正在执行的BroadcastReceiver,它的onReceive()方法正在执行。
23.如下关于Android中定义style和theme的描写叙述正确的是(AD)
A.都可以下降反复属性设置
B. style可以做用在Activity上
C. theme可以继承
D. 一个TextView的style中定义了textColor属性。TextView自己也设置textColor属性。那么TextView自己定义的优先级较高。
理解:theme被final标记了。不能被继承;
24.下列对Android NDK的理解正确的是(ABCD)
A. NDK是一系列工具的集合
B. NDK提供了一份稳定、功能有限的API头文件声明
C. 使“java+C”的开发方式最终转正,成为官方支持的开发方式
D. NDK将是Android平台支持C开发的开端
25.如下那条语句可以构造正确的对话框(BC)
A. AlertDialog dialog = new AlertDialog(context)
B. AlertDialog.Builder builder = new AlertDialog.Builder(context)
C. ProgressDialog dialog = new ProgressDialog(context)
D. ProgressDialog.Builder builder = new ProgressDialog.Builder(context)
理解:AlertDialog的构造方法被声明为protected。因此不能直接使用new keyword来建立AlertDialog类的对象实例。要想建立AlertDialog对话框,需要使用Builder类,该类是AlertDialog类中定义的一个内嵌类。异步
所以必须建立AlertDialog.Builder类的对象实例。ide
26.下列哪些状况系统会弹出Force Close对话框(BC)
A. 应用执行时,Main线程进行了耗时操做
B. 应用执行时抛出了OutOfMemoryError
C. 应用执行时抛出了RuntimeException
D. 应用执行时。用户操做过于频繁
理解:注意区分ANR 和 Force Close。
A D会致使ANR。
27.Android中MVC模式C层指的是?(A)
A. Activity
B. Service
C. Content
D. Intent
理解:Android控制层的任务通常就是Activity来完毕。
视图层相应了Android中的View,也可以理解为布局或者控件。
28.RemoteView在哪些功能中使用?(BD)
A. Toast
B. AppWidget
C. ListView
D. Notification
29.关于BroadcastReceiver的说法不对的是(B)
A. 是用来接收广播Intent的
B. 一个广播Intent仅仅能被一个订阅了此广播的BroadcastReceiver所接收
C. 对有序广播,系统会依据接收者声明的优先级别按顺序逐个运行接收者
D. 接收者声明的优先级别在<intent-filter>的android:priority属性中声明,数值越大表示优先级越高。
30.Android系统对下列哪些对象提供了资源池(AC)
A. Message
B. Thread
C. Async Task
D. Looper
理解:
Message提供了消息池。有静态方法Obtain从消息池中取对象;
Thread默认不提供资源池,除非使用线程池ThreadPool管理;
AsyncTask是线程池改造的,默认提供最多5个线程进行并发操做;
Looper建立时建立一个消息队列和线程对象。也不是资源池;
31.Android中的R.java不可以手动改动。函数
理解:本身主动生成,没法改动。
改动后编译器也会本身主动改回去。
32.Android DVM的进程和Linux的进程。应用程序的进程是否为同一个概念? 【是】
理解:DVM指dalvik虚拟机,每个Android程序都有一个独立的dvm实例,每个Android应用程序都在他本身的进程中执行。
而一个dvm实例都是做为Linux的进程运行的。可以以为是一个概念。
补充:Dalvik是Google公司本身设计用于Android平台的java虚拟机。每一个Dalvik应用做为一个独立的Linux进程运行。独立的进程可以防止在虚拟机崩溃的时候所有程序都被关闭。
33.下列关于Android数字签名描写叙述错误的是:(C)
A.所有的应用程序都必须有数字证书。Android系统不会安装一个没有数字证书的应用程序
B.Android程序包使用的数字证书可以是自签名的,不需要一个权威的数字证书机构签名认证
C.假设要正式公布一个Android程序,可以使用集成开发工具生成的调试证书来公布
D.数字证书都是有有效期的。Android仅仅是在应用程序安装的时候才会检查证书的有效期。假设程序已经安装在系统中,即便证书过时也不会影响程序的正常功能。
理解:必须要使用一个合适的私钥生成的数字证书给程序签名,而不能使用adt插件或者ant工具生成的调试证书来公布。
因为集成工具生成的调试证书不是一个包括开发人员信息,取得开发人员受权的有效私有密钥。
34.Android中可以使用System.out.println(“ ”);在控制台显示想要的内容吗?【不能】
理解:使用System.out.println(“ ”);语句输出的内容也仅仅会出现在LogCat中。而不会出现在Console控制台中。显示的tag为System.out
35.经过startService()和bindService()。下面说法错误的是:(C)
A.经过startService()启动服务:会调用例如如下生命周期方法:onCreate()-onStart()-onDestroy()
B.当採用startService()方法启动服务,訪问者与服务是没有绑定在一块儿的,訪问者退出,服务还在执行
C.假设是调用bindService()启动服务:会调用例如如下生命周期方法:onCreate()-onBInd()-onDestroy()onUnbind()
D.採用bindService()方法启动服务时, 訪问者与服务是绑定在一块儿的,即訪问者退出,服务也就终止,解除绑定
理解:C:onCreate()onBind()onUnbind()onDestroy()
36.使用AIDL完毕远程service方法调用下列说法不对的是(A)
A. AIDL相应的接口名称不能与AIDL文件名称一样
B. AIDL的文件的额内容相似java代码
C.建立一个Service(服务),在服务的onBind(Intent intent)方法中返回实现了AIDL接口的对象
D. AIDL相应的接口的方法前面不能加訪问权限修饰符
理解:AIDL相应的接口名称必须与AIDL文件名称一样,不然没法本身主动编译;
AIDL相应的接口的方法不能加訪问权限修饰符
37.【腾讯2015春招移动client开发练习卷】
Android中Looper的实现原理,为何调用Looper.prepare()就在当前线程关联了一个Looper对象。它是怎样实现的。
理解:
1)线程间通讯机制:首先,Looper,Handler,MessageQueue三者共同实现了Android系统里线程间通讯机制。
如在A,B两个子线程之间需要传递消息。首先给每个子线程绑定一套Handler,Looper,MessageQueue机制。而后这三个对象都与各自的线程相应。而后A线程经过调用B线程的Handler对象,发送消息。这个消息会被Handler发送到B线程的MessageQueue中, 而属于B线程的Looper对象一直在循环无限遍历MessageQueue,一旦发现该消息队列里收到新的消息,就会去对消息进行处理,处理过程当中会回调自身Handler,HandleMessage方法。从而实现了不一样线程间通讯。
2)Looper实现原理:Looper类里面包括一个消息队列对象和一个线程对象。
当建立Looper时。会本身主动建立一个消息队列,同一时候将内部线程对象指向建立Looper的线程。当开启Looper后(Looper.loop()),会本身主动进入无限for循环中,不断去遍历消息队列,假设没有消息则堵塞,有消息则回调Handler的handleMessage()方法进行处理。
3)Looper.prepare():首先,要使用Looper机制一般会在当前线程中建立Handler对象,里面会本身主动建立一个Looper对象和消息队列,这里面的消息队列属于当前线程空间。但此时的Looper还不会去遍历。也没有绑定到当前线程。
当中,Looper对象内部也包括一个空消息队列对象和空线程。
经过Looper.prepare()方法,先让该消息队列指向当前线程的消息队列。让空线程也指向当前线程。从而实现了绑定。
38.【腾讯2015春招移动client开发练习卷】
简述Android怎样处理UI与耗时操做的通讯,有哪些方式及各自的优缺点。
理解:。。。
AsyncTask本质上是一个线程池。所有的异步任务都会在这个线程池中的工做线程中运行,当需要操做UI界面时,会和工做线程经过Handler传递消息。
github主页:https://github.com/chenyufeng1991 。
欢迎你们訪问!