Android基础面试题

第一部分(Part1)Android基础测试 共22题(全部单选,每题2分,总分44分 ) 1、关于在Activity生命周期中的各个方法在不同状态下的调用顺序的说法,错误的是( d) A 一个Activity从被创建到进入运行态,需要依次调用onCreate() -> onStart() -> onResume()。 B 点击Home按钮后,系统回到桌面,然后我们再找到这个应用并打开,它的执行过程为:onRestart() -> onStart() -> onResume()。 C 当Activity启动后,点击"返回"按钮,这时Activity会被终止而重新回到系统桌面,它的执行顺序为:onPause() -> onStop() -> onDestroy()。 D 重新启动一个应用,在它被启动后,先点击"拨打电话"按钮,之后再点击"返回"按钮,这时Activity的执行顺序是:onPause() -> onStop() -> onRestart() -> onResume()。

activity_lifecycle.png

2、以下退出Activity的方法中错误的是( c) A、finish() B、抛异常强制退出 C、System.exit() D、onStop()

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

4、以下关于Handler机制原理的说法,错误的是(b ) A、Android提供了Handler和Looper来满足线程间的通信。 B、Handler机制是遵循先进后出的原则。 C、Looper类用来管理待定线程内对象之间的消息交换(Message Exchange),而通过Handler对象可以与Looper进行沟通,以便push新消息到Message Queue里面,或者接收Looper从Meaages Queue取出的消息。 D、UI Thread通常就是Main Thread,而Android启动程序的时候就会替它建立一个Message Queue。

5、以下选项中是AbsoluteLayout中特有属性的是(b ) A、android:layout_height B、android:layout_x C、android:layout_above D、android:layout_toRightOf

6、使用Toast提示时,关于提示时长,以下说法正确的是(b ) A、显示时长只有2种设置 B、可以自定义显示时长 C、传入30,提示会显示30秒钟 D、当自定义显示时长时,比如传入30,程序会抛出异常

7、关于AlertDialog的说法不正确的是(a ) A、要想使用对话框首先要使用new关键字创建AlertDialog的实例 B、对话框的显示需要调用show方法 C、setPositiveButton方法是用来加确定按钮的 D、setNegativeButton方法是用来加取消按钮的

8、以下关于如何使用Notification的说法,错误的是(d ) A、Notification需要NotificatinManager来管理 B、使用NotificationManager的notify方法显示Notification消息C、在显示Notification时可以设置通知时的默认发声、震动等D、Notification中有方法可以清除消息

9、在Activity中,获取service对象的方法有(a ) A、通过直接实例化得到 B、通过绑定得到 C、通过startService()获取 D、通过getService()获取

10、以下关于Adapter的描述有误的是(a ) A、Android系统提供了几个默认的Adapter类,可供开发者使用,同时,开发者也可以继承Adapter类来自定义Adapter 。B、Adapter对象在Adapter控件和数据源之间扮演桥梁的角色,它提供了访问数据源的入口,并把从数据源拿到的数据逐项加载到Adapter控件中。 C、Android有以下四种Adapter对象可供开发者使用,分别是ArrayAdapter、SimpleAdapter、SimpleCursorAdapter和自定义的Adapter。 D、Android使用了一个抽象类——BaseAdapter作为各个Adapter实体类的基类,并使用两个接口——ListAdapter和SpinnerAdapter分别作为两种类型的AdapterView——AbsListView(包含ListView和GridView)和AbsSpinner(包含Spinner和Gallery)的适配接口。

11、以下关于ListView的XML属性的描述错误的是(b ) A、ListView与其他的UI控件相同,在XML布局文件中通过<ListView>标签将其放入界面布局中。 B、直接让Activity继承自ListAdapter,可以将ListView填充满整个Activity。 C、在XML布局代码中将ListView的位置设为占满整个Activity,可以将ListView填充满整个Activity。 D、把ListView放在布局控件中,让其只占界面的某一部分。

