版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Android网络面试题及详细答案(实战版)一、网络基础必问(HTTP/HTTPS/TCP/UDP)1、TCP和UDP的区别?安卓开发中分别用在什么场景?参考答案:TCP是面向连接的可靠传输协议,UDP是无连接的不可靠传输协议,核心区别和业务场景如下:1)连接特性:TCP需要三次握手建立连接、四次挥手断开连接;UDP无需建立连接,直接发包。2)可靠性:TCP有确认应答、超时重传、拥塞控制、流量控制机制,数据不丢失、不乱序;UDP无任何校验机制,可能丢包、乱序。3)性能:TCP开销大、速度稍慢;UDP开销小、传输延迟低。4)适用场景:安卓中绝大多数业务网络请求(接口请求、文件上传下载)都用TCP;UDP多用于实时性优先、可少量丢包的场景,比如直播推流、语音通话、游戏实时数据传输。2、HTTP1.0、HTTP1.1、HTTP2.0的核心区别?参考答案:1)HTTP1.0:短连接为主,每次请求都要新建TCP连接,请求完成立即断开,频繁请求会产生大量握手开销;不支持断点续传、管道请求。2)HTTP1.1:默认长连接(Connection:keep-alive),一个TCP连接可多次请求复用;支持管道化请求、断点续传、缓存优化;缺陷是队头阻塞,同一连接下前一个请求未响应,后续请求全部阻塞。3)HTTP2.0:基于HTTPS,核心解决1.1的队头阻塞问题;支持多路复用,一个连接可并发处理多个请求,请求互不干扰;支持头部压缩、服务器主动推送、二进制帧传输,大幅提升高并发场景下的网络速度,目前主流安卓项目均已适配。3、HTTPS和HTTP的区别?HTTPS为什么安全?参考答案:HTTP是明文传输协议,端口80,无任何加密机制,数据传输容易被抓包、篡改、劫持;HTTPS是HTTP+SSL/TLS加密协议,端口443,传输全程加密,安全可靠。HTTPS安全的核心原因:1)传输加密:采用对称加密传输业务数据,非对称加密协商密钥,防止数据被窃听;2)完整性校验:通过摘要算法校验数据,防止传输过程中被篡改;3)身份认证:通过CA数字证书校验服务器身份,防止中间人劫持、伪造服务器。4、HTTPS握手流程简要说明?参考答案:日常面试说精简版流程即可,贴合客户端视角:1)客户端发起请求,携带支持的加密套件、协议版本;2)服务器响应,确认加密套件、返回服务器证书;3)客户端校验证书合法性(有效期、签名、域名),校验通过后生成随机密钥,用服务器公钥加密后发送给服务器;4)服务器用自身私钥解密,获取客户端随机密钥;5)双方通过协商好的对称密钥加密传输后续所有业务数据,握手完成。二、安卓网络框架核心(OkHttp/Retrofit)1、OkHttp的核心优势?为什么安卓项目普遍用它替代原生HttpURLConnection?参考答案:原生HttpURLConnectionAPI繁琐、扩展性差、无成熟缓存和重试机制,OkHttp是封装完善的高性能网络客户端,核心优势:1)自带连接池复用:自动维护TCP长连接,减少频繁握手、断开的开销,大幅提升请求效率;2)完善的重试机制:支持失败自动重试、重定向处理,适配弱网、网络波动场景;3)自带缓存策略:支持磁盘缓存、内存缓存,可灵活配置缓存有效期,减少重复请求;4)拦截器机制:支持自定义拦截器,统一处理请求头、签名、日志、token、异常捕获,适配项目统一网络配置;5)支持同步、异步请求,支持WebSocket、文件断点上传下载,功能全面。2、OkHttp拦截器的执行流程?原生拦截器和应用拦截器的区别?参考答案:OkHttp拦截器采用责任链模式,请求从客户端发出,依次经过自定义应用拦截器、桥接拦截器、缓存拦截器、连接拦截器、原生网络拦截器,到达服务器;响应原路返回,层层回调处理。两者核心区别:1)应用拦截器(自定义):最靠近业务层,只处理应用发起的请求和最终响应,不会捕获重定向、重试请求,适合统一加请求头、打印业务日志、处理业务报错;2)网络拦截器(原生):靠近网络层,可以捕获重试、重定向的完整请求,能获取真实的网络请求、响应数据,适合统计网络耗时、抓包、监控网络状态。3、Retrofit的原理?它和OkHttp的关系?参考答案:Retrofit是基于OkHttp封装的RESTful网络请求框架,本身不负责底层网络请求,只做请求封装、参数解析、接口管理。OkHttp是真正的网络请求执行载体。核心原理:通过动态代理机制,将我们定义的网络请求接口(带注解的方法),在运行时动态生成接口实现类,解析注解(GET/POST、请求参数、请求体),拼接成OkHttp的Request请求,交给OkHttp执行,最后将响应结果解析为对应实体类返回。优势:解耦网络配置和业务请求,注解化配置简洁高效,支持多种解析器(Gson、Fastjson),适配RxJava、协程,是目前安卓主流网络架构组合。4、Retrofit动态代理的作用?参考答案:Retrofit定义的网络接口都是空接口,没有具体实现,依靠JDK动态代理,在调用接口方法时,拦截方法调用,解析方法上的所有注解和参数,自动构建完整的HTTP请求报文,无需开发者手动拼接URL、请求头、请求体。核心作用就是简化网络请求代码,统一请求构建逻辑,实现接口与请求实现的解耦。三、安卓网络核心问题(实战避坑)1、安卓为什么不能在主线程请求网络?如何解决?参考答案:从Android4.0开始,系统强制禁止主线程网络请求,会直接抛出NetworkOnMainThread异常。原因:网络请求属于耗时操作(几百毫秒到数秒不等),主线程负责UI绘制、事件响应,阻塞后会导致界面卡顿、ANR(应用无响应),严重影响用户体验。解决方案:1)使用子线程、线程池执行网络请求;2)使用RxJava线程调度、Kotlin协程(主流方案,简洁高效);3)通过Retrofit、OkHttp自带的异步请求方法执行。2、网络请求常见异常有哪些?分别怎么处理?参考答案:1)无网络异常:设备未联网、飞行模式,优先判断网络状态,弹窗提示用户检查网络;2)超时异常(连接超时、读取超时):多为弱网、服务器延迟,可配置合理超时时间,增加重试机制,提示用户网络不佳;3)证书异常:HTTPS证书过期、域名不匹配、证书不合法,正式环境需使用合法CA证书,测试环境可临时适配自定义证书;4)4xx客户端错误:401token失效(重新登录、刷新token)、403权限不足、404接口地址错误(核对接口地址);5)5xx服务端错误:服务器崩溃、接口异常,无需本地处理,提示用户稍后重试,同步反馈服务端排查;6)数据解析异常:返回字段格式变更、字段缺失,做容错解析,避免崩溃,默认返回空数据。3、Token过期如何统一处理?(面试高频)参考答案:项目中通过OkHttp拦截器统一处理,不侵入业务代码,核心流程:1)所有网络请求统一在拦截器添加Authorization携带Token;2)响应拦截器拦截返回码,识别401/403Token过期状态;3)触发刷新Token接口(同步请求,避免并发刷新),用refreshToken获取新的有效token;4)刷新成功:保存新token,重新发起本次失败的请求,用户无感知;5)刷新失败:说明登录状态完全失效,清空本地登录信息,跳转登录页,提示用户重新登录;6)加锁处理,防止多个请求同时触发刷新token,造成接口重复调用。4、如何解决网络请求并发问题、重复请求问题?参考答案:1)重复请求:短时间内多次点击按钮、快速刷新页面导致同一请求重复发起。解决方案:请求发起后锁定按钮、页面加载中弹窗拦截重复点击;通过请求标识(URL+参数)缓存正在执行的请求,重复请求直接拦截丢弃;2)并发冲突:多个请求依赖同一数据、同时刷新token等场景。解决方案:使用线程锁、单例任务执行;通过协程作用域、RxJava调度控制请求顺序;统一封装请求队列,管控并发请求。四、网络优化与弱网适配(进阶面试题)1、安卓项目网络优化方案有哪些?参考答案:1)连接优化:依靠OkHttp连接池复用长连接,减少TCP握手开销;合理配置超时时间,适配不同网络场景;2)缓存优化:配置OkHttp磁盘缓存、内存缓存,静态数据、首页数据缓存复用,减少重复请求;接口支持缓存策略,区分强制刷新和缓存读取;3)数据优化:接口返回精简数据,避免冗余字段;图片、资源文件压缩传输;采用分页加载,避免一次性加载大量数据;4)协议优化:重要接口、高并发场景适配HTTP2.0,利用多路复用提升并发效率;5)异常优化:统一重试、容错机制,弱网自动重试,失败友好提示,避免无效请求;6)请求合并:多个零散小接口请求,后台合并为一个接口,减少请求次数。2、弱网、断网如何适配?参考答案:1)网络状态监听:通过系统网络广播、Jetpack网络状态库,实时监听网络连接、Wi-Fi/流量切换、断网状态;2)弱网适配:延长弱网超时时间,开启柔性重试机制,避免频繁请求失败;降低加载动画刷新频率,减少资源消耗;3)断网适配:断网时立即拦截所有网络请求,弹窗提示用户无网络,不发起无效请求;本地缓存关键数据,断网时展示缓存内容,避免页面空白;4)网络恢复:监听网络恢复事件,自动刷新页面数据,恢复正常业务请求。3、OkHttp连接池原理?如何配置优化?参考答案:OkHttp会缓存空闲的TCP长连接,默认保持5个空闲连接,空闲超时5分钟。同一域名的多次请求会复用已有连接,无需重复握手,大幅提升请求速度。优化配置:根据项目业务场景,调整空闲连接最大数量、空闲超时时间;高频请求的商业项目可适当增大连接数,低频项目保持默认即可,避免资源占用过多。同时在页面销毁、应用退出时,关闭闲置连接,释放资源。五、WebSocket与长连接面试题1、WebSocket和HTTP的区别?适用场景?参考答案:HTTP是短/长轮询的单向通信,只能客户端主动请求、服务器响应,服务器无法主动推送数据;WebSocket是全双工长连接通信协议,一次握手建立连接后,客户端和服务器可随时互相推送数据,连接持续有效。适用场景:HTTP适用于普通接口查询、数据提交等一次性请求;WebSocket适用于需要实时通信的场景,比如聊天消息、实时通知、直播弹幕、实时数据监控、在线状态同步。2、WebSocket断连重连如何实现?参考答案:1)监听WebSocket关闭、异常回调,触发断连状态;2)开启延时重连机制,采用指数退避策略(第一次1s、第二次2s、4s...),避免频繁重连消耗资源;3)监听手机网络恢复、前台切回事件,主动触发重连;4)重连成功后,同步丢失的消息、状态数据,保证业务连续性;5)页面销毁、应用退后台时主动关闭连接,避免内存泄漏。六、常见面试压轴题1、简述安卓网络请求完整架构流程(面试官常问)参考答案:业务层(Activity/Fragment/ViewModel)发起请求→网络工具类统一封装→Retrofit接口定义、动态代理构建请求→OkHttp拦截器统一处理请求头、Token、日志、缓存→OkHttp连接池复用连接→底层TCP/HTTPS传输→服务器响应数据→原路返回,拦截器处理异常、刷新Token→数据解析后回调业务层,同时做全局异常捕获、页面状态更新。2、网络请求中如何避免内存泄漏?参考答案:1)杜绝静态持有Activity、Fragment上下文,使用应用上下文;2)页面销毁时,取消当前页面所有未完成的网络请求(Retrofit取消请求、协程取消作用域、RxJava取消订阅);3)避免匿名内部类、异步线程持有页面引用,使用弱引用;4)WebSocket、长连接在页面销毁、应用退后台时主动关闭,释放连接资源。3、GET和POST区别?面试不要
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 济宁市梁山县2025届数学三年级下学期期中复习检测试题含答案
- 2026年福建省长乐市高三生物上册期末考试模拟卷及答案
- 济南市长清区2025届三年级数学第二学期期末学业质量监测模拟试题含答案解析
- 洞口县2025届四下数学期末质量检测模拟试题(含解析)
- 洛阳市涧西区2025-2026学年四年级数学下学期期中统考模拟试题(含答案)
- 泸州市合江县2025年数学三年级下学期期中调研模拟试题含答案
- 化工总控工班组管理评优考核试卷含答案
- 调解员安全规程测试考核试卷含答案
- 电火花成形机床操作工岗前工作意识考核试卷含答案
- 驯马工岗前基础综合考核试卷含答案
- 生产运作管理 第7版 课件 第十一章 制造业的作业计划与控制
- 2026年中国电信校园招聘考试笔试试题及答案
- 重庆市第九人民医院招聘笔试真题2025
- 化工原理课件第二章总结
- 2025年多媒体应用设计师考试真题及答案
- 科技金融对专精特新企业创新的影响结题报告
- (2026版)《国有企业领导人员廉洁从业规定培训》课件
- 髋关节疾病课件
- 植物病虫害综合治理和生物防治
- TGF-β通路促进肌腱愈合-洞察及研究
- MDT测井及资料应用指南
评论
0/150
提交评论