Android面试题大全(持续更新中,大厂Android核心面试题出炉

2021年09月15日 阅读数:1
这篇文章主要向大家介绍Android面试题大全(持续更新中,大厂Android核心面试题出炉,主要内容包括基础应用、实用技巧、原理机制等方面,希望对大家有所帮助。

4)线程:UI thread 一般就是main thread,而Android启动程序时会替它创建一个Message Queue。android

[]( )4. 描述一下activity 的启动模式

1)standard :系统的默认模式,一次跳转即会生成一个新的实例。假设有一个activity命名为MainActivity,执行语句: git

startActivity(new Intent(MainActivity.this, MainActivity.class))后,MainActivity将跳转到另一个MainActivity,也就是如今的Task栈里面有MainActivity的两个实例。按返回键后你会发现仍然是在MainActivity(第一个)里面。 面试

2)singleTop:singleTop 跟standard 模式比较相似。若是已经有一个实例位于Activity栈的顶部时,就不产生新的实例,而只是调用Activity中的newInstance()方法。若是不位于栈顶,会产生一个新的实例。例:当MainActivity为 singleTop 模式时,执行跳转后栈里面依旧只有一个实例,若是如今按返回键程序将直接退出。 数据库

3)singleTask: singleTask模式和后面的singleInstance模式都是只建立一个实例的。在这种模式下,不管跳转的对象是否是位于栈顶的activity,程序都不会生成一个新的实例(固然前提是栈里面已经有这个实例)。这种模式至关有用,在之后的多activity开发中,常常会由于跳转的关系致使同个页面生成多个实例,这个在用户体验上始终有点很差,而若是你将对应的activity声明为 singleTask 模式,这种问题将不复存在。 数组

4)singleInstance: 设置为 singleInstance 模式的 activity 将独占一个task(感受task能够理解为进程),独占一个task的activity与其说是activity,倒不如说是一个应用,这个应用与其余activity是独立的,它有本身的上下文activity。markdown

[]( )5.说说Service的生命周期?

启动Service的方式有两种,各自的生命周期也有所不一样。 网络

1、经过startService启动Service:onCreate、onStartCommand、onDestory。 数据结构

2、经过bindService绑定Service:onCreate、onBind、onUnbind、onDestory。ide

[]( )6.什么是AIDL?AIDL是如何工做的?

AIDL(Android接口描述语言)是一种接口描述语言; 编译器能够经过aidl文件生成一段代码,经过预先定义的接口达到两个进程内部通讯的目的. 若是须要在一个Activity中, 访问另外一个Service中的某个对象, 须要先将对象转化成AIDL可识别的参数(多是多个参数), 而后使用AIDL来传递这些参数, 在消息的接收端, 使用这些参数组装成本身须要的对象。AIDL是基于接口的,但它是轻量级的。它使用代理类在客户端和实现层间传递值.。函数

[]( )7.什么是ANR 如何避免它?

在Android上,若是你的应用程序有一段时间响应不够灵敏,系统会向用户显示一个对话框,这个对话框称做应用程序无响应(ANR:Application Not Responding)对话框。用户能够选择让程序继续运行,可是,他们在使用你的应用程序时,并不但愿每次都要处理这个对话框。所以,在程序里对响应性能的设计很重要,这样,系统不会显示ANR给用户。要避免它,应该尽可能少在主线程作耗时太长的操做,应该将这些操做放在线程当中去作。

[]( )8. 请描述一下Activity 生命周期。

答: 以下图所示。共有七个周期函数,按顺序分别是: onCreate(), onStart(), onRestart(), onResume(), onPause(),onStop(), onDestroy()。

onCreate(): 建立Activity时调用,设置在该方法中,还以Bundle的形式提供对之前存储的任何状态的访问。

onStart(): Activity变为在屏幕上对用户可见时调用。