12、 以下说法中错误的是( a) A. ListView通常显示比较大的数据量,例如通讯录应用程序中使用的ListView包含所有的联系人 B. ViewHolder这种设计模式省去了经常性findVIewById的调用,每次getView/BindView执行,需引用childView一次存储的标签(setTag)查看和使用那些重新引用的getView/BindView的方法代码 C. itemView起到状态缓存的作用 D. ExpandableListView是可以扩展的ListView,作用就是将ListView进行分组。与ListView一样,都需要一个Adapter作为桥梁来取得数据,并且需要重载相应的方法,例如getChildView方法就是取得给定分组中给定子视图的ID,该组的ID必须在组中是唯一的。

13、以下关于Adapter的说法错误的是(a ) A. Adapter可以直接保存数据 B. Android提供的三种Adapter主要有ArrayAdapter、SimplerAdapter、SimplerCursorAdapter C. 在Android的API中,List和Adapter都被放在android.widget包内 D. 在实际应用中,将数据加入到Adapter,以接口形式呈现的Adapter无法保存数据

14、关于Handler的说法不正确的是(a ) A. 它实现不同进程间通信的一种机制 B. 它避免了在新线程中刷新UI的操作 C. 它采用队列的方式来存储Message D. 它实现不同线程间通信的一种机制

15、关于菜单Menu的说法错误的是(b ) A. 菜单(Menu)是应用程序界面中重要的组成部分,Android系统同样提供了功能强大的菜单组件。 B. 菜单虽然是一种资源,但是不可以通过代码动态生成,只能通过XML文件声明。 C. Android菜单可以分为三种,分别是选项菜单、上下文菜单、子菜单。 D. 选项菜单是Activity范围的对象,上下文菜单是View组件范围的菜单,而子菜单嵌套在它们之中。

16、 上下文菜单需要重载onCreateContextMenu方法,该方法用于( a) A. 添加快捷菜单所显示的标题、图标和菜单子项等内容。 B. 处理菜单选择事件。 C. 将快捷菜单注册到界面控件上。 D. 动态地添加、删除菜单子项。

17、关于菜单的说法错误的是(d ) A. 菜单可以像界面布局一样在 XML 文件中进行定义。 B. 使用 XML 文件定义界面菜单,将代码与界面设计分类,有助于简化代码的复杂程度,并且更有利于界面的可视化。 C. 菜单是应用程序中非常重要的组成部分,能够在不占用界面空间的前提下,为应用程序提供统一的功能和设置界面,并为程序开发人员提供了易于使用的编程接口。 D. Android系统支持2种菜单:选项菜单( Option Menu)、子菜单( Submenu)。

18、将数据库保存在SD上,需要在创建SQLiteDatabse的时候调用SQLiteDatabase的静态方法( c) A. onCreate B. onOpen C. openOrCreateDatabase D. close

19、在执行长时间的数据库操作的时候,需要数据库的事务支持来确保信息的完整性,下面关于事务的说法,不正确的是(d ) A. 使用SQLiteDatabese的beginTransaction()方法可以开启一个事务 B. 当程序执行到endTransaction()方法的时候,会检查事务的标志是否为成功 C. 当应用需要提交事务,必须在程序执行到endTransaction()方法之前使用setTransactionSuccessful()方法设置事务的标志为成功,如果不调用该方法,就会默认回滚事务 D. SQLite允许嵌套事务

20、下列属于SAX解析xml的优点的是(b ) A. 将整个文档存于内存中,这样便于操作 B. 不用事先将整个文档拷入内存 C. 整个文档放入内容,浪费时间和空间 D. 不是长久驻留内存,数据不是持久的,事件过后,若没有保存数据,数据就会消失

