黑马程序员技术交流社区
标题:
超全iOS面试资料,看完你还担心面试吗?
[打印本页]
作者:
柳柳桑
时间:
2016-3-3 10:42
标题:
超全iOS面试资料,看完你还担心面试吗?
超全iOS面试资料,看完你还担心面试吗?
1、网络多线程(★★★)
一、多线程的底层实现
1> 首先搞清楚什么是线程、什么是多线程
2> Mach是第一个以多线程方式处理任务的系统,因此多线程的底层实现机制是基于Mach的线程
3> 开发中很少用Mach级的线程,因为Mach级的线程没有提供多线程的基本特征,线程之间是独立的
4> 开发中实现多线程的方案
• C语言的POSIX接口:#include
• OC的NSThread
• C语言的GCD接口(性能最好,代码更精简)
OC的NSOperation和NSOperationQueue(基于GCD)
二、线程间怎么通信?
http://blog.csdn.net/bawangxx/article/details/50546314
三、网络图片处理问题中怎么解决一个相同的网络地址重复请求的问题?
利用字典(图片地址为key,下载操作为value)
四、用NSOpertion和NSOpertionQueue处理A,B,C三个线程,要求执行完A,B后才能执行C,怎么做?
// 创建队列
NSOperationQueue *queue = [[NSOperationQueue alloc] init];
// 创建3个操作
NSOperation *a = [NSBlockOperation blockOperationWithBlock:^{
NSLog(@”operationA---“);
}];
NSOperation *b = [NSBlockOperation blockOperationWithBlock:^{
NSLog(@”operationB---“);
}];
NSOperation *c = [NSBlockOperation blockOperationWithBlock:^{
NSLog(@”operationC---“);
}];
// 添加依赖
[c addDependency:a];
[c addDependency:b];
// 执行操作
[queue addOperation:a];
[queue addOperation:b];
[queue addOperation:c];
五、列举cocoa中常见对几种多线程的实现,并谈谈多线程安全的几种解决办法及多线程安全怎么控制?
1.jpg
(13.41 KB, 下载次数: 132)
下载附件
2016-3-3 10:36 上传
1> 只在主线程刷新访问UI
2> 如果要防止资源抢夺,得用synchronized进行加锁保护
3> 如果异步操作要保证线程安全等问题, 尽量使用GCD(有些函数默认就是安全的)
六、GCD内部怎么实现?
1> iOS和OS X的核心是XNU内核,GCD是基于XNU内核实现的
2> GCD的API全部在libdispatch库中
3> GCD的底层实现主要有Dispatch Queue和Dispatch Source
Dispatch Queue :管理block(操作)
DispatchSource :处理事件
七、你用过NSOperationQueue么?如果用过或者了解的话,你为什么要使用NSOperationQueue,实现了什么?请描述它和GCD的区别和类似的地方(提示:可以从两者的实现机制和适用范围来描述)
1> GCD是纯C语言的API,NSOperationQueue是基于GCD的OC版本封装
2> GCD只支持FIFO的队列,NSOperationQueue可以很方便地调整执行顺序、设置最大并发数量
3> NSOperationQueue可以在轻松在Operation间设置依赖关系,而GCD需要写很多的代码才能实现
4> NSOperationQueue支持KVO,可以监测operation是否正在执行(isExecuted)、是否结束(isFinished),是否取消(isCanceld)
5> GCD的执行速度比NSOperationQueue快
任务之间不太互相依赖:GCD
任务之间有依赖\或者要监听任务的执行情况:NSOperationQueue
八、 既然提到GCD,那么问一下在使用GCD以及block时要注意些什么?它们两是一回事儿么?block在ARC中和传统的MRC中的行为和用法有没有什么区别,需要注意些什么?
Block的使用注意:
1. block的内存管理
2. 防止循环retian
非ARC(MRC):__block
ARC:__weak\__unsafe_unretained
九、在异步线程中下载很多图片,如果失败了,该如何处理?请结合RunLoop来谈谈解决方案.(提示:在异步线程中启动一个RunLoop重新发送网络请求,下载图片)
1> 重新下载图片
2> 下载完毕, 利用RunLoop的输入源回到主线程刷新UIImageVIUew
十、Socket的实现原理及Socket之间是如何通信的
http://blog.csdn.net/jiajia4336/article/details/8798421
http://no001.blog.51cto.com/1142339/555344/
十一、 http协议的实现
http://www.blogjava.net/crespochen/archive/2008/10/22/235948.html
十二、什么是TCP连接的三次握手
第一次握手:客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认;
第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态;
第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。
握手过程中传送的包里不包含数据,三次握手完毕后,客户端与服务器才正式开始传送数据。理想状态下,TCP连接一旦建立,在通信双方中的任何一方主动关闭连接之前,TCP 连接都将被一直保持下去。断开连接时服务器和客户端均可以主动发起断开TCP连接的请求,断开过程需要经过“四次握手”(过程就不细写了,就是服务器和客户端交互,最终确定断开)
十三、http协议的组成和特性
组成:http请求由三部分组成,分别是:请求行、消息报头、请求正文特性:HTTP协议的主要特点可概括如下:1.支持客户/服务器模式。2.简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、HEAD、POST。每种方法规定了客户与服务器联系的类型不同。由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。3.灵活:HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记。4.无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。5.无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。
十四、在项目什么时候选择使用GCD,什么时候选择NSOperation?
项目中使用NSOperation的优点是NSOperation是对线程的高度抽象,在项目中使用它,会使项目的程序结构更好,子类化NSOperation的设计思路,是具有面向对象的优点(复用、封装),使得实现是多线程支持,而接口简单,建议在复杂项目中使用。项目中使用GCD的优点是GCD本身非常简单、易用,对于不复杂的多线程操作,会节省代码量,而Block参数的使用,会是代码更为易读,建议在简单项目中使用。
十五、OC中的协议和java中的接口概念有何不同?
OBC中的代理有2层含义,官方定义为 formal和informal protocol。前者和Java接口一样。 informal protocol中的方法属于设计模式考虑范畴,不是必须实现的,但是如果有实现,就会改变类的属性。 其实关于正式协议,类别和非正式协议我很早前学习的时候大致看过,也写在了学习教程里 “非正式协议概念其实就是类别的另一种表达方式“这里有一些你可能希望实现的方法,你可以使用他们更好的完成工作”。 这个意思是,这些是可选的。比如我门要一个更好的方法,我们就会申明一个这样的类别去实现。然后你在后期可以直接使用这些更好的方法。 这么看,总觉得类别这玩意儿有点像协议的可选协议。" 现在来看,其实protocal已经开始对两者都统一和规范起来操作,因为资料中说“非正式协议使用interface修饰“, 现在我们看到协议中两个修饰词:“必须实现(@requied)”和“可选实现(@optional)”。
作者:
kaiting
时间:
2016-3-4 08:02
太棒啦,谢谢楼主
作者:
Y丶Seven
时间:
2016-3-4 11:04
现在还看不懂,但我已经收藏了,觉得很有用。谢谢啦
作者:
baye1992
时间:
2016-3-4 11:49
Mark一下,非常感谢
作者:
kaiting
时间:
2016-3-4 15:37
kaiting 发表于 2016-3-4 08:02
太棒啦,谢谢楼主
恩恩,您啥时候入学啊?
作者:
海洋深处的8爪鱼
时间:
2016-3-4 20:17
666666666666666
作者:
吴振伟
时间:
2016-3-4 20:57
6666666666666
作者:
乱叶红飞
时间:
2016-3-6 22:40
这是好东西啊 都可以自学了 乌拉啊
作者:
旅人
时间:
2016-3-8 12:20
挺详细的
作者:
dx206
时间:
2016-3-8 13:40
虽然看不懂,收藏了,以后努力学习。
作者:
信念的旗帜
时间:
2016-3-8 19:46
=.=还在学习中,在一两个月内暂时都用不上
作者:
王尉安
时间:
2016-3-8 20:07
6666666666666666666666666
作者:
978677855
时间:
2016-3-8 21:07
谢谢分享
作者:
hanqi
时间:
2016-3-8 22:27
就有人说他认识他人
作者:
wangyuxin
时间:
2016-3-8 23:20
好评啊 66666666666
作者:
wangyuxin
时间:
2016-3-8 23:21
好评啊,但是这距离我还是很遥远的...
作者:
agaoyin
时间:
2016-3-9 16:02
赞一个!
作者:
tonyhan
时间:
2016-3-9 16:03
面试的时候很实用啊
作者:
LeiF
时间:
2016-3-9 17:28
不错哦,还行吧,继续学习
作者:
Eric_Jia
时间:
2016-3-9 18:01
群主也是码农???传说中的美女码农?
作者:
pojian
时间:
2016-3-9 21:02
感谢楼主的分享,受教了.
作者:
miaodian
时间:
2016-3-9 22:40
加油 加油
作者:
郭永岳
时间:
2016-3-9 22:43
表示看不懂
作者:
zhao95
时间:
2016-3-9 23:14
这是黑马面试的就业办的 面试题还是学完了之后去找工作的时候 可能会遇到的 公司的面试题???
作者:
jacku
时间:
2016-3-9 23:25
很有用,谢谢啦
作者:
827093172
时间:
2016-3-9 23:45
楼主辛苦了,赞
作者:
c352789749
时间:
2016-3-9 23:51
爱死你了爱死你了爱死你了
作者:
deng2xuan
时间:
2016-3-10 00:43
哦哦,我学的就是iOS!!!
作者:
dx206
时间:
2016-3-10 12:15
看不懂,先收藏,以后学会了再来回看
作者:
youngrivers
时间:
2016-3-10 19:07
不错,马克!字数补丁
作者:
huazhifansun1
时间:
2016-3-10 19:07
学习学习
作者:
Jerryocean
时间:
2016-3-10 19:32
不错,什么时候可以发一个安卓的来看看
作者:
信念的旗帜
时间:
2016-3-10 20:19
完全不用担心了
作者:
夏天6
时间:
2016-3-10 20:51
楼主好绑棒,永远18岁
作者:
从心开始のBean
时间:
2016-3-10 21:17
整理得很详细呢, 赞一个
作者:
Fly不忘初心
时间:
2016-3-10 21:38
柳柳桑 这是部分面试内容还是全部面试内容啊
作者:
い第一先生が
时间:
2016-3-10 23:53
不错,收下了
作者:
chuanzhang
时间:
2016-3-11 01:08
留个记号 以后用
作者:
炯炯
时间:
2016-3-11 15:27
很全,很受用
作者:
zpj19921115
时间:
2016-3-11 19:47
终于有关于iOS的面试资料了啊
作者:
い第一先生が
时间:
2016-3-11 21:29
66666666收下
作者:
heimazj
时间:
2016-3-11 21:35
我果断收藏了
作者:
冰糖葫芦五加皮
时间:
2016-3-11 23:21
厉害厉害 不错不错
作者:
刘炎炎
时间:
2016-3-12 00:05
果断收藏 肯定能用上,拜谢
作者:
huangxiaokun
时间:
2016-3-12 19:56
赞一个!!!!!!!!!!!!!!!!!!!
作者:
从心开始のBean
时间:
2016-3-12 21:32
总结很好哦
作者:
郭晓飞
时间:
2016-3-13 21:37
好.太好了.
作者:
王尉安
时间:
2016-3-13 23:18
666666666666666666
作者:
叫我超哥
时间:
2016-3-13 23:47
谢谢分享
作者:
Zhouyongming
时间:
2016-3-14 21:23
怎么没有安卓的资料呢....
作者:
tdwydan1
时间:
2016-3-14 21:28
暂时用不上,来个收藏
作者:
li306511677
时间:
2016-3-14 21:42
楼主给力!!!!谢谢
作者:
843241660
时间:
2016-3-16 20:09
我已在黑马奋斗中~
作者:
爱尘iPhone
时间:
2016-3-16 21:30
哇 棒棒da 很有用
作者:
王尉安
时间:
2016-3-16 23:04
666666666666666666666666
作者:
泥娃娃
时间:
2016-3-17 09:37
很受用,收藏了,谢谢楼主
作者:
rui_rachel
时间:
2016-3-17 18:14
赞楼主
作者:
clinging
时间:
2016-3-17 18:25
很好!!!!!!!!!!!!!
作者:
chenglei2016
时间:
2016-3-18 14:35
先收藏了, 看起来有点费劲,悬了~
作者:
蒂尔
时间:
2016-3-18 15:39
谢谢分享
作者:
黑马2012
时间:
2016-3-19 22:19
6666666666
作者:
Ellie
时间:
2016-3-21 10:38
虽然看不懂,收藏了,以后努力学习。+1
作者:
itheimaly
时间:
2016-3-21 12:19
虽然看不懂,但是好像很牛X的样子,get
作者:
muzipiao
时间:
2016-3-21 13:50
虽然不是完全懂,但还是感觉很厉害的样子
作者:
15527933998
时间:
2016-3-21 15:36
先收藏着
作者:
百里青山
时间:
2016-3-21 19:51
虽然看不懂,收藏了,以后努力学习。
作者:
丶黒貓
时间:
2016-3-23 11:51
感谢分享
作者:
wangsam110
时间:
2016-3-23 20:28
好东西~~~~~
作者:
小卒子
时间:
2016-3-24 12:18
必须收藏。。
作者:
x_starry
时间:
2016-3-24 13:28
留着学习
作者:
wx_byrDDXsc
时间:
2016-3-24 21:42
先收藏,用的时候绝对是宝贝!
作者:
orz
时间:
2016-3-24 22:45
感谢分享
作者:
orz
时间:
2016-3-24 22:46
感谢分享!
作者:
zhaoxiaoting
时间:
2016-3-26 00:13
get 干货来的~!~
作者:
雨伞
时间:
2016-3-26 15:58
看起来好厉害啊
作者:
wuqi
时间:
2016-3-26 20:50
实用的大招!
作者:
wuzhena
时间:
2016-3-26 23:15
太给力了,吼吼吼
作者:
wanwan_jz
时间:
2016-3-26 23:22
赞一个1
作者:
陌丶
时间:
2016-3-27 14:56
棒棒哒!!
作者:
zsh18353616863
时间:
2016-3-28 20:53
太棒了,谢谢版主!!!!!!
作者:
lijiujian
时间:
2016-3-29 20:14
很有用的帖子,已收藏,给你32赞
作者:
系米粒
时间:
2016-3-29 22:42
向你们靠齐
作者:
明哥哥
时间:
2016-3-29 23:23
可以,我已经深深的爱上了柳柳桑
作者:
蛮王123
时间:
2016-3-29 23:26
签到 赞一个 加油
作者:
涛声`依旧
时间:
2016-3-29 23:43
赞赞赞!!
作者:
冷傲阳
时间:
2016-3-29 23:47
签到!!!!加油!!!!
作者:
Sniper-L
时间:
2016-3-30 01:03
签到
作者:
汤不冷的距离
时间:
2016-3-30 08:12
还没学到,得看看
作者:
蒂尔
时间:
2016-3-30 09:18
很好的资料,谢谢楼主分享
作者:
clinging
时间:
2016-3-30 09:41
很好!!!!!!!!!!!!
作者:
wenhuadong
时间:
2016-3-30 12:13
不担心了吗
作者:
clinging
时间:
2016-3-30 12:25
支持!!
作者:
黑马学员何会超
时间:
2016-3-30 12:38
希望多点这方面的帖子,增长点见识
作者:
杨海鹏
时间:
2016-3-30 13:06
好全面,赞一个
作者:
fangbuqianxing
时间:
2016-3-30 16:09
赞一个!!!!!!!!!!!!
作者:
tdwydan1
时间:
2016-3-30 19:23
我来签到!!
作者:
KarlHZW
时间:
2016-3-30 19:37
有用,收藏!
作者:
枼子
时间:
2016-3-30 20:16
签到!!加油
作者:
我是王觉瘦
时间:
2016-3-30 21:40
mark一下.
作者:
vvvisa
时间:
2016-3-30 21:47
签到!!!!
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2