Android面试一天一题(Day 40:标配RxJava+Retrofit+OkHttp该怎么面?)

这近两年RxJava和Retrofit都很热门,Android SDK4.4版本后其HttpURLConnection的内部实现已经变为OkHttp,很多公司也在开始尝试使用RxJava+Retrofit+OkHttp组合做为应用框架的根基。网上这类教程也遍地开花,不管是工作几年的Android工程师们,还是在象牙塔中的准工程师们都把“RxJava+Retrofit+OkHttp的组合”定为了自己的标配。

不过问题也就来了,如果大家的框架都是同一个组合,那么面试官怎么考察不同的面试者对这个框架的理解和应用呢?或者换一个角度说,你作为面试者,怎么样在简历或者面试中体现你对“标配”的理解和运用,来突出自己呢?

面试题:你是怎么搭建Android应用框架的?

如果问这样的面试题,我想(我也试过)很多人都会回答上面所说的“标配”组合,顶多再加下MVP或者MVVM模式,然后就构成了一个比较流行的应用框架。

不可否认这确实是一个不错的选择,那么如果是我们在整合这些库和模式成为一个框架,我们是基于什么样的原则选择它们的呢?

RxJava
给我们的项目引入响应式编程方式,让异步方式变得更简洁,而且它的简洁与众不同之处在于,随着程序逻辑变得越来越复杂,它依然能够保持简洁。它流式编程的思想,丰富的操作符,线程的任意切换等优点广受大家的喜爱。

响应式编程是一种面向数据流和变化传播的编程范式。这意味着可以在编程语言中很方便地表达静态或动态的数据流,而相关的计算模型会自动将变化的值通过数据流进行传播。

Retrofit
Retrofit是一个RESTful的Http网络请求框架的封装。注意这里并没有说它是网络请求框架,主要原因在于网络请求的工作并不是Retrofit来完成的。

Retrofit 2.0开始内置OkHttp,前者专注于接口的封装,后者专注于网络请求的高效,二者分工协作。

而且Retrofit提供不同的Converter实现(也可以自定义),同时提供RxJava支持(返回Observable对象),配合Gson和RxJava,你可以用很少的代码就实现请求、返回数据解析和操作等功能。

OkHttp
OkHttp是Retrofit底层使用的Http请求库,都是Square公司的开源产品。OkHttp是一个快速、高效的Http客户端实现,它帮我们完成了很多很多事情:

  • 支持SPDY, 可以合并多个到同一个主机的请求
  • 使用连接池技术减少请求的延迟(如果SPDY是可用的话)
  • 使用GZIP压缩减少传输的数据量
  • 缓存响应避免重复的网络请求
  • ......

OkHttp还提供了拦截器(Interceptors),方便我们来监控,改写和重试HTTP访问。通过拦截器,我们很容易就能实现对Http的请求和响应记录到日志。

整合

如果我们直接这样组合就认为是一个应用框架的话,那我认为你还没有真正认识框架,或者没有遇到稍大一点复杂一点的项目,所以你毫不费力就有了自己“高大上”的框架。

但是在你整合这些库时,你更应该学习一下他们是怎么能无缝地对接上的,这一点也是我认为可以问面试者的一个重要的点。

如Retrofit的解耦方式:

1、通过注解来配置请求参数;

2、通过工厂来生成CallAdapter,Converter。

  • 你可以使用不同的请求适配器(CallAdapter),比如RxJava;
  • 你可以使用不同的反序列化工具(Converter),比如Gson、protobuff等。
Retrofit retrofit = new Retrofit.Builder()
  .baseUrl("http://api.github.com/api/")
  .addConverterFactory(GsonConverterFactory.create())
  .addCallAdapterFactory(RxJavaCallAdapterFactory.create())
  .build();

Retrofit是如何做到的呢?其间的实现代码值得好好看看,好在代码量并不是很大,看前先学习一个Java动态代理方面的知识,也可缓解一些“痛苦”。

所以总结果一下,关于标配我会这样问:RxJava+Retrofit+OkHttp的内部是如何整合在一起的,还有就是它们如何和数据与业务逻辑层进行整合?

看大家的热情,也许稍后会就这个整合进行案列展示。

小结

很多面试者只是把“RxJava+Retrofit+OkHttp”的使用做为标配了,即使你用了这个组合,它对于自身的技能或者架构能力提升其实并不大,相反因为太容易了,而且封装得比较好还会减少你遇到问题的机会,当然也会让你失去提升的机会。

所以,我关注怎么整合它们,并学会他们整合在一起的具体方法和手段。

相关面试题
1、MVP和MVVM模式:
“Android面试一天一题(Day 33:Android开发的套路MVP & MVVM)”
2、第三方开源库:
“Android面试一天一题(Day 32:谈谈使用过的第三方开源库)”

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,015评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,262评论 1 292
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,727评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,986评论 0 205
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,363评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,610评论 1 219
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,871评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,582评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,297评论 1 242
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,551评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,053评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,385评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,035评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,079评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,841评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,648评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,550评论 2 270

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 170,569评论 25 707
  • afinalAfinal是一个android的ioc,orm框架 https://github.com/yangf...
    passiontim阅读 15,087评论 2 44
  • 天空在逐渐的褪色 雨滴却还不忍告别 在草丛里 在石阶上 还有我那摊开的手心儿 都有她的痕迹 她是一个调皮的姑娘 在...
    月诚阅读 307评论 0 2
  • 上一篇文章《泥城 食记》介绍了几家景德镇的美食,显然这一篇是要介绍景德镇的美景。景德镇最美的景色无疑是陶瓷。这几...
    亲爱的戈多在哪阅读 613评论 6 0
  • 首先介绍下该片导演:刘国楠,一位西北汉子,他竟是老谋子的副导以及很多广告,宣传片的导演,这是他第一次独立执导...
    妞crystal阅读 349评论 0 0