问题:
1.多线程的底层实现
答案:
1>首先搞清楚什么是线程,什么是多线程.
2>Mach是第一个以多线程方式处理任务的系统,因此多线程的底层实现机制是基于Mach的线程
3>开发中很少用Mach级的线程,因为Mach级的线程没有提供多线程的基本特征,线程之间是独立的(但是还是可以操作Mach类到子线程后,Mach回到主线程.)
4>开发中实现多线程的方案
C语言的POSIX接口: #include
OC的NSThread
C语言的GCD接口(苹果官方推荐使用,由系统管理何时释放何时退出,性能最好,代码简洁)
OC的NSOperation和NSOperationQueue (基于GCD进行一层包装,面向对象)
问题:
2.线程间怎么通信
答案:
1>performSelector:onThread:withObject:waitUntilDone;
(子线程开始任务,任务完成后回到主线程)
2>NSMachPort
问题:
3.网络图片处理问题中怎么解决一个相同的网络地址重复请求的问题?
答案:
1>利用字典(图片地址为Key,下载操作为value)
问题:
4.用NSOpertion和NSOpertionQueue处理A,B,C三个线程,要求执行完A,B才能执行C,怎么做?
答案:
1>开启线程,添加依赖,执行操作.
问题:
5.GCD内部怎么实现的
答案:
1>iOS和OSX的核心是XNU内核, GCD是基于XNU内核,GCD是基于XNU内核实现的.
2>GCD的API全部在lib dispatch库中.
3>GCD的底层实现主要有Dispatch Queue和Dispatch Source.
Dispatch Queue :管理block(操作).
Dispatch Source :处理事件理.
问题:
6.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快
问题:
7.客户端安全性处理方式?
答案:
1>网络数据传输(敏感数据\[账号\密码\消费数据\银行卡账号],不能明文发送)
2>协议的问题(自定义协议,游戏代练)
3>本地文件存储(游戏的存档)
4>源代码(对于iOS目前是安全的)
问题:
8.sip是什么?
答案:
1>SIP(Session Initiation Protocol),会话发起协议
2>SIP是建立VOIP连接IETF标准,IETF是全球互联网最具权威的技术标准化组织
3>所谓VOIP,就是网络电话,直接用互联网打电话,不用耗手机话费
问题:
9.有些图片加载的比较慢怎么处理?你是怎么优化程序的性能的?
答案:
1>图片下载放在异步线程
2>图片下载过程中使用占位图片
3>如果图片比较大,可以考虑多线程断点下载
问题:
10.你实现过一个框架或者库以供别人使用么?如果有请谈一谈构建框架或者库时候的经验;如果没有,请设想和设计框架的public的API,并指出大概需要如何做,需要注意一些什么方面,来使别人容易的使用你的框架.
答案:
1>提供给外界的接口功能是否实用,够用.
2>别人使用我的框架时,能不能根据类名,方法名就猜出接口的具体作用.
3>别人调用接口时,提供的参数是否够用,调用起来是否简单.
4>别人使用我的框架时,要不要再导入依赖其他的框架.