写点什么

Android 高频网络面试专题必知必会

用户头像
Android架构
关注
发布于: 1 小时前

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


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


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


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


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


强制缓存


客户端第一次请求数据时,服务端返回缓存的过期时间(通过字段 Expires


《Android学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义》
浏览器打开:qq.cn.hn/FTe 免费领取
复制代码


与 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


https://bxbxbai.github.io/2014/09/14/android-working-with-volley/


http://blog.csdn.net/guolin_blog/article/details/17656437


5、如何控制 TCP 连接时的拥塞


http://blog.csdn.net/yechaodechuntian/article/details/25429143


6、三次握手


http://blog.csdn.net/whuslei/article/details/6667471

用户头像

Android架构

关注

还未添加个人签名 2021.10.31 加入

还未添加个人简介

评论

发布
暂无评论
Android高频网络面试专题必知必会