基础不过关,别说大厂小厂都难!万丈高楼平地起,10年老码农总结Android基础面试题!(2)

15、关于菜单Menu的说法错误的是( )

A. 菜单(Menu)是应用程序界面中重要的组成部分,Android系统同样提供了功能强大的菜单组件。

B. 菜单虽然是一种资源,但是不可以通过代码动态生成,只能通过XML文件声明。

C. Android菜单可以分为三种,分别是选项菜单、上下文菜单、子菜单。

D. 选项菜单是Activity范围的对象,上下文菜单是View组件范围的菜单,而子菜单嵌套在它们之中。

16、 上下文菜单需要重载onCreateContextMenu方法,该方法用于( )

A. 添加快捷菜单所显示的标题、图标和菜单子项等内容。

B. 处理菜单选择事件。

C. 将快捷菜单注册到界面控件上。

D. 动态地添加、删除菜单子项。

17、关于菜单的说法错误的是( )

A. 菜单可以像界面布局一样在 XML 文件中进行定义。

B. 使用 XML 文件定义界面菜单,将代码与界面设计分类,有助于简化代码的复杂程度,并且更有利于界面的可视化。

C. 菜单是应用程序中非常重要的组成部分,能够在不占用界面空间的前提下,为应用程序提供统一的功能和设置界面,并为程序开发人员提供了易于使用的编程接口。

D. Android系统支持2种菜单:选项菜单( Option Menu)、子菜单( Submenu)。

18、将数据库保存在SD上,需要在创建SQLiteDatabse的时候调用SQLiteDatabase的静态方法( )

A. onCreate

B. onOpen

C. openOrCreateDatabase

D. close

19、在执行长时间的数据库操作的时候,需要数据库的事务支持来确保信息的完整性,下面关于事务的说法,不正确的是( )

A. 使用SQLiteDatabese的beginTransaction()方法可以开启一个事务

B. 当程序执行到endTransaction()方法的时候,会检查事务的标志是否为成功

C. 当应用需要提交事务,必须在程序执行到endTransaction()方法之前使用setTransactionSuccessful()方法设置事务的标志为成功,如果不调用该方法,就会默认回滚事务

D. SQLite允许嵌套事务

20、下列属于SAX解析xml的优点的是( )

A. 将整个文档存于内存中,这样便于操作

B. 不用事先将整个文档拷入内存

C. 整个文档放入内容,浪费时间和空间

D. 不是长久驻留内存,数据不是持久的,事件过后,若没有保存数据,数据就会消失

21、以下关于访问其他应用程序的SharedPreferences的说法不正确的是( )

A、Preferences 能在不同包之间使用。

B、共享者需要将SharedPreferences的访问模式设置为全局读或全局写。

C、访问者需要知道共享者的包名称和SharedPreferences的名称,以通过Context获得SharedPreferences对象。

D、访问者需要确切知道每个数据的名称和数据类型,用以正确读取数据。

22、XmlPullParser的XML事件类型中END_TAG的说明为( )

A、读取到标签开始标志

B、读取文本内容

C、读取到标签结束标志

D、文档末尾

第二部分(Part2)Android核心组件测试 共18题(全部单选,每题2分,总分36分 )

23、以下Activity生命周期中的各个方法在不同状态下的调用顺序,错误的是( )

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、实现Activity的onSaveInstanceState()方法

B、实现Activity的onSaveInstance()方法

C、实现Activity的onInstanceState()方法

D、实现Activity的onSaveState()方法

25、Intent传递数据时,以下不可以被传递的类型数据是( )

A、Serializable

B、JSON对象

C、Bundle

D、charsequence

26、以下关于使用Intent Filter描述有误的一项是( )

A、Intent Filter有两种使用方式。

B、不可以在代码中使用IntentFilter对象。

C、允许在配置文件AndroidManifest.xml中的相应组件标签中加入<intent-filter>标签并在其中进行设置。

D、Intent Filter的几种方式都可以使用系统内置或自定义的属性值,开发者可以使用Action、Category和Data三个属性的设置和获取方法完成匹配。

27、多个应用中读取共享存储数据时用到的query方法,是( )对象的方法。

A、ContentResolver

B、ContentProvider

C、CursorD、SQLiteHelper

28、以下关于ContentProvider的说法不正确的是( )

A、ContentProvider在Android中的作用是对外共享数据,也就是说可以通过ContentProvider把应用中的数据共享给其他应用访问,但是缺点是其他应用不可以通过ContentProvider对本应用中的数据进行增删改查。

B、通过指定文件的操作模式为Context.MODE_WORLD_READABLE或Context.MODE_WORLD_WRITEABLE也可以对外共享数据。C、如果采用文件操作模式对外共享数据,数据的访问方式会因数据存储的方式而不同,导致数据的访问方式无法统一。D、使用ContentProvider对外共享数据的好处是统一了数据的访问方式。

29、以下关于ContentResolver的说法错误的是( )

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、以下关于线程异步问题的说法不正确的是( )

