\r
1、 简述一下UIViewController的生命周期?\r
alloc\r -‐>\r init\r -‐>\r loadView\r -‐>viewDidLoad\r -‐>\r viewWillAppear\r -‐>viewDidAppear\r -‐>viewWillDisappear\r -‐>viewDidDisappear\r -‐>viewUnLoad\r -‐>dealloc\r \r
2、 #import和#include的区别?\r
#import导入的头文件不会多次重复导入\r \r
3、 写一个计算A、B中较大值的标准宏MAX?\r
#define\r \r MAX(A,B)\r \r (\r (A)>(B)\r ?\r (A)\r :\r (B)\r )\r \r
4、 谈一下iOS中的多线程?\r
多线程是指从软件或硬件上实现多个线程并发执行的技术\r iOS中可以使用NSThread、NSOperation、GCD实现多线程\r \r
5、 谈一下Objective-‐C的内存管理方式?\r
ARC、手动管理、线程池\r \r
6、 简述assign、retain、copy、weak和strong分别在什么情况下使用?\r
答案见《iOS面试知识点整理.pdf》\r \r \r \r
7、 类别的作用?说一下类别和类扩展的区别?\r
类别的作用是给类增加方法\r
类扩展可以给类增加属性或私有变量,只可以对自定义的类使用类扩展\r \r
8、 说说你对KVC和KVO的理解?\r
KVC:键值编码,提供一种机制来间接访问对象的属性\r \r KVO:键值观察,基于KVC实现的对类属性的观察监听\r \r
9、 深复制和浅复制的区别?\r
\r \r \r \r \r \r 答案见《iOS面试知识点整理.pdf》\r \r
\r
10、 谈一下你对block的理解,请写一个block类型的属性?\r
block本质是匿名函数\r 声明一个block:\r
\r \r 方法一:void\r (^block)(\r NSString\r *string);\r \r \r 方法二:typedef\r void(^MyBlock)(NSString\r *string);\r \r \r \r \r @property\r (nonatomic,\r strong)MyBlock\r block;\r \r
11、 frame和bounds的区别?\r
\r \r \r \r \r \r 答案见《iOS面试知识点整理.pdf》\r \r
\r
12、 谈一下UITableViewCell的重用机制?\r \r \r
13、 简述一下消息推送的流程?\r
1、 在苹果推送服务器APNs上注册deviceToken,并发送给自己的后台服务器;\r 2、 后台服务器将deviceToken和要发送的消息打包发送给APNs(注意:这一步还
需要推送证书的路径和密码)\r
3、 APNs将消息发送给deviceToken中保存的指定设备中的指定App\r \r
\r
14、 简述一下App发布到AppStore的流程?\r
1、 首先生成发布描述文件(通过创建生产证书\r -‐>\r 创建AppId\r (Bundle\r Id)-‐>\r 创
建发布的描述文件)\r
2、 然后在iTunesContent中创建一个应用并填好信息\r
3、 在XCode中将项目打包并上传(注意:Bundle\r Id全程一致,\r 在build\r Setting中
填好刚创建的描述文件)\r
4、 最后再回到iTunesContent中选择刚才上传的项目,然后点击提交。\r
\r
15、 谈一下面向对象的几个主要特征?\r
封装、继承、多态\r \r \r
16、 谈一下你常用的一些设计模式及应用场景?\r
MVC\r :整个项目,用于降低代码耦合度\r \r 代理\r :常用于反向传值\r
单例\r :常用于整个项目需要且只需要创建一次的类\r \r
17、 谈一下关键字static的作用?关键字const呢?\r \r \r \r \r \r \r 答案见《iOS面试知识点整理.pdf》\r \r \r
18、 堆和栈的区别是什么?\r
\r \r \r \r \r \r 答案见《iOS面试知识点整理.pdf》\r \r \r
19、 break、continue、return的区别是什么?\r \r \r \r \r \r \r 答案见《iOS面试知识点整理.pdf》\r \r \r
20、 int *p 中 *p和p的分别代表什么\r ?\r \r \r \r \r \r \r 答案见《iOS面试知识点整理.pdf》\r \r
\r
21、 讲一下OC和C有哪些区别?\r
OC是面向对象的C,OC是面向对象的语言,C是面向过程的。\r OC完全兼容C语言。\r
\r
22、 谈谈你对代理设计模式的理解?\r
\r
23、 谈谈Http协议?其中GET和POST有哪些区别?\r
Http协议是超文本传输协议,是基于TCP/IP协议基础之上的应用层协议;HTTP是短连接,并且是无状态的协议。\r GET和POST的区别:\r
1、 GET比POST安全,GET传输参数是在url中,而POST是在body体
中,但是在app中这种安全性体现不明显。\r 2、 GET比POST快。\r
3、 GET传输数据大小不超过1k,POST可以上传图片、文件等大的数据。\r
\r
24、 谈谈你对MVC开发模式的理解及你是如何在iOS项目中采用MVC模式开发的?\r
M:Model,V:View,C:Controller,使用MVC模式主要是用来降低代码耦合度;\r
在iOS项目中将模块按MVC模式划分,可以将网络请求得到的数据封装在Model中,将所有呈现的视图独立出来,然后用视图控制器ViewController来管理各个View和Model之间的数据和信息传递。\r
\r
25、 谈谈你对Socket的理解?TCP和UDP协议有什么区别\r
Socket简单来说是一种通信机制,是面向C/S(客户端/服务端)模型而设计的。针对客户端和服务端提供不同的socket对象,客户端有客户端的socket对象,服务端有服务端的socket对象,两个socket之间就可以进行通信了。\r
TCP(Transmission\r Control\r Protocol,传输控制协议)是基于连接的协议,正式收发数据前必须和对方建立可靠的连接(“三次握手”),传输速度相对UDP较慢。\r
UDP(User\r Data\r Protocol,用户数据报协议)是与TCP相对应的协议。它是面向非连接的协议,UDP适用于一次只传送少量数据、对可靠性要求不高的应用环境,但是传输速度快\r \r
26、 你常用的数据存储方式有哪些?\r \r \r \r \r \r \r \r 答案见《iOS面试知识点整理.pdf》\r \r
27、 通知中心和代理都可以用来发送消息和数据,两者有什么区别?\r
通知:多对多\r 代理:一对一\r
\r
28、 类别和继承有哪些区别?\r
答案见《iOS面试知识点整理.pdf》\r
\r
29、 你在项目当中是如何进行网络数据请求的?\r
使用AFNetworking\r
\r
30、 你有做过iPhone6的屏幕适配吗?\r 在项目中你是如何进行适配的?\r
做过,\r 我在项目中对使用了XIB的UI控件就用autoLayout来适配,主要用法是对各个UI控件相对其父视图加约束\r 和根据同级视图加约束。在没有用XIB的UI控件(手写的UI控件)使用Masonry框架来适配.\r
因篇幅问题不能全部显示,请点此查看更多更全内容