iOS面试经常用到的问题

1. C语言里的数组与OC数组的区别
OC 数组是一个对象,有大量的方法,c 没有都需要自己写数组删除是需要后面往前移动,oc 数组自动处理 

2.tcp 是顺序的,可靠的,面向连接的,

  udp 是无序的,不可靠的,无连接的,吞吐量达的

7. 常见的点击手势有哪几种
UIPinchGuesture, UITapGuesture, UISwipGuesture,

UILongPressGuesture, UIRotationGuesture 

11. 类别和继承什么区别

类别/类目/Category 很方便给现有类添加方法。但是不能添加成员变量,匿名类除外 ,比如 SDWebImage UIImageView 增加了 setImageWithURL:方法。类别对于使用者很方便 

继承可以给现有的类增加方法和成员变量。继承对于使用者来说不如类别方便  ,

比如对 SDWebImage 如果用继承的话,那么就需要写一个类似于 QFImageView 然后把所有的 UIImageView 改成

QFImageView,这里不如类别方便   

13.解释多线程、NSThread 、NSOperation、GCD    

*多线程/异步就是主要是为了界面流畅,防止界面假死,比如每个 asi 请求,sdwebimage 请求,    

*Nsthread 是创建线程的一个通用的类。比如线程创建,取消,开始等。

*每一个 ASI 请求就是一个 NSOperation  , Nsoperation 就是一个简单的以任务为导向的多线程模型, 目的是为了不懂操作系统,不懂线程的人使用的

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 请求方式的 中。
POST 是安全的。GET 是不安全的。GET 是放在浏览器中地址暴露出来了。POST 不会。但是在 App 上 GET POST 都看不见。GET 和 POST 都是和服务器提交参数/通讯的一种方式。
GET 参数不能太长<1024B POST 没有限制<4G

GET 不能上传文件, POST 可以上传文件。       

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. 什么是委托代理模式

委托代理是 个对象之间的一种通讯方式。一方使用协议,代理

另外一方实现协议,类似于回调,blocks 等语法。目的是为了软件设计的低耦合 

51. 什么是通知中心通知中心是多对多的平等的通讯模式。主要用在多个对象之间松耦合的通讯模式。对象和对象之间通过通知的名字就可以进行关联通讯。 

53. 如何实现 个线程 一个线程+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 实现


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值