21、以下关于访问其他应用程序的SharedPreferences的说法不正确的是( a) A、Preferences 能在不同包之间使用。 B、共享者需要将SharedPreferences的访问模式设置为全局读或全局写。 C、访问者需要知道共享者的包名称和SharedPreferences的名称,以通过Context获得SharedPreferences对象。 D、访问者需要确切知道每个数据的名称和数据类型,用以正确读取数据。

22、XmlPullParser的XML事件类型中END_TAG的说明为( c) A、读取到标签开始标志 B、读取文本内容 C、读取到标签结束标志 D、文档末尾

第二部分(Part2)Android核心组件测试 共18题(全部单选,每题2分,总分36分 ) 23、以下Activity生命周期中的各个方法在不同状态下的调用顺序,错误的是(d ) A、一个Activity从被创建到进入运行态,需要依次调用onCreate() -> onStart() -> onResume()。 B、点击Home按钮后,系统回到桌面,然后我们再找到这个应用并打开,它的执行过程为:onRestart() -> onStart() -> onResume()。 C、当Activity启动后,点击“返回”按钮,这时Activity会被终止而重新回到系统桌面,它的执行顺序为:onPause() -> onStop() -> onDestroy()。 D、重新启动一个应用,在它被启动后,先点击“拨打电话”按钮,之后再点击“返回”按钮,这时Activity的执行顺序是:onPause() -> onStop() -> onRestart() -> onResume()。

24、当Activity被销毁时,保存它原来状态的方法是(a ) A、实现Activity的onSaveInstanceState()方法 B、实现Activity的onSaveInstance()方法 C、实现Activity的onInstanceState()方法 D、实现Activity的onSaveState()方法

25、Intent传递数据时,以下不可以被传递的类型数据是( b) A、Serializable B、JSON对象 C、Bundle D、charsequence

26、以下关于使用Intent Filter描述有误的一项是(b ) A、Intent Filter有两种使用方式。 B、不可以在代码中使用IntentFilter对象。 C、允许在配置文件AndroidManifest.xml中的相应组件标签中加入<intent-filter>标签并在其中进行设置。 D、Intent Filter的几种方式都可以使用系统内置或自定义的属性值,开发者可以使用Action、Category和Data三个属性的设置和获取方法完成匹配。 27、多个应用中读取共享存储数据时用到的query方法,是(a )对象的方法。 A、ContentResolver B、ContentProvider C、CursorD、SQLiteHelper

28、以下关于ContentProvider的说法不正确的是(a ) A、ContentProvider在Android中的作用是对外共享数据,也就是说可以通过ContentProvider把应用中的数据共享给其他应用访问,但是缺点是其他应用不可以通过ContentProvider对本应用中的数据进行增删改查。 B、通过指定文件的操作模式为Context.MODE_WORLD_READABLE或Context.MODE_WORLD_WRITEABLE也可以对外共享数据。C、如果采用文件操作模式对外共享数据,数据的访问方式会因数据存储的方式而不同,导致数据的访问方式无法统一。D、使用ContentProvider对外共享数据的好处是统一了数据的访问方式。 29、以下关于ContentResolver的说法错误的是(b ) A、当外部应用需要对ContentProvider中的数据进行添加、删除、修改和查询操作时,可以使用ContentResolver 类来完成。 B、 ContentResolver 类提供了与ContentProvider类相同签名的insert、delete、update方法,但是没有提供query方法。C、通过ContentResolver对ContentProvider中的数据进行操作的时候,当需要将id为1时记录的name字段值更改为csg的时候,使用ContentValues的put方法,put("name", "csg")。 D、要获取ContentResolver 对象,可以使用Activity提供的getContentResolver()方法。

30、以下关于线程异步问题的说法不正确的是(d ) A、线程在应用程序开发过程中负责分担进程的耗时计算工作。 B、一个进程中如果需要多个线程共同协作才能完成业务计算的话,往往会涉及到线程之间的数据通讯。 C、线程依靠CPU调度分配时间片获得运行机会,当CPU时间片耗尽,线程将会停止运行等待CPU的再次分配。 D、由于线程的运行与停止是可控的,所以当多个线程之间需要同时对一块进程中的"共享内存"进程操作的时候,就有可能发生线程异步交互错误。

