1. C语言里的数组与OC数组的区别
OC 数组是一个对象,有大量的方法,c 没有都需要自己写C 数组删除是需要后面往前移动,oc 数组自动处理
2.tcp 是顺序的,可靠的,面向连接的,
udp 是无序的,不可靠的,无连接的,吞吐量达的
7. 常见的点击手势有哪几种
UIPinchGuesture, UITapGuesture, UISwipGuesture,
UILongPressGuesture, UIRotationGuesture
11. 类别和继承什么区别
继承可以给现有的类增加方法和成员变量。继承对于使用者来说不如类别方便 ,
比如对 SDWebImage 如果用继承的话,那么就需要写一个类似于 QFImageView 然后把所有的 UIImageView 改成
QFImageView,这里不如类别方便 13.解释多线程、NSThread 、NSOperation、GCD
*多线程/异步就是主要是为了界面流畅,防止界面假死,比如每个 asi 请求,sdwebimage 请求,
*Nsthread 是创建线程的一个通用的类。比如线程创建,取消,开始等。
15. 代理和协议什么区别
代理是一种概念,协议是一种技术,代理是用协议来实现的, 代理主要做反向传值的。实现系统的一些回调方法,
16. 代理和通知中心/广播/NoficationCenter 什么区别
代理主要是反向传值,一般用来 1:1 的两个对象通讯上。
通知中心是通过注册然后接收事件的一种 n:n(多对对) 的方法
24.解释KVC和KVO
Key value coding, Key value observer.
Kvc 是路径访问的规范,kvo 是观察某个变量的变化过程
KVO 可以观察某个对象的变量变化过程,KVC 是满足被观察的编码规范。
KVC/KVO 类似于代理,通知中心。都是一种通讯方法。
5. 什么是单例模式
单例就是在多个对象之间共享数据,类似于全局变量,比如数据库打开一次,多个界面都可以使用
33. POST 和 GET 有何区别
GET 和 POST 都是 HTTP 请求方式的 2 中。
POST 是安全的。GET 是不安全的。GET 是放在浏览器中地址暴露出来了。POST 不会。但是在 App 上 GET 和POST 都看不见。GET 和 POST 都是和服务器提交参数/通讯的一种方式。
GET 参数不能太长<1024B POST 没有限制<4G
34. 本地存储方式有哪几种
数据库,nsuserdefauts, file , plist,archieve 归档比较小的就放在 nsuserdefaults(以文件设计的存放在 Libraray 中)数据库里面适合存放一条一条的记录
file 一般存普通文件,图片,视频,音频等
plist 存放比 nsuserdefaults 大一些的
归档 nsarchieve 可以存对象
36. retain、copy、readonly、readwrite 的区别
retain对计数器+1 copy是创建一个新对象,readonly只产生getter函数,readwrite 产生 setter, getter 函数
38. copy 和 mutableCopy 区别
copy 是拷贝,mutableCopy 是可变拷贝,比如把 NSString 通过mutableCopy 变 成NSMutableString, 把 NSArray 通 过mutableCopy 变成 NSMutableArray.
39. 怎么实现对象的本地存储
归档 NSArchieve
40. HTTP 协议、Socket 协议的区别
HTTP 启动一个 NSUrlConnection 在 didFinish长连接,长期的和服务器保持连接。目的是为了避免每次都要连接。因为和服务器连接的过程非常复杂。也耗时。所以连接一次。HTTP 短连接只要处理完就断掉,下次重新连接 对服务器的负担小.
长连接对服务器压力很大。
42. 遍历数组的三种方式有什么区别
for forin iterator
forin 也叫快速循环。为什么他叫快速循环,原因是速度快?为什
么速度快? 可以通过优化提前把 forin 里面的 array 数组全部
导入到 cpu cache 中。因为 cache 访问速度比内存快至少 100 倍
43. NSArray, NSDictionary 这些是如何做的?
NSArray 使用链表做的 NSDictionary 使用 hash 表做出来的
46. Frame 和 bounds 有什么区别
Frame 是子视图相对于父视图的坐标系统,x y width height,bounds 是 uiview 自己的坐标系统 bounds x y=0
50. 什么是委托代理模式
委托代理是 2 个对象之间的一种通讯方式。一方使用协议,代理
另外一方实现协议,类似于回调,blocks 等语法。目的是为了软件设计的低耦合
51. 什么是通知中心通知中心是多对多的平等的通讯模式。主要用在多个对象之间松耦合的通讯模式。对象和对象之间通过通知的名字就可以进行关联通讯。
53. 如何实现 2 个线程 一个线程+1 一个线程-‐1
int sum;
NSLock *sumLock;-‐ (void) demo {
sumLock = [[NSLock alloc] init];
[NSThread detachNewThreadSelector:@selector(thread1:) toTarget:self withObject:nil];[NSThread detachNewThreadSelector:@selector(thread2:) toTarget:self withObject:nil];
}
-‐ (void) thread1:(id)arg {
while (1) {[sumLock lock];
sum++;
[sumLock unlock];
[NSThread sleepForTimeInterval:1];}
}
-‐ (void) thread2:(id)arg {
while (1) {[sumLock lock];
sum-‐-‐;
[sumLock unlock];
[NSThread sleepForTimeInterval:0.5];
}}
54. OC 中有私有方法吗?怎么实现
在.m 文件中实现 Category,只是在.m 中方法
55. OC 中有私有成员变量吗?怎么实现在.m 文件中实现匿名类别 Category
56. 成员变量的作用域有哪几种@public, @protected, @private
57. 数据库能不能存图片,怎么存?
可以存图片, nsdata 存,但是我们一般不这样存,我们存路径把图片存在沙盒中。
64. NSNotification 是同步还是异步的
是同步的. 如果需要异步 必须使用 NSNotificationQueue 实现