版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
360Android面试真题及详细参考答案(实操接地气版)说明:本题库精选360校招、社招Android岗位高频面试题,贴合360产品安全、性能优化、稳定适配的核心考察方向,答案摒弃空洞套话,全部结合实际开发场景作答,适配初、中级Android开发面试,考场直接可用。一、Android基础核心(必考基础)题目1:说说Activity的四种启动模式和实际应用场景参考答案:AndroidActivity一共有四种标准启动模式,核心差异是任务栈的复用规则,日常开发中会根据页面业务场景选择使用,具体如下:第一是standard标准模式,这是默认模式。每次启动Activity都会创建一个全新实例,不管任务栈中是否已有该页面,所有新页面都会压入当前任务栈。一般用于首页、详情页等无复用需求的普通页面,也是日常开发最常用的模式。第二是singleTop栈顶复用模式。如果要启动的Activity已经处于任务栈栈顶,不会新建实例,只会回调onNewIntent方法;如果不在栈顶,依然会新建实例。适合搜索页、弹窗页面这类需要频繁打开,且不需要重复创建的页面,能有效减少页面冗余。第三是singleTask栈内复用模式。启动页面时,会检测当前任务栈内是否存在该Activity实例,如果存在,会清空该实例上方的所有页面,让当前页面置顶,同时回调onNewIntent;不存在则新建。非常适合应用首页、登录页,比如从多个子页面返回首页时,直接清空中间页面,避免层层返回的繁琐操作。第四是singleInstance单例模式。会单独开辟一个独立任务栈,且该栈内只有这一个Activity实例,全局唯一。一般用于系统级页面、弹窗悬浮页面,比如来电显示、权限提醒页面,保证页面独立不被其他页面干扰。题目2:Handler的工作原理,以及为什么会出现内存泄漏参考答案:Handler是Android主线程消息机制的核心,主要作用是实现子线程切换到主线程更新UI,整体由Handler、Message、MessageQueue、Looper四部分配合工作。工作流程很简单:子线程通过Handler发送Message消息,消息会存入当前线程的MessageQueue消息队列中;Looper会无限循环从队列中取出消息,分发到Handler的handleMessage方法中,最终在主线程执行对应逻辑。主线程默认初始化Looper,子线程需要手动调用Looper.prepare()和Looper.loop()才能使用消息机制。日常开发中Handler内存泄漏是高频问题,核心原因是匿名内部类的隐式引用。我们在Activity中创建匿名Handler对象时,会隐式持有Activity的引用。如果子线程有延时消息、循环消息未执行完毕,此时关闭Activity,系统无法回收Activity实例,就会造成内存泄漏。解决办法主要有两种:一是使用静态内部类改写Handler,静态类不会持有外部Activity引用;二是在Activity销毁时,在onDestroy方法中调用handler.removeCallbacksAndMessages(null),清空所有未执行的消息和任务,切断引用关联。题目3:ANR是什么?触发场景和规避方案有哪些参考答案:ANR就是应用无响应,是系统检测到主线程长时间阻塞、无法响应用户操作后弹出的异常提示,也是Android开发中重点优化的问题,360产品对应用流畅度和稳定性要求很高,这块是重点考察点。常见触发场景有三类:第一是主线程阻塞,Activity、Dialog等页面5秒内未响应触摸、点击事件;第二是Service前台服务20秒、后台服务10秒内未执行完成;第三是广播接收器10秒内未处理完逻辑。日常开发中规避ANR的核心就是杜绝主线程耗时操作。具体落地方式:网络请求、文件读写、数据库查询、大数据解析等耗时逻辑,全部放到子线程、协程或者WorkManager中执行;主线程只做UI刷新、事件分发等轻量操作。同时避免主线程频繁卡顿、循环耗时、锁等待等问题,页面销毁时及时终止未完成的耗时任务。二、框架与源码原理(进阶高频)题目4:说说Binder通信原理,为什么Android选用Binder而非Socket参考答案:Binder是Android专属的跨进程通信机制,核心是基于内存映射实现进程间数据传递,也是Android四大组件跨进程交互的底层核心支撑。它的核心工作逻辑:系统会开辟一块共享内存区域,服务端进程将数据写入共享内存,客户端进程直接读取,无需多次拷贝。整体架构分为客户端、服务端、Binder驱动、内核层四部分,驱动负责管控数据传输和进程调度,保证跨进程通信的稳定性。Android放弃Socket、管道等传统进程通信方式,选用Binder主要有三个原因。第一是效率更高,Binder只需要一次数据拷贝,Socket需要两次拷贝,传输速度更快,适配移动端轻量、高频的通信场景;第二是安全性更强,Binder支持精准的进程UID、PID校验,能有效防止恶意进程伪造通信,契合360产品的安全核心需求;第三是支持同步异步双向通信,架构更轻量化,适配移动端资源受限的特性。题目5:ARouter的核心作用和工作流程,项目中如何使用参考答案:ARouter是Android主流的页面路由框架,核心作用是解耦页面跳转、统一路由管理,解决大型项目页面耦合严重、跳转繁琐、组件化通信困难的问题,中大型项目基本都会接入使用。它的核心工作流程分为三步:首先是编译期注解处理,通过APT技术扫描项目中所有标注@Route注解的页面、服务,自动生成路由映射表,记录路径和对应页面的映射关系;其次是初始化加载,应用启动时加载路由映射表,完成路径注册;最后是运行时跳转,开发者通过传入路由路径、携带参数,框架自动匹配对应页面,完成跳转、参数传递、拦截器校验等逻辑。我在项目中的落地使用:一是统一管理所有页面路由地址,避免硬编码跳转,减少页面跳转错误;二是利用拦截器实现登录校验、权限拦截、埋点统计等通用逻辑;三是支持组件化跨模块跳转,不同业务模块无需相互依赖,大幅降低项目耦合度,方便后期迭代维护。题目6:Kotlin协程和RxJava的区别,项目中如何选型参考答案:两者都是用于处理异步任务、线程调度的工具,核心差异在生命周期管理、学习成本和官方适配性,日常选型主要看项目技术栈和业务场景。核心区别有三点:第一是生命周期管理,RxJava需要手动通过CompositeDisposable管理订阅,页面销毁时手动取消,容易出现遗漏导致内存泄漏;Kotlin协程依托ViewModelScope、LifecycleScope,能跟随页面生命周期自动取消任务,无需手动管控,更安全。第二是学习成本,RxJava操作符繁多、链式调用逻辑复杂,上手和维护成本高;协程语法接近原生,简洁易懂,学习成本更低。第三是官方支持,协程是Google官方主推的异步方案,持续迭代优化,RxJava目前基本停止更新,属于老旧技术方案。项目选型我会遵循两个原则:纯Kotlin新项目,全部使用协程,适配官方技术趋势,降低维护成本;Java和Kotlin混合的老项目,原有RxJava逻辑保留不改动,新增业务统一使用协程,逐步迭代替换,保证项目稳定过渡。三、性能优化(360重点考察)题目7:APP启动速度优化有哪些实操方案参考答案:APP启动优化核心是减少主线程耗时、拆分初始化任务、延迟非必要加载,分为冷启动、热启动优化,重点优化冷启动,我在项目中落地过完整的优化方案。第一,优化主线程任务。移除Application、首页Activity主线程中的耗时操作,比如第三方SDK初始化、数据库初始化、配置读取等,全部放到子线程或延迟初始化。只保留核心业务必须的初始化逻辑,保证主线程快速完成页面渲染。第二,任务拆分与异步调度。将启动任务分为核心任务和非核心任务,核心任务优先执行,非核心任务通过延迟任务、空闲任务调度,等页面渲染完成、用户可交互后再执行。同时利用多线程并行处理初始化任务,缩短整体耗时。第三,资源与布局优化。精简首页布局层级,减少嵌套、冗余控件,使用ViewStub延迟加载非首屏布局;压缩启动页图片、资源文件,避免大图加载卡顿;移除无用资源、冗余代码,减少编译和加载耗时。第四,系统配置优化。关闭应用启动默认动画、优化进程优先级,针对低版本机型做适配兼容,避免机型适配导致的启动卡顿。通过以上优化,能明显降低冷启动耗时,提升用户初始体验。题目8:Android内存泄漏常见场景及解决办法参考答案:内存泄漏是Android稳定性优化的核心,日常开发中高频场景主要有五类,都有成熟的落地解决方案。一是Handler内存泄漏,也就是前面提到的匿名Handler持有页面引用问题。解决方式:静态内部类+弱引用,页面销毁时清空所有消息任务。二是匿名内部类、lambda表达式泄漏。比如子线程、定时器、异步任务匿名内部类,长期持有Activity、Fragment引用,页面销毁后任务未结束,造成泄漏。解决方式:页面销毁时主动终止线程、取消定时器,避免后台任务残留。三是静态变量持有页面引用。全局静态变量存储Activity、View实例,导致页面无法被GC回收。解决方式:杜绝静态引用页面、控件,如需使用及时置空。四是资源未释放。比如Bitmap、文件流、数据库游标、网络请求、播放器资源等,使用完毕后未关闭、未回收,长期占用内存。解决方式:在页面销毁、资源使用结束后,主动close、recycle释放资源。五是集合未清理。List、Map等集合长期存储无用对象,持续占用内存。解决方式:适时清空集合、移除无用数据,避免集合无限膨胀。题目9:如何解决APP卡顿、掉帧问题参考答案:APP卡顿、掉帧本质是主线程耗时过多、UI渲染超时,Android正常流畅标准是60帧每秒,单帧渲染耗时超过16ms就会出现掉帧,优化核心是压缩单帧耗时。首先是排查主线程耗时操作,杜绝主线程做网络请求、数据解析、循环遍历、大量计算等耗时逻辑,所有耗时操作全部异步处理,保证主线程只负责UI渲染和事件分发。其次是优化UI渲染性能。精简布局层级,减少ConstraintLayout、LinearLayout嵌套,避免过度绘制;减少自定义View中onDraw、onMeasure的耗时逻辑,避免频繁重绘;使用图片缓存、缩略图展示,避免大图实时渲染卡顿。最后是精准监控和定位问题。开发中可以通过Choreographer监控帧回调,检测掉帧场景;通过Systrace、Profiler工具定位卡顿代码点位,针对性优化。同时避免频繁刷新UI、频繁请求布局,减少系统渲染压力。四、安全与适配(360特色高频)题目10:Android应用安全加固有哪些常用方案参考答案:360主打安全产品,应用安全加固是核心考察点,日常开发中主要从防篡改、防逆向、防调试、数据安全四个维度做加固优化。第一是代码加固。开启代码混淆,移除代码注释、精简变量名、打乱代码逻辑,增加逆向难度;接入加固工具,对dex文件加密、壳加固,防止反编译获取核心代码和业务逻辑。第二是防调试防篡改。禁用应用调试模式,检测设备调试状态、模拟器环境,发现异常直接退出应用;校验APK签名信息、文件完整性,防止应用被二次打包、篡改破解。第三是数据安全加固。敏感数据不直接明文存储,使用加密算法加密后存入SP、数据库;杜绝本地硬编码密钥、接口地址、隐私参数;用户隐私数据传输全程使用HTTPS,避免明文传输被窃取。第四是权限安全管控。适配Android高版本权限机制,动态申请必要权限,杜绝过度申请隐私权限;对高危权限做二次校验,防止恶意调用权限窃取数据;屏蔽系统漏洞风险,适配最新系统安全规则。题目11:Android高版本适配重点有哪些参考答案:日常迭代中需要持续适配Android新版本特性,核心适配重点集中在权限、隐私、组件启动、网络规则四大块。一是权限适配。Android12以上细化隐私权限,定位、相机、麦克风等权限分为精准和模糊权限,需要适配动态申请逻辑;新增后台权限、单次授权机制,需要兼容用户临时授权场景,避免功能异常。二是组件启动限制。高版本禁止后台静默启动Activity,杜绝应用后台弹窗、恶意唤醒场景,开发中需要适配前台可见场景启动页面,后台场景改用通知、弹窗提示替代页面跳转。三是网络适配。高版本默认禁止明文HTTP请求,强制使用HTTPS,需要统一适配网络证书、配置网络安全策略,兼容新旧接口请求规则。四是隐私合规适配。禁止读取设备唯一标识、隐私信息,适配新的设备信息获取规则;规范日志打印、数据上报,杜绝隐私数据违规采集,符合应用商店合规要求。五、实操场景与综合问答题目12:ListView和RecyclerView的区别,项目中为什么弃用ListView参考答案:两者都是列表展示控件,核心差异是复用机制、性能优化和功能扩展性,目前项目中基本全部使用RecyclerView,ListView基本不再使用。复用机制上,ListView是固定的ViewHolder复用,缓存层级单一,只有两级缓存,快速滑动时容易频繁创建、销毁View,卡顿明显;RecyclerView具备四级缓存机制,复用效率更高,能有效减少View创建和渲染耗时,滑动更流畅。功能扩展性上,ListView仅支持垂直列表,布局样式单一,拓展横向列表、网格、瀑布流、分组列表需要大量自定义代码;RecyclerView通过LayoutManager可以快速实现多种布局样式,拓展性极强。同时RecyclerView自带Item动画、局部刷新、分割线配置,无需手动封装,开发效率更高。稳定性上,ListView存在高频复用错乱问题,需要手动优化适配;RecyclerView从底层解决了复用错乱、数据刷新异常的问题,稳定性更好,适配复杂列表业务场景。题目13:遇到APP兼容机型闪退,你如何排查和解决参考答案:机型兼容闪退是线上高频问题,我会按照「日志定位-场景复现-针对性修复-回归验证」的流程排查解决。首先,收集线上崩溃日志,优先查看崩溃机型、系
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 建筑变形测量和竣工总图的测绘
- 地磁场网络可视化初步研究
- 2026年人教版九年级物理上册第4章习题解析及答案
- 2026年人教版七年级数学下册第3单元综合测试卷及答案
- 2026年江苏省南京市外国语学校七年级数学下册第7单元综合练习题及答案
- 2026年部编版小学五年级英语课后练习题第3单元及答案
- 情商管理课堂版
- 重庆市实验中学八年级物理上册第9章机械能测试卷及答案
- 湘教版高二化学上册第4章化学反应速率测试卷及答案
- 心电图诊断4心律失常讲义
- 住院患者中途离院风险管控专家共识
- 飞轮电化学混合独立储能电站项目安全生产应急管理预案
- 2026学年高二物理上册第一次月考含答案及解析
- 初中音乐八年级下册《阳关三叠》教学设计
- 伦敦美甲行业调研分析报告
- 美发店分红权合同范本
- 药事法规和药学知识培训课件
- 《管理学基础(第3版)》高职全套教学课件
- 快速换型SMED教学课件
- 保安大门岗培训
- 石油化工安装工程概算指标说明(2019版)
评论
0/150
提交评论