31、关于同步关键字的说法错误的是(a ) A、如果一个线程在执行同步方法时没有执行完毕代码就耗尽了时间片,其他线程在获得了运行权之后就可以运行了。 B、为防止时间片耗尽导致的代码没有完全执行完毕的情况发生,可以考虑利用同步关键字。 C、利用同步关键保证只有当一个线程彻底执行完方法后,其他线程才能运行该方法。 D、等待失去时间片的线程执行完毕代码后,才能访问该方法。

32、以下关于Service的说法错误的是(c ) A. Android中,Service有两种不同的使用方式:一种是以启动方式使用Service(Started Service),另一种是以绑定方式使用Service(Bound Service)。 B. 需要在AndroidManifest.xml文件中注册,否则,Service根本无法启动。 C. 以绑定方式使用Service,能够获取到Service对象,不仅能够正常启动Service,而且能够调用正在运行中的Service实现的私有方法和属性。 D. 为了使Service支持绑定,需要在Service类中重写onBind()方法,并在onBind()方法中返回Service对象。

33、以下关于Service绑定的说法有误的是( d) A. 如果绑定成功,则会通过getService()获取Service对象,这样便可以调用Service中的方法和属性。 B. 如果绑定意外失败,会将Service对象设置为null,表示绑定意外失效,Service实例不再可用。 C. 绑定一个Service就可以开启并使一个Service处于运行状态。 D. 以绑定方式使用Service时,调用者需要声明一个ServiceConnnection对象,但可以不用重写它的onServiceConnected()和onServiceDisconnected()方法。

34、以下关于Service的两种选择描述错误的是(c ) A. 以绑定方式使用Service时,使用bindService()方法的目的是回调onBind()方法,它的作用是在Service和调用者之间建立一个桥梁。 B. 当调用者结束时,Service也会结束,而不负责更多的工作,例如连接服务器的操作。 C. 一般会把在应用程序被关闭后仍然需要执行的操作实现为一个绑定式的Service,而将一些执行特定功能、执行周期短或在应用程序关闭后将要停止的操作实现为启动式的Service。 D. 在实际开发中,常会将这两种方式的Service混用,一般的做法是在一个长期执行的、启动式的Service中多次绑定并解绑多个绑定式的Service,在每个绑定式的Service中都会执行短期的、特定的工作。

35、以下关于启动式Service的描述错误的是(a ) A. 通过服务链接(Connection)或直接获取Service中状态和数据信息。 B. 如果仅以启动方式使用Service,这个Service需要具备自管理的能力,且不需要通过函数调用向外部组件提供数据或功能。 C. 通过调用Context.startService()启动Service,通过调用Context.stopService()或Service.stopSefl()停止Service。 D. Service是由其他的组件启动的,但停止过程可以通过其他组件或自身完成。

36、以下关于绑定式Service的描述不正确的是(b ) A. 服务链接能够获取到Service对象,因此绑定Service的组件可以调用在Service中实现的函数。 B. 使用Service的组件通过Context.bindService()建立服务链接,通过Context.stopService()或Service.stopSefl()停止服务链接。 C. 如果在绑定过程中Service没有启动,Context.bindService()会自动启动Service。 D. 同一个Service可以绑定多个服务链接,这样可以同时为多个不同的组件提供服务。

37、以下关于Service的描述不正确的是(b ) A. 启动式的Service和绑定式的Service并不是完全独立的,在某些情况下可以混合使用。 B. 以绑定方式使用Service,能够获取到Service对象,不仅能够正常启动Service,而且能够调用正在运行中的Service实现的私有方法和属性。 C. 需要在AndroidManifest.xml文件中注册,否则,Service根本无法启动。 D. Android中,Service有两种不同的使用方式:一种是以启动方式使用Service(Started Service),另一种是以绑定方式使用Service(Bound Service)。

