Android高频网络面试专题必知必会,android开发环境比较

本文详细解读了OkHttp库的关键特性,如http2、连接池优化、GZIP压缩、缓存策略和自动重试机制。介绍了OkHttp的源码结构和使用方法,并对比了Volley。重点在于提升网络请求效率和用户体验。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、支持http2,对一台机器的所有请求共享同一个socket

2、内置连接池,支持连接复用,减少延迟

3、支持透明的gzip压缩响应体

GZIP是网站压缩加速的一种技术,对于开启后可以加快我们网站的打开速度,原理是经过服务器压缩,客户端浏览器快速解压的原理,可以大大减少了网站的流量

开GZIP有什么好处?Gzip开启以后会将输出到用户浏览器的数据进行压缩的处理,这样就会减小通过网络传输的数据量,提高浏览器启动页面的速度。

4、通过缓存避免重复的请求

强制缓存

客户端第一次请求数据时,服务端返回缓存的过期时间(通过字段 Expires 与 Cache-Control 标识),后续如果缓存没有过期就直接使用缓存,无需请求服务端;否则向服务端请求数据。

对比缓存

对比缓存时,每次请求都需要与服务器交互,由服务端判断是否可以使用缓存。

5、请求失败时自动重试主机的其他ip,自动重定向

6、好用的API

2、看过OkHttp的源码吗,简单说一下

第一,通过一个构建者模式(Request.Builder)构建所有的request,然后分发到Dispatcher(分发器);

第二,Dispatcher再把request分发到HttpEngine(真正干活的类)中,HttpEngine首先要看一下本次请求有没有cache(缓存),如果有缓存,就从缓存中拿到信息,然后返回给response;如果没有缓存,HttpEngine就把request分发到ConnectionPool(连接池)中;

第三,在ConnectionPool(连接池)中,通过Connection发送请求,首先选择Route(路由)和Platfrom(平台),然后到达Server(Socket),获取到Data,然后返回response。

3、OkHttp的使用

1、创建OkHttpClient对象:OkHttpClient client = new OkHttpClient();

2、创建网络请求:Request request = new Request.Builder() .url(“http://sethfeng.github.io/index.html”) .build();

3、得到Call对象:Call call = client.newCall(request); //实际创建的是一个RealCall对象,RealCall中有一个对client对象的引用

4、发送请求,获取返回的数据

发送同步请求:Response response = call.excute();

发送异步请求:

call.enqueue(new Callback() {

@Override

public void onFailure(Request request, IOException e) {

}

@Override

public void onResponse(Response response) throws IOException {

}

});

4、volley

最后

其实Android开发的知识点就那么多,面试问来问去还是那么点东西。所以面试没有其他的诀窍,只看你对这些知识点准备的充分程度。so,出去面试时先看看自己复习到了哪个阶段就好。

下图是我进阶学习所积累的历年腾讯、头条、阿里、美团、字节跳动等公司2019-2021年的高频面试题,博主还把这些技术点整理成了视频和PDF(实际上比预期多花了不少精力),包含知识脉络 + 诸多细节

以上【历年大厂高级工程师面试题集】、【Android高级进阶教学视频】、【Android高级知识点学习PDF】皆无偿分享给大家。如有需要,点击**【Android架构视频+BATJ面试专题PDF+学习笔记】**即可免费获取。

E4%BA%9B%EF%BC%9F%E5%A6%82%E4%BD%95%E9%9D%A2%E8%AF%95%E6%8B%BF%E9%AB%98%E8%96%AA%EF%BC%81.md)**即可免费获取。

整理不易,望各位看官老爷点个关注转发,谢谢!祝大家都能得到自己心仪工作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值