A、线程在应用程序开发过程中负责分担进程的耗时计算工作。

B、一个进程中如果需要多个线程共同协作才能完成业务计算的话,往往会涉及到线程之间的数据通讯。

C、线程依靠CPU调度分配时间片获得运行机会,当CPU时间片耗尽,线程将会停止运行等待CPU的再次分配。

D、由于线程的运行与停止是可控的,所以当多个线程之间需要同时对一块进程中的"共享内存"进程操作的时候,就有可能发生线程异步交互错误。

31、关于同步关键字的说法错误的是( )

A、如果一个线程在执行同步方法时没有执行完毕代码就耗尽了时间片,其他线程在获得了运行权之后就可以运行了。

B、为防止时间片耗尽导致的代码没有完全执行完毕的情况发生,可以考虑利用同步关键字。

C、利用同步关键保证只有当一个线程彻底执行完方法后,其他线程才能运行该方法。

D、等待失去时间片的线程执行完毕代码后,才能访问该方法。

32、以下关于Service的说法错误的是( )

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绑定的说法有误的是( )

A. 如果绑定成功,则会通过getService()获取Service对象,这样便可以调用Service中的方法和属性。

B. 如果绑定意外失败,会将Service对象设置为null,表示绑定意外失效,Service实例不再可用。

C. 绑定一个Service就可以开启并使一个Service处于运行状态。

D. 以绑定方式使用Service时,调用者需要声明一个ServiceConnnection对象,但可以不用重写它的onServiceConnected()和onServiceDisconnected()方法。

34、以下关于Service的两种选择描述错误的是( )

A. 以绑定方式使用Service时,使用bindService()方法的目的是回调onBind()方法,它的作用是在Service和调用者之间建立一个桥梁。

B. 当调用者结束时,Service也会结束,而不负责更多的工作,例如连接服务器的操作。

C. 一般会把在应用程序被关闭后仍然需要执行的操作实现为一个绑定式的Service,而将一些执行特定功能、执行周期短或在应用程序关闭后将要停止的操作实现为启动式的Service。

D. 在实际开发中,常会将这两种方式的Service混用,一般的做法是在一个长期执行的、启动式的Service中多次绑定并解绑多个绑定式的Service,在每个绑定式的Service中都会执行短期的、特定的工作。

35、以下关于启动式Service的描述错误的是( )

A. 通过服务链接(Connection)或直接获取Service中状态和数据信息。

B. 如果仅以启动方式使用Service,这个Service需要具备自管理的能力,且不需要通过函数调用向外部组件提供数据或功能。

C. 通过调用Context.startService()启动Service,通过调用Context.stopService()或Service.stopSefl()停止Service。

D. Service是由其他的组件启动的,但停止过程可以通过其他组件或自身完成。

36、以下关于绑定式Service的描述不正确的是( )

A. 服务链接能够获取到Service对象,因此绑定Service的组件可以调用在Service中实现的函数。

B. 使用Service的组件通过Context.bindService()建立服务链接,通过Context.stopService()或Service.stopSefl()停止服务链接。

C. 如果在绑定过程中Service没有启动,Context.bindService()会自动启动Service。

D. 同一个Service可以绑定多个服务链接,这样可以同时为多个不同的组件提供服务。

37、以下关于Service的描述不正确的是( )

A. 启动式的Service和绑定式的Service并不是完全独立的,在某些情况下可以混合使用。

B. 以绑定方式使用Service,能够获取到Service对象,不仅能够正常启动Service,而且能够调用正在运行中的Service实现的私有方法和属性。

C. 需要在AndroidManifest.xml文件中注册,否则,Service根本无法启动。

D. Android中,Service有两种不同的使用方式:一种是以启动方式使用Service(Started Service),另一种是以绑定方式使用Service(Bound Service)。

38、以下关于Android中的广播机制的描述有误的是( )

A. 在Android中使用广播这种异步机制来处理组件之间的消息传递,所以组件会接收所有的广播。

B. 所谓异步,就是广播的发送方和接收方不需要互相等待,对广播的收发并不会影响本身正常的工作。

C. 使用异步广播的好处之一是可以避免组件之间因为互相等待而造成的冲突、资源浪费和死锁等情况。

D. 使用异步广播的好处之一是可以大大简化应用层的编程难度。

39、以下关于Android中的广播机制的说法不正确的是( )

A. 在应用层,发送方组件通常需要定义一个Intent对象,用于封装要发送的消息,并指定其Action属性用于匹配(参见第二章中的Intent属性部分),然后在组件中使用Context对象(上下文环境)所在的sendBroadcast()方法,将这个Intent发送出去。

B. 接收方想要接收到某一个广播时,需要在该广播被发送之前,注册一个BroadcastReceiver(广播接收者),将其Action属性设置为与要接受广播的Action属性相同的值。

C. 一般不需要在组件的onDestroy()方法中调用unRegisterReceiver()方法,以取消已注册的BroadcastReceiver对象,清理资源。

D. 如果在Activity的onResume()方法中注册了BroadcastReceiver,则应该在onPause()方法中取消注册。