38、以下关于Android中的广播机制的描述有误的是(a ) A. 在Android中使用广播这种异步机制来处理组件之间的消息传递,所以组件会接收所有的广播。 B. 所谓异步,就是广播的发送方和接收方不需要互相等待,对广播的收发并不会影响本身正常的工作。 C. 使用异步广播的好处之一是可以避免组件之间因为互相等待而造成的冲突、资源浪费和死锁等情况。 D. 使用异步广播的好处之一是可以大大简化应用层的编程难度。

39、以下关于Android中的广播机制的说法不正确的是(c ) A. 在应用层,发送方组件通常需要定义一个Intent对象,用于封装要发送的消息,并指定其Action属性用于匹配(参见第二章中的Intent属性部分),然后在组件中使用Context对象(上下文环境)所在的sendBroadcast()方法,将这个Intent发送出去。 B. 接收方想要接收到某一个广播时,需要在该广播被发送之前,注册一个BroadcastReceiver(广播接收者),将其Action属性设置为与要接受广播的Action属性相同的值。 C. 一般不需要在组件的onDestroy()方法中调用unRegisterReceiver()方法,以取消已注册的BroadcastReceiver对象,清理资源。 D. 如果在Activity的onResume()方法中注册了BroadcastReceiver,则应该在onPause()方法中取消注册。

40、在设置应用之间信任并实现数据共享时,需要增加( c)属性,并保证两个应用一致。 A. android:gravity B. android:hint C. android:sharedUserId D. android:typeface

第三部分(Part3)Android多媒体测试共10题(全部单选,每题2分,总分20分) 41、关于AppWidgetProvider类中,每接收一次广播消息就调用一次的方法是(a ) A、onReceive() B、onUpdate() C、onDeleted() D、onEnabled()

42、关于AppWidgetProvider类的onEnabled方法,描述正确的是(c ) A、每次更新都调用一次该方法,使用频繁。 B、每删除一个就调用一次。 C、当该Widget第一次添加到桌面时调用该方法,可添加多次但只有第一次调用。 D、当最后一个该Widget删除时,调用该方法。

43、以下关于开发自定义的Widget组件的说法错误的是(c ) A、当Widget被用户拖拽入桌面中,Launcher会向Widget发送广播。 B、当Widget被用户从桌面上移除,Launcher会向Widget发送广播 C、Widget不需要配置Launcher的广播接收器。

44、以下关于使用MediaRecorder的说法有误的是(c ) A、Android多媒体框架中包含录音功能,并能编码成多种音频格式,我们可以使用MediaRecorder类的API实现录音功能。B、想要使用录音功能,需要在AndroidManifest.xml中声明这个权限:<uses-permission android:name="android.permission.RECORD_AUDIO"。> C、我们通过MediaRecorder只能完成avi格式视频的录制。D、想要使用视频录制功能,需要在AndroidManifest.xml中加入<uses-permission android:name="android.permission.RECORD_VIDEO"/>权限。

45、以下关于MediaPlayer的生命周期描述有误的是( a) A、要开始播放MeidaPlayer对象,就必须成功调用prepare ()方法。 B、MeidaPlayer通过isPlaying()方法来检测当前是否正在播放。 C、MeidaPlayer通过setLooping(boolean)方法来设置是否循环播放。 D、MeidaPlayer通过pause()方法来实现暂停播放,通过stop()方法来实现停止播放。

46、以下关于SurfaceView播放视频的说法,不正确的是( b) A、SurfaceView继承自View,其中内嵌了一个专门用于绘制的Surface。 B、开发者可以控制Surface的格式和尺寸,但不能让SurfaceView控制这个Surface的绘制位置。 C、Surface对应一块屏幕缓冲区,每个Window对应一个Surface,任何View都是画在Surface上的,包括之前讲过的控件和布局控件。 D、一般的View都共享一块屏幕缓冲区,所有的绘制必须在UI线程中进行。