onResume(): Activity开始与用户交互时调用(不管是启动仍是从新启动一个活动,该方法老是被调用。

onPause(): Activity被暂停或收回cpu和其余资源时调用,该方法用户保护活动状态的,也是保护现场。

onStop(): Activity被中止并转为不可见阶段及后续的生命周期事件时调用。

onRestart(): Activity被从新启动时调用。该活动仍然在栈中,而不是启动新的Activity。

一、完整生命周期: 即从一个Activity从出现到消失,对应的周期方法是从onCreate()到onDestroy()。

二、可见生命周期: 当Activity处于能够用户看见的状态,但不必定能与用户交互时,将屡次执行从onStart()到onStop()。

三、前景生命周期: 当Activity处于Activity栈最顶端,可以与其余用户进行交互时,将屡次执行从onResume()到onPause()。

[]( )9. 请描述一下Intent 和 Intent Filter。

答: Intent在Android中被翻译为”意图”,他是三种应用程序基本组件-Activity,Service和broadcast receiver之间相互激活的手段。在调用Intent名称时使用ComponentName也就是类的全名时为显示调用。这种方式通常用于应用程序的内部调用,由于你不必定会知作别人写的类的全名。而Intent Filter是指意图过滤,不出如今代码中,而是出如今android Manifest文件中,以的形式。(有一个例外是broadcast receiver的intent

filter是使用Context.registerReceiver()来动态设定的,其中intent filter也是在代码中建立的)

一个intent有action,data,category等字段。一个隐式intent为了可以被某个intent filter接收,必须经过3个测试,一个intent为了被某个组件接收,则必须经过它全部的intent filter中的一个。

[]( )10. 说说Activity,Intent,Service是什么关系 ?

答: 一个Activity一般是一个单独的屏幕,每个Activity都被实现为一个单独的类,这些类都是从Activity基类中继承而来的。Activity类会显示由视图控件组成的用户接口,并对视图控件的事件作出响应。

Intent的调用是用来进行屏幕之间的切换。Intent描述应用想要作什么。Intent数据结构中两个最重要的部分是动做和动做对应的数据,一个动做对应一个动做数据。

Service是运行在后台的代码,不能与用户交互,能够运行在本身的进程里,也能够运行在其余应用程序进程的上下文里。须要一个Activity或者其余Context对象来调用。

Activity跳转Activity,Activity启动Service,Service打开Activity都须要Intent代表意图,以及传递参数,Intent是这些组件间信号传递的承载着。

[]( )11. 请介绍下ContentProvider是如何实现数据共享的。

答: 一个程序能够经过实现一个Content provider的抽象接口将本身的数据彻底暴露出去,并且Content provider是以相似数据库中的表的方式将本身的数据暴露。Content provider存储和检索数据,经过它可让全部的应用程序访问到,这也是应用程序之间惟一共享数据的方法。

要想使应用程序的数据公开化,可经过2种方法:建立一个数据本身的Content Provider或者将你的数据添加到一个已经存在的Content Provider中,前提是有相同数据类型而且有写入Content Provider的权限,Android提供了Content Resolverr,外界的程序能够经过Content Resolver接口访问Content Provider提供的数据。

[]( )12. 请介绍下Android的数据存储方式。

答: Android提供了5中存储数据的方式,分别是如下几种

一、使用Shared Preferences存储数据,用来存储key-value,pairs格式的数据,它是一个轻量级的键值存储机制,只能够存储基本数据类型。

二、使用文件存储数据,经过FileInputStream和FileOutputStream对文件进行操做。在Android中,文件是一个应用程序私有的,一个应用程序没法读写其余应用程序的文件。

三、使用SQLite数据库存储数据,Android提供的一个标准数据库,支持SQL语句。

四、使用Content Provider存储数据,是全部应用程序之间数据存储和检索的一个桥梁,它的做用就是使得各个应用程序之间实现数据共享。它是一个特殊的存储数据的类型,它提供了一套标准的接口用来获取数据,操做数据。系统也提供了音频、视频、图像和我的信息等几个经常使用的Content Provider。若是你想公开本身的私有数据,能够建立本身的Content Provider类,或者当你对这些数据拥有控制写入的权限时,将这些数据添加到Content Provider中实现共享。外部访问经过Content Resolver去访问并操做这些被暴露的数据。

五、使用网络存储数据

[]( )13. 请介绍下Android中经常使用的五种布局。

答: 最经常使用的布局方式为Absolute Layout、Relative Layout、Linear Layout、FrameLayout、TableLayout。其中Linear Layout和Relative Layout是最经常使用的方式,他们能够经过在xml配置文件或者代码中进行布局。

总结

最后为了帮助你们深入理解Android相关知识点的原理以及面试相关知识,这里放上相关的我搜集整理的Android开发中高级必知必会核心笔记,共计2968页PDF、58w字,囊括Android开发648个知识点,我把技术点整理成了视频和PDF(实际上比预期多花了很多精力),包知识脉络 + 诸多细节。

Android面试题大全(持续更新中,大厂Android核心面试题出炉
以上分享【Android开发中高级必知必会核心知识笔记】七大模块整套学习资料均免费分享,须要的小伙伴,我已经上传到GitHub了,你们自取就能够了。白嫖能够,别忘了给我点个关注哈。

【Android开发中高级必知必会核心知识笔记】

网上学习 Android的资料一大堆,但若是学到的知识不成体系,遇到问题时只是浅尝辄止,再也不深刻研究,那么很难作到真正的技术提高。但愿这份系统化的技术体系对你们有一个方向参考。

网上学习 Android的资料一大堆,但若是学到的知识不成体系,遇到问题时只是浅尝辄止,再也不深刻研究,那么很难作到真正的技术提高。但愿这份系统化的技术体系对你们有一个方向参考。

2021年虽然路途坎坷,都在说Android要没落,可是,不要慌,作本身的计划,学本身的习,竞争无处不在,每一个行业都是如此。相信本身,没有作不到的,只有想不到的。

虽然面试失败了,但我也不会放弃入职字节跳动的决心的!建议你们面试以前都要有充分的准备,顺顺利利的拿到本身心仪的offer。