版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Android常见面试题及详细答案(实战版)一、Android基础核心面试题1.说说Android四大组件及各自作用四大组件是Android应用的核心基础,缺一不可,各自职责独立,分工明确:Activity:页面载体,负责和用户交互,是所有可视化界面的容器,比如首页、登录页都是独立的Activity。主要承担页面展示、事件监听、页面跳转的工作,有完整的生命周期。Service:后台服务,无界面,专门用来处理后台耗时、长期运行的任务。比如后台播放音乐、文件下载、消息后台监听,不受页面切换影响,可在应用退后台后继续运行。分为前台服务、后台服务、绑定服务。BroadcastReceiver(广播接收器):全局消息订阅与接收组件,用于跨组件、跨应用通信。系统会发送各类系统广播(开机、电量变化、网络切换、屏幕亮灭),开发者也可自定义广播,实现组件间解耦通信。ContentProvider(内容提供者):跨应用数据共享组件,主要用于对外暴露应用私有数据,实现数据安全共享。比如读取手机通讯录、相册、短信数据,底层封装了数据增删改查,自带权限控制和数据隔离。2.详细说说Activity生命周期,以及常用场景Activity生命周期是页面从创建到销毁的完整过程,核心七个方法,日常开发高频使用:onCreate():页面首次创建时调用,只执行一次。主要做初始化操作,比如布局绑定、控件初始化、数据初始化、参数获取。onStart():页面可见但未获取焦点,无法交互。页面从后台返回前台、新页面打开都会触发,多次执行。onResume():页面完全可见、获取焦点,可正常交互。所有页面操作、动画启动、实时数据刷新都可放在这里。onPause():页面失去焦点,暂停交互。弹出弹窗、跳转新页面、应用退后台都会触发,这里要暂停动画、停止耗时操作、保存临时数据。onStop():页面完全不可见,后台运行。释放大量资源,比如停止网络请求、关闭视频播放、注销监听。onDestroy():页面销毁,只执行一次。彻底释放所有资源,解绑控件、清空集合、取消订阅、关闭线程。onRestart():页面从不可见恢复为可见时触发(从后台切回前台),可做数据重新刷新操作。实战场景:视频播放在onResume播放、onPause暂停;网络请求在onDestroy取消,防止内存泄漏。3.Activity四种启动模式及适用场景启动模式用于控制Activity栈的页面复用逻辑,解决页面重复创建、栈堆积问题:standard(标准模式,默认):每次跳转都会新建实例,不管栈中是否存在该页面。适合频繁跳转的详情页、临时弹窗页面。singleTop(栈顶复用):如果目标页面在栈顶,直接复用,不新建;不在栈顶则新建。适合首页、搜索页,防止重复打开同一页面。singleTask(栈内复用):栈内存在目标页面,直接复用,并清空该页面上方所有页面;不存在则新建。适合首页、登录页,比如登录后跳转首页,清空所有登录前页面。singleInstance(单例模式):独立专属任务栈,全局只有一个实例,独占整个栈。适合系统级页面、闹钟、来电页面,全局唯一。4.横竖屏切换Activity生命周期变化,如何避免页面重建生命周期变化:默认情况下,横竖屏切换会触发Activity销毁重建,执行onPause->onStop->onDestroy->onCreate->onStart->onResume。解决方案:清单文件配置android:configChanges="orientation|screenSize",切换屏幕不重建页面,只会触发onConfigurationChanged回调,可在该方法中适配布局。固定屏幕方向,配置android:screenOrientation="portrait"强制竖屏,彻底避免切换重建。重写onSaveInstanceState保存临时数据,页面重建后在onCreate恢复数据,避免数据丢失。二、Service与广播高频面试题1.Service前台服务和后台服务的区别后台服务:优先级低,系统内存不足时会优先被回收,无前台通知,适合轻量短时后台任务,简单的缓存清理、数据同步。前台服务:优先级极高,系统一般不会回收,必须常驻状态栏显示通知,用户可见。适合长时间后台任务,比如音乐播放、后台下载、定位追踪。Android8.0之后,后台服务受限,长时间后台任务必须使用前台服务。2.绑定服务和启动服务的区别startService启动服务:生命周期独立,和启动组件无关,启动后长期后台运行,需手动stopService销毁,无法和页面通信。bindService绑定服务:和绑定组件生命周期绑定,页面销毁服务自动解绑销毁,可通过IBinder实现页面和服务的双向通信,适合需要交互的后台任务。混合使用:先start保证服务不被回收,再bind实现通信,是项目中最常用的方式。3.有序广播和无序广播的区别无序广播(普通广播):全局同步发送,所有接收器同时接收,无序、不可截断、不可拦截,效率高,适合通用通知。有序广播:按照优先级依次接收,优先级高的接收器先收到,可拦截广播,截断后续传递,也可修改广播数据后继续传递。适合需要权限控制、优先级处理的场景,比如系统拦截非法操作。三、Android内存与性能优化面试题1.常见的内存泄漏场景及解决方案内存泄漏核心原因:长生命周期对象持有短生命周期对象引用,导致短生命周期对象无法被GC回收。常见场景:静态变量持有Activity引用:静态变量生命周期等于应用进程,页面销毁后无法回收。解决方案:避免静态持有页面、控件引用,使用弱引用。匿名内部类/Handler泄漏:匿名内部类默认持有外部类引用,Handler发送延迟消息会持有页面引用,页面销毁后消息未执行,导致泄漏。解决方案:使用静态Handler+弱引用,页面销毁移除所有消息。线程/协程未取消:子线程、RxJava、Coroutine在页面销毁后仍在运行,持有页面引用。解决方案:页面销毁时终止线程、取消订阅、取消协程任务。资源未释放:Bitmap、文件流、数据库、播放器资源未关闭,监听未注销。解决方案:onDestroy中统一释放所有资源、注销监听。单例持有页面引用:单例全局唯一,持有页面引用会导致页面无法回收。解决方案:单例只持有Application上下文,不持有Activity上下文。2.说说Android卡顿优化方案AndroidUI渲染依赖主线程,主线程耗时超过16ms就会出现卡顿、掉帧,优化核心是主线程减负:布局优化:减少布局层级,用ConstraintLayout替代多层嵌套LinearLayout;减少冗余View,使用ViewStub懒加载、include复用布局;避免过度绘制。主线程优化:所有耗时操作(网络、IO、数据解析、复杂计算)全部放到子线程;主线程只做UI刷新、简单逻辑。列表优化:RecyclerView复用View,避免onCreateViewHolder频繁创建对象;优化onBindViewHolder逻辑,减少耗时;开启硬件加速,优化图片加载。图片优化:图片适配屏幕尺寸,避免加载超大图;使用压缩、缓存策略,统一图片加载框架(Glide),避免OOM和卡顿。任务拆分:使用Handler分段任务、Choreographer帧回调,拆分密集型任务,避免单次主线程耗时过长。3.什么是ANR?常见触发场景及解决办法ANR即应用无响应,系统检测到主线程阻塞超时,弹出弹窗提示用户等待或关闭应用。超时规则:按键、触摸事件超时5sBroadcastReceiver前台广播超时10sService前台服务超时20s常见场景:主线程做网络请求、文件读写、数据库大批量操作、复杂循环计算、锁阻塞。解决方案:所有耗时操作移至子线程;避免主线程阻塞、死循环、死锁;优化广播和服务的执行逻辑,减少耗时。四、Android网络与数据存储面试题1.Http和Https的区别安全性:Http明文传输,无加密,数据容易被劫持、篡改;Https基于SSL/TLS加密传输,数据加密、校验,防劫持、防篡改。端口不同:Http默认80端口,Https默认443端口。证书校验:Https需要服务器配置数字证书,验证服务端合法性,防止伪造服务器。性能差异:Https多了握手、加密解密流程,请求速度略慢,安全性远高于Http。2.项目中常用的网络框架及优势(Retrofit+OkHttp)目前主流组合是OkHttp+Retrofit+RxJava/Coroutine:OkHttp:底层网络请求框架,负责真实的网络调度,支持连接池、请求缓存、拦截器、超时重试、https适配,性能稳定,原生网络能力完善。Retrofit:基于OkHttp的封装框架,将网络请求接口化、注解化,无需手动拼接请求参数,支持自动解析Gson数据,代码简洁、易维护、易扩展,适配RESTful接口规范。核心优势:解耦、统一请求拦截、全局异常处理、统一超时配置、支持动态参数、适配协程,大幅提升网络开发效率。3.Android常见数据存储方式及适用场景SharedPreferences:轻量键值对存储,适合存储简单配置数据,比如登录状态、主题设置、缓存开关、用户配置。不适合存储大量数据、复杂数据。SQLite数据库:轻量本地数据库,结构化存储,支持增删改查、事务、索引。适合存储大量结构化数据,比如本地通讯录、聊天记录、离线列表数据。文件存储:读写本地txt、json、图片、日志文件,适合存储大文件、缓存文件、自定义日志数据。ContentProvider:跨应用数据共享,适合对外暴露私有数据。五、Android进阶核心面试题1.说说Handler消息机制原理Handler是Android主线程消息调度核心,核心组成:Handler、Message、MessageQueue、Looper。工作流程:子线程通过Handler发送Message消息,消息会存入当前线程的MessageQueue消息队列。Looper无限循环遍历消息队列,取出队列中的消息。Looper将消息分发回Handler的handleMessage方法。主线程执行handleMessage中的UI更新逻辑,实现子线程通知主线程刷新UI。核心特点:主线程默认初始化Looper和消息队列,子线程需要手动Looper.prepare()、Looper.loop();所有UI操作必须在主线程通过Handler调度。2.为什么子线程不能更新UI?根本原因是AndroidUI控件不是线程安全的。如果允许多线程同时操作UI,会导致UI状态错乱、画面闪烁、控件参数异常。系统通过ViewRootImpl的checkThread()方法做线程校验,非创建UI的主线程操作控件,直接抛出异常。单一主线程操作UI,能保证UI绘制、刷新、事件响应的有序性和稳定性。3.RecyclerView和ListView的区别及优势ListView是旧版列表控件,RecyclerView是升级版列表控件,全面替代ListView:复用机制:ListView只能复用View,频繁创建ItemView,容易卡顿;RecyclerView实现ViewHolder复用,彻底优化复用逻辑,性能更强。布局灵活:ListView只能垂直列表;RecyclerView支持线性、网格、瀑布流、横向列表,布局样式灵活。动画支持:RecyclerView自带增删改查动画,无需自定义;ListView无原生动画支持。解耦性:RecyclerView将布局、复用、动画、分割线完全拆分,模块化设计,扩展性极强。局部刷新:RecyclerView支持notifyItemChanged局部刷新,不用全局刷新,性能大幅优化。4.什么是事件分发机制?核心流程Android触摸事件(点击、滑动、长按)从Activity到ViewGroup再到View的传递过程,就是事件分发机制。核心三个方法:dispatchTouchEvent():分发事件,决定是否向下传递事件。onInterceptTouchEvent():ViewGroup独有,拦截事件,拦截后事件不再向下传递,由当前ViewGroup处理。onTouchEvent():处理事件,返回true消费事件,返回false不消费,事件向上回溯。核心流程:事件从上到下分发(Activity->ViewGroup->View),消费事件从下到上回溯,子View优先消费事件。六、Android版本适配面试题1.Android8.0后台限制适配Android8.0彻底限制后台服务,禁止后台随意启动服务,后台应用无法后台拉起服务。适配方案:长期后
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 行测国考答案及题库及完整答案详解(易错题)
- 青海省玉树藏族自治州2026年高考生物五模试卷含解析
- 第一次月考素养测试卷(1-2单元试卷)2026-2027学年二年级语文上册统编版(含答案)
- 盐的化学性质课件
- 材料科学基础(上海交大)第9章
- 2026年四川省马尔康市高三数学下册期末考试模拟考试卷A4版附答案
- 2026年网络管理员考试题及答案
- 2026年养老护理员初级考级试题及答案
- 国家开放大学《个人理财》形成性考核2参考答案
- 正确使用词语成语、熟语
- 涂装安全考试题及答案
- 安徽省江南十校2026-2027学年高三上学期9月综合素质检测 英语试题+答案
- 27.2 反比例函数的图象和性质 课件(24张) 2026-2027学年人教版九年级数学上册
- 2026年教师资格证中学生物学科教学设计全真模考卷
- 2026秋统编版语文六年级上册第二单元综合素养测评卷(含答案)
- 2026-2031年中国多射流熔融3D打印机行业市场调查研究及发展前景预测报告
- 光伏提水灌溉系统工程设计方案
- 2026年高考北京卷化学高考真题(含答案解析)
- 工程挂靠协议书
- 丹参种植项目实施方案
- 2026年秋统编版小学道德与法治五年级上册(全册)教学设计(新教材 附目录p113)
评论
0/150
提交评论