47、以下关于拍照功能的描述有误的是(c ) A、Android中,可以使用Camera类中的API实现拍照功能。B、Android提供了借助Intent和MediaStroe调用系统自带的拍照应用程序来实现拍照功能。 C、Android提供了使用MediaStroe类中的API自行编写拍照程序。 D、保存所拍照片的文件路径,必须确保文件夹路径存在,否则拍照后无法完成回调。

48、以下关于Canvas的描述有误的是(b ) A、通常Canvas(画布)、Paint(画笔)、Bitmap(位图)、ViewFlipper(动画)和使用OpenGL去设计的2D、3D图形或动画是用来开发Android游戏的类库。 B、Canvas就像手机中的画布,我们只能在Canvas上绘制图片。 C、View类的onDraw()方法会传入一个Canvas对象,用来绘制组件界面的画布。 D、Android提供了多种处理图形图像的工具类,加上自定义View技术,几乎可以完成任何的图形图像处理

49、以下是SD卡读取权限的是(a ) A、android.permission.READ_EXTERNAL_STORAGE B、android.permission.WRITE_EXTERNAL_STORAGE C、android.permission.WRITE_CALENDAR D、android.permission.READ_PHONE_STAT

50、负责管理所有Android传感器框架支持的传感器组件是(c ) A、android.hardware.Sensor B、android.hardware.SensorEventListener C、android.hardware.SensorManager D、android.hardware.SensorManager

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Albert陈凯

Hadoop数据分析平台实战——250JSSDK数据收集引擎编写离线数据分析平台实战——250JSSDK数据收集引擎编写

离线数据分析平台实战——250JSSDK数据收集引擎编写 JsSDK设计规则 在js sdk中我们需要收集launch、pageview、chargeReque...

3568
来自专栏Golang语言社区

Golang测试技术

本篇文章内容来源于Golang核心开发组成员Andrew Gerrand在Google I/O 2014的一次主题分享“Testing Techniques”,...

3907
来自专栏MelonTeam专栏

一种下载管理方案的设计与实现

导语: 4G时代流量资费大幅下降,各种“WBQ”卡惊艳出世——在此背景下,下载对于移动端已不再是一种昂贵的高成本行为。同时EMMC、UFS等存储介质的发展也...

28911
来自专栏Jerry的SAP技术分享

Cordova插件中JavaScript代码与Java的交互细节介绍

在Cordova官网中有这么一张架构图:大家看右下角蓝色的矩形框"Custom Plugin"——自定义插件。意思就是如果您用Cordova打包Mobile应用...

932
来自专栏我的博客

安卓开发之调试程序

一、DDMS中LogCat(这样就能调试程序了) 代码下方显示LogCat,windows/show view/other选中logcat点击ok就会在代码下面...

3538
来自专栏坚毅的PHP

mysql 高并发更新计数问题

问题:功能为链接的点击计数,其他两个计数更新 还有两个内容表的插入,只插入链接对应的id,分4个库,共128个表,mysql每天有5000万次插入和5000万次...

4768
来自专栏Android开发指南

6.网络编程

33213
来自专栏Android-JessYan

看到如此多的MVP+Dagger2+Retrofit+Rxjava项目,轻松拿star,心动了吗?

原文地址: http://www.jianshu.com/p/4bbecd0bb027

5493
来自专栏Android群英传

Google I/O 之 Android App Bundles 是个啥

3462
来自专栏james大数据架构

Android的UI设计与后台线程交互

本文将讨论Android应用程序的线程模型以及如何使用线程来处理耗时较长的操作,而不是在主线程中执行,保证用户界面(UI)的流畅运行。本文还将阐述一些用户界面(...

2235

扫码关注云+社区

领取腾讯云代金券