40、在设置应用之间信任并实现数据共享时,需要增加( )属性,并保证两个应用一致。

A. android:gravity

B. android:hint

C. android:sharedUserId

D. android:typeface

第三部分(Part3)Android多媒体测试共10题(全部单选,每题2分,总分20分)

41、关于AppWidgetProvider类中,每接收一次广播消息就调用一次的方法是( )

A、onReceive()

B、onUpdate()

C、onDeleted()

D、onEnabled()

42、关于AppWidgetProvider类的onEnabled方法,描述正确的是( )

A、每次更新都调用一次该方法,使用频繁。

B、每删除一个就调用一次。

C、当该Widget第一次添加到桌面时调用该方法,可添加多次但只有第一次调用。

D、当最后一个该Widget删除时,调用该方法。

43、以下关于开发自定义的Widget组件的说法错误的是( )

A、当Widget被用户拖拽入桌面中,Launcher会向Widget发送广播。

B、当Widget被用户从桌面上移除,Launcher会向Widget发送广播

C、Widget不需要配置Launcher的广播接收器。

44、以下关于使用MediaRecorder的说法有误的是( )

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、要开始播放MeidaPlayer对象,就必须成功调用prepare ()方法。

B、MeidaPlayer通过isPlaying()方法来检测当前是否正在播放。

C、MeidaPlayer通过setLooping(boolean)方法来设置是否循环播放。

D、MeidaPlayer通过pause()方法来实现暂停播放,通过stop()方法来实现停止播放。

46、以下关于SurfaceView播放视频的说法,不正确的是( )

A、SurfaceView继承自View,其中内嵌了一个专门用于绘制的Surface。

B、开发者可以控制Surface的格式和尺寸,但不能让SurfaceView控制这个Surface的绘制位置。

C、Surface对应一块屏幕缓冲区,每个Window对应一个Surface,任何View都是画在Surface上的,包括之前讲过的控件和布局控件。

D、一般的View都共享一块屏幕缓冲区,所有的绘制必须在UI线程中进行。

47、以下关于拍照功能的描述有误的是( )

A、Android中,可以使用Camera类中的API实现拍照功能。

B、Android提供了借助Intent和MediaStroe调用系统自带的拍照应用程序来实现拍照功能。

C、Android提供了使用MediaStroe类中的API自行编写拍照程序。

D、保存所拍照片的文件路径,必须确保文件夹路径存在,否则拍照后无法完成回调。

48、以下关于Canvas的描述有误的是( )

A、通常Canvas(画布)、Paint(画笔)、Bitmap(位图)、ViewFlipper(动画)和使用OpenGL去设计的2D、3D图形或动画是用来开发Android游戏的类库。

B、Canvas就像手机中的画布,我们只能在Canvas上绘制图片。

C、View类的onDraw()方法会传入一个Canvas对象,用来绘制组件界面的画布。

D、Android提供了多种处理图形图像的工具类,加上自定义View技术,几乎可以完成任何的图形图像处理

49、以下是SD卡读取权限的是( )

A、android.permission.READ_EXTERNAL_STORAGE

B、android.permission.WRITE_EXTERNAL_STORAGE

C、android.permission.WRITE_CALENDAR

D、android.permission.READ_PHONE_STAT

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数初中级Android工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则近万的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

img

img

img

img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:Android)

学习福利

【Android 详细知识点思维脑图(技能树)】

其实Android开发的知识点就那么多,面试问来问去还是那么点东西。所以面试没有其他的诀窍,只看你对这些知识点准备的充分程度。so,出去面试时先看看自己复习到了哪个阶段就好。

虽然 Android 没有前几年火热了,已经过去了会四大组件就能找到高薪职位的时代了。这只能说明 Android 中级以下的岗位饱和了,现在高级工程师还是比较缺少的,很多高级职位给的薪资真的特别高(钱多也不一定能找到合适的),所以努力让自己成为高级工程师才是最重要的。

这里附上上述的面试题相关的几十套字节跳动,京东,小米,腾讯、头条、阿里、美团等公司19年的面试题。把技术点整理成了视频和PDF(实际上比预期多花了不少精力),包含知识脉络 + 诸多细节。

由于篇幅有限,这里以图片的形式给大家展示一小部分。

网上学习 Android的资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。希望这份系统化的技术体系对大家有一个方向参考。

《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!

高级工程师还是比较缺少的**,很多高级职位给的薪资真的特别高(钱多也不一定能找到合适的),所以努力让自己成为高级工程师才是最重要的。

这里附上上述的面试题相关的几十套字节跳动,京东,小米,腾讯、头条、阿里、美团等公司19年的面试题。把技术点整理成了视频和PDF(实际上比预期多花了不少精力),包含知识脉络 + 诸多细节。

由于篇幅有限,这里以图片的形式给大家展示一小部分。

[外链图片转存中…(img-86xNw9DV-1713538836880)]

网上学习 Android的资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。希望这份系统化的技术体系对大家有一个方向参考。

《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!

  • 19
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值