您的当前位置:首页正文

iOS面试题(附答案)

2022-04-13 来源:我们爱旅游
iOS面试题(附答案)\r  

\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  

因篇幅问题不能全部显示,请点此查看更多更全内容