网易有道Android校招(卷一)
第一题 Volley和OkHttp的区别
问到这个我就蒙了,因为我用过OkHttp但是没想到会这样问我,真是防不胜防o(╥﹏╥)o。
我在网上也找了一些说法:
Volley:
Volley还自带图片加载功能。
官方说法是适合做一些数据量不大,但通信频繁的操作,对大数据量的下载表现的非常糟糕,而且不支持Https,这是为什么呢?
在其他地方发现的回答:
Volley的Request.getBody返回的是byte[],大内存的下载导致内存溢出,而okhttp内部用的是NIO和OKIo,适合大数据量的下载。
NIO和OKIO都是新IO,采用文件映射的方式,将文件的一部分映射到内存区域,就像访问内存一样访问文件,所以新IO相当于对文件直接操作,不会占用很大的系统内存,支持大文件下载。
第二题:简述一下DNS解析过程
第一步:检查浏览器缓存中是否缓存过该域名对应的IP地址
第二步:如果在浏览器缓存中没有找到IP,将在本机系统中查找是否有缓存
第三步:向本地域名解析服务系统发起域名解析请求
本地域名服务系统就是校园网服务器或者是运行商服务器
第四步:向根域名解析服务器发起域名解析请求
第五步:根域名解析服务器返回顶级域名解析服务器地址
第六步:向顶级域名服务器发起解析请求
第七步:顶级域名服务器接收请求并返回Name Server服务器
第八步:Name Server服务器返回IP地址给本地服务器
第九步:本地域名服务器缓存解析结果
第十步:返回解析结果给用户
第三题:cookie和session的区别
总的来说cookie和session都是来存放用户数据的。
- cookie数据存放在客户端的浏览器上,session数据存放在服务器上
- cookie不安全,别人可以分析本地的cookie并进行cookie欺骗
3.session会在一定时间保存在服务器上。当访问增多时,会占用服务器的性能 - 单个cookie保存的数据不能超过4k,很多浏览器都限制在一个站点保存20个cookie
第四题view动画原理
在这里只能简单总结一下,所谓view动画就是补间动画,补间动画其实不会改变view的位置大小等等,只是改变view显示的区域。
原理其实就在draw中不断调用getTransformation来判断动画是否完成然后不断的调用invalidate来请求重绘,就是调用canves不断的绘制,所以这也解释了为什么view只是改变了视觉上的位置,实际位置并没有改变。
属性动画的原理稍微复杂一点,利用屏幕的刷新机制来不断的 改变view