iOS面试经常用到的问题

发布时间:2016-12-8 8:17:17 编辑:www.fx114.net 分享查询网我要评论
本篇文章主要介绍了"iOS面试经常用到的问题",主要涉及到iOS面试经常用到的问题方面的内容,对于iOS面试经常用到的问题感兴趣的同学可以参考一下。

1. C语言里的数组与OC数组的区别 OC 数组是一个对象,有大量的方法,c 没有都需要自己写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 请求方式的 2 中。 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. 什么是委托代理模式 委托代理是 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. [email protected], @protected, @private 57. 数据库能不能存图片,怎么存? 可以存图片, nsdata 存,但是我们一般不这样存,我们存路径把图片存在沙盒中。  64. NSNotification 是同步还是异步的 是同步的. 如果需要异步 必须使用 NSNotificationQueue 实现

上一篇:黑马程序员 - java高级特性 - 动态代理
下一篇:用记忆法记忆单词的M种方法 吴天胜

相关文章

相关评论