iOS面试题iOS精品文章-面试iOS面试题整理

iOS面试题锦集(一)——多线程网络

2016-09-04  本文已影响970人  KyneChen

1. 多线程的底层实现?

2. 线程间怎么通信?

3. 网络图片处理问题中怎么解决一个相同的网络地址重复请求问题?

4. 用NSOpertion和NSOpertionQueue处理A、B、C三个线程,要求执行完A、B后才能执行C,怎么做?

//1. 创建队列
NSOperationQueue *queue = [[NSOpertionQueue alloc] init];
    
//2. 创建3个操作
NSOperation *a = [NSOperation blockOperationWithBlock:^{
NSLog(@"operation---");
}];
NSOperation *b = [NSOperation blockOperationWithBlock:^{
NSLog(@"operation---");
}];
NSOperation *c = [NSOperation blockOperationWithBlock:^{
NSLog(@"operation---");
}];
    
//3. 添加依赖
[c addDependency:a];
[c addDependency:b];
    
//4. 执行操作
[queue addOperation:a];
[queue addOperation:b];
[queue addOperation:c];

5. 列举cocoa中常见的几种多线程的实现,并谈谈多线程安全的几种解决办法及多线程安全怎么控制?

6. GCD 内部怎么实现的?

7. 你用过NSOperationQueue么?如果用过或者了解的话,你为什么要使用NSOperationQueue,实现了什么?请描述它和GCD的区别和类似的地方(提示:可以从两者的实现机制和适用范围来描述)。

8. 上题提到GCD,那么在使用GCD以及block时要注意些什么?它们俩是一回事吗?block在ARC中和传统的MRC中的行为和用法有没有什么区别?需要注意些什么?

Block的使用注意:

9. 在异步线程中下载很多图片,如果失败了,该如何处理?请结合RunLoop来谈谈解决方案。(提示:在异步线程中启动一个RunLoop重新发送网络请求,下载图片。)

上一篇下一篇

猜你喜欢

热点阅读