Android开发经典笔试面试题汇总(持续更新中)

1.我们都知道Handler是线程与Activity通信的桥梁,假设线程处理不当。你的机器就会变得非常慢,那么线程销毁的方法是:(A)

A. onDestroy()

B. onClear()

C. onFinish()

D. onStop()

理解:正确销毁线程的方法应该是handler.removeCallBacks()。

2.SharedPreferences保存文件的路径和扩展名是:/data/data/package_name/shared_prefs/

*.xml.

3.Android的自己主动恢复功能可以完毕?(D)

A.回复地址簿

B.修复丢失的文字信息

C.回复删除的信息

D.恢复备份设置和数据来又一次安装程序

4.为满足线程间通信,Android提供了(A)

A.Handler和Looper

B.Handler

C.Message Queue

D.Looper

理解:Android提供了Handler和Looper来满足线程间通信,Handler先进先出原则。Looper类用来管理特定线程内对象之间的消息交换(MessageExchange)。

1)Looper:一个线程能够产生一个Looper对象。由他来管理此线程里的MEssageQueue(消息队列)

2)Handler:能够构造Handler对象来与Looper沟通,以便push新消息到MessageQueue,或者接收Looper从Message Queue取出所送来的消息。

3)Message Queue:用来存放线程放入的消息;

4)UIThread就是主线程,Android启动时会建立一个MessageQueue.

5.以下哪种进程最重要,最后被销毁?(D)

A.服务进程

B.后台进程

C.可见进程

D.前台进程

理解:重要性依次是:前台进程、可见进程、服务进程、后台进程、空进程。所以销毁的顺序为逆方向。

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(与密度无关的像素):一种基于屏幕密度的抽象单位。

在每英寸160点的显示器上,1dp=1px;

6)dip  (同dp)

7)sp (与刻度无关的像素):与dp类似,可是能够依据用户字体大小首选项进行缩放。

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中的一个进程。

13.Toast显示时长默认仅仅有2种,分别为Toast.LENGTH_LONG和Toast.LENGTH_SHORT.

分别为2s和3.5s。其它的值都是无效的。

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类的对象实例。

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  。

欢迎大家訪问!

时间: 2024-10-28 21:01:22

Android开发经典笔试面试题汇总(持续更新中)的相关文章

[转]Android开发要看的网站(不断更新中)

Android网址或Blog Android官网 身为Android开发者不知道这个网站就太说不过去了,上面有你任何你需要的东西 Android Developers Blog Android官网博客, 在上面可以关注Android最新的进展与最权威的博客(须翻墙) Android开源项目汇总 我的好朋友Trinea整理的非常全面的GitHub开源项目汇总,不需要重复发明轮子,尽情遨游在开源世界里吧 Android的开源库 国外整理的Android开源库汇总,和上面的比起来分类更明确,你总能很方

Xcode编译异常和警告汇总(持续更新中)

1.Method definition for 'xxx' not found xxx的方法没有实现 出现原因.h声明了xxx方法但是.m没有实现xxx方法 解决方法:在类的.m文件实现xxx方法 2. Instance variable ‘xxx' accessed in class method  在类方法中访问了'xxx’实例变量 出现原因:在类方法中使用了实例变量 解决方法:如果真得需要在类方法中使用某个变量,可以把这个变量定义成全局变量,而不要实例变量,如在类方法外面定义变量(就是定义

痞子衡嵌入式:史上最强i.MX RT学习资源汇总(持续更新中...)

大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是i.MX RT学习资源. 类别 资源 简介 官方汇总 i.MXRT产品主页 恩智浦官方i.MXRT产品主页,最权威的资料都在这里,参考手册/数据手册,官方EVK板设计文件,各种应用笔记,各种参考设计方案.培训视频.软件SDK开发包,官方IDE/CFG工具,第三方软件支持等应有尽有,如果这上面文档你都能全部仔细看一遍,软件都能下载用起来,不用怀疑,你就是资深专家了. 其中痞子衡特别推荐你把所有应用笔记都看一遍,这些笔记凝结了所有恩智浦

阿里笔试题(2015)持续更新中

第一次做阿里笔试题,除了ACM题之外从来没有做过校招网络题呀,完全是裸考,总体感觉吧,对于我来说,感觉时间不够用,不是题不会,感觉时间紧,大脑很混乱,总结这一次的笔试题 废话不多说,直接上题和答案 平均每个人逗留时间为20分钟,那么开场前20分钟一共来了400人,且有20个人逗留时间已经到,但他们不一定出去,注意是平均时间,所有博物馆最少应该容纳500人 双向循环列表,从任何一个元素开始可以遍历全部元素 先和后面的元素相连 s->next=p->next; p->next->pre

企业Linux运维几百个重点面试题汇总(持续更新)

目录: 第一部分:合格linux运维十五个必会原理知识(老男孩教育出品) http://user.qzone.qq.com/49000448/blog/1426386594 第二部分:合格linux运维必会MySQL 实战面试题近百个(老男孩教育出品)http://user.qzone.qq.com/49000448/blog/1427333863 第三部分:企业优秀运维人员20道必会iptables面试题 数十个(老男孩教育出品)http://oldboy.blog.51cto.com/256

大数据面试题汇总(不断更新中)

结合自身面试经历,包括BAT.SF.中信等等公司所做的面试题汇总.主要包括以下几大类: 一.spark相关 1.Spark的Shuffle原理及调优? 2.hadoop和spark使用场景? 3.spark如何保证宕机迅速恢复? 4.hadoop和spark的相同点和不同点? 5.RDD持久化原理? 6.checkpoint检查点机制? 7.checkpoint和持久化机制的区别? 8.Spark Streaming和Storm有何区别?  9.RDD机制?  10.Spark streamin

android开发文档工具集(持续更新中...)

http://www.androiddevtools.cn/ android 产品->交互->视觉->开发->测试各种工具地址下载, 各种文档下载应有尽有,强烈推荐. https://nimbledroid.com app性能测试网站,尤其是计算你的apk的包大小,很详细 使用方式也很方便,上传你的apk即可. https://mirrors.tuna.tsinghua.edu.cn/help/AOSP/ android源码下载网站,对于不能FQ的人来说,很爽. https://w

一文总结软件测试工程师面试前必背的面试题(持续更新中)

一 软件测试基础理论题 常见的测试方法有哪些? 1 从是否关心内部结构来看分为:白盒,黑盒,灰盒 黑盒测试不考虑程序内部结构和逻辑结构,主要是用来测试系统的功能是否满足需求规格说明书.一般会有一个输入值,一个输入值,和期望值做比较. 白盒测试主要应用在单元测试阶段,主要是对代码级的测试,针对程序内部逻辑结构,测试手段有:语句覆盖.判定覆盖.条件覆盖.路径覆盖.条件组合覆盖 灰盒是一种综合测试法,它将黑盒与白盒结合在一起,是基于程序运行时的外部表现又结合内部逻辑结构来设计用例,执行程序并采集路径执

《WCF技术剖析》博文系列汇总[持续更新中]

http://www.cnblogs.com/artech/archive/2009/11/21/1607686.html 近半年以来,一直忙于我的第一本WCF专著<WCF技术剖析(卷1)>的写作,一直无暇管理自己的Blog.在<WCF技术剖析(卷1)>写作期间,对WCF又有了新的感悟,为此以书名开始本人的第三个WCF系列.本系列的目的在于对<WCF技术剖析>的补充,会对书中的一些内容进行展开讲述,同时会囊括很多由于篇幅的原因忍痛割弃的内容. [第1篇] 通过一个ASP