将来跳槽用

面试题总结(一)

2016-09-07  本文已影响0人  中二期de馒头
p28658872.jpg

get和post请求的区别

1、安全性问题

a. get请求的参数全部暴露在接口中或网址中,且参数以明文的形式出现,这个请求方式一般叫做文明请求或者傻瓜式请求。
b. post请求的参数一般是以字典的方式进行拼接,参数在请求数据区存放着,相对于get比较安全。

2、对文件大小的要求

get请求一般情况下不允许向服务器上传文件(图片文件、pdf文件、音视频文件),get请求在提交时,传输数据会受到URL长度的限制。
一般情况下使用post请求来进行文件的上传操作,post请求不是通过url传值,理论上数据不受到限制。

3.总结

如果从服务器获取数据或者查询数据使用get请求,如果上传数据到服务器或者修改服务器上数据使用post请求

SDWebImage的实现原理

SDWebImage是用来加载网络图片的第三方库,实现了异步请求数据,并且实现了图片的缓存。

SDWebImage的实现原理:在内存和沙盒目录下各缓存一份文件,内存中的文件到一定程度会自动清除,沙盒目录下的文件需要由用户手动清除。

首先检测内存(自动清除缓存文件)--->然后检测沙盒目录,如果沙盒目录下有缓存文件,需要手动清除--->最后进行网络请求

AFNetworking的实现原理

AFNetworking是实际项目中最常用的网络请求库,目前在github下载量排名第一,对应的版本最新的为3.0。2.0版本以前封装自系统的NSURLConnection,3.0之后(ios9)封装自系统的NSURLSession,还可以用于检测网络状态,缓存图片。

AFNetworking支持比较新的特性,简单易用,但文档数目一般,功能少,忽略了一些扩展功能。

AFNetworking实现原理:AFNetworking直接操作对象的AFHttpClient,是一个实现了NSCoding和NSCopying协议的NSObject子类,AFNetworking默认没有封装同步请求,如果开发者需要使用同步请求,则需要重写getPath: paramenters: success: failures方法,对AFHttpRequestOperation进行同步处理。

KVO和KVC

KVO

KVO:键值观察机制,是一种能使对象获取到其他对象属性变化的通知机制,KVO可以观察某个对象的变量变化过程。

优点:
a、能够提供一种简单的方法实现两个对象间的同步
b、能够对非我们创建的对象,即内部对象的状态改变做出响应,而不要改变内部对象的实现
c、能够提供观察的属性的最新值以及先前值
d、用key paths来观察属性,因此也可以观察嵌套对象
e、完成了对观察对象的抽象,因为不需要二维的代码来允许观察值能够被观察

缺点:
a、观察的属性必须使用strings来定义,隐藏编译器不会出现警告和检查
b、对属性重构将导致观察代码不再可用
c、复杂的“if”语句要求对象正在观察多个值,这是因为所有的观察都通过一个方法来指向
d、当释放观察者时不需要移除观察者

KVC

KVC:键-值编码,是一个用于间接访问对象属性的机制(一种使用字符串而不是访问器去访问一个对象实例变量的机制),只用该机制不需要调用set或get方法􏰉以及->来访问成员变量,它通过setValue: forKey 和valueForkey方法来访问。

优点:
a、主要的好处就是减少代码量
b、没有property的变量也能通过KVC来设置

缺点:
如果key写错,编写时不会报错,运行时会报错

注意:KVC不是设计模式

上一篇下一篇

猜你喜欢

热点阅读