摸清高级Android进阶之路的隐秘绊脚石,面试不再踩雷
Posted 程序员-吴彦祖
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了摸清高级Android进阶之路的隐秘绊脚石,面试不再踩雷相关的知识,希望对你有一定的参考价值。
Retrofit的出现,把android网络编程带入了一个新的纪元,Retrofit + OkHttp 更是目前最为犀利的一套框架,基础扎实的中高级开发都表示其乐无穷。但很多开发者对此也是云里雾里:我连OkHttp都搞不太清楚,这又来个Retrofit,更让人发懵了。
OkHttp都做了什么
OkHttp的内部实现通过一个责任链模式完成,将网络请求的各个阶段封装到各个链条中,实现了各层的解耦:
它的工作流程大概如下:
(1)通过OkhttpClient创建一个Call,并发起同步或异步请求;
(2)OkHttp会通过Dispatcher对我们所有的RealCall(Call的具体实现类)进行统一管理
(3)RealCall#execute及RealCall#enqueue分别代表同步和异步请求,这两个方法会最终调用RealCall#getResponseWithInterceptorChain()方法,从拦截器链中获取返回结果;
(4)拦截器链中,依次通过:
-
RetryAndFollowUpInterceptor重定向拦截器
-
BridgeInterceptor桥接拦截器
-
CacheInterceptor缓存拦截器
-
ConnectInterceptor连接拦截器
-
CallServerInterceptor网络拦截器
对请求依次处理,与服务的建立连接后,获取返回数据,再经过上述拦截器依次处理后,最后将结果返回给调用方。
原理看着并不复杂,但在实际工作中,很多人还是会经常遇到一些问题无处下手:
在浏览器中一切正常
通过OkHttp却无法实现了,这又是怎么一回事呢?
而且在面试中,网络编程的原理问题也是面试官经常发问的高频问题:
-
addInterceptor与addNetworkInterceptor有什么区别?
-
网络缓存如何实现的?
-
网络连接怎么实现复用?
-
OkHttp如何做网络监控?
这几个网络请求相关的问题是不是看着都非常熟悉,但就是话在嘴边不知道怎么回答?由于在开发中最常使用的HTTP与HTTPS协议,都能借助框架轻松完成,这导致很多程序员在网络基础方面非常薄弱,这也是为什么虽然调用API可以实现大部分需求,但大厂面试依旧会对原理刨根问底。
现在BATJ等大厂的面试套路都是一样的:他们会让你谈谈OkHttp的具体使用,你有在自己的项目中使用过吗?然后扩展到和这个知识点相关的更深层次的知识点细节,直到问的你答不上来为止,以此来探寻你的技术边际,这样就能更深入地了解你的技术能力。
为了帮助大家更好地学习掌握网络编程及OkHttp的核心原理,给大家分享一份高级安卓架构师整理的《Android 开发相关源码精编解析》,希望能帮助到大家更好的学习!下面是部分资料截图,篇幅有限,不能一一展示望海涵,需要完整版的朋友可以在文末免费领取!
深入解析 Retrofit 源码
深入解析 OkHttp 源码
深入解析 Glide 源码
热修复设计之热修复原理
篇幅有限,不能一一展示望海涵,需要完整版《Android 开发相关源码精编解析》的朋友可以点击下方卡片免费领取!保证免费分享!
以上是关于摸清高级Android进阶之路的隐秘绊脚石,面试不再踩雷的主要内容,如果未能解决你的问题,请参考以下文章
每天嚼烂5道精选面试题,中高级工程师的进阶之路(day01)
每天嚼烂5道精选面试题,中高级工程师的进阶之路(day01)
每天嚼烂5道精选面试题,中高级工程师的进阶之路(day01)