收集了一份金山的部分面试题,供大家学习参考,祝愿大家早日入坑。
1、frame和bounds的区别。
答:frame是每个view必备的属性,代表的是当前视图的位置和大小,没有设置他,当前视图是看不到的。位置需要有参照物才能确定,frame就是参照父视图来进行布局。
bounds是每个View都有的属性,这个属性我们一般不进行设置,他同样代表位置和大小,bounds的位置代表的是子视图看待当前视图左上角的位置;bounds的大小代表当前视图的大小。
简而言之,frame相对父视图布局,bounds相对于本身的布局。
2、init方法和initwithframe的区别,谁先调用谁?
答:init方法只能初始化对象,不能设置特定的frame值,initwithframe既能初始化,也能设置frame值,init方法内部调用了initwithframe(0,0,0,0)。
3、isa指针,指向哪里?
答:每个对象都有一个isa指针,面向对象中每一个对象都必须依赖一个类来创建,因此对象的isa指针就指向对象所属的类。实例对象的isa指针指向了类对象,类对象的isa指针指向元类。详细答案可以百度一下,讲解的很透彻。
4、AFN做了些什么工作,请求头和返回的结果默认是什么类型
答:AFN主要包含了以下几个功能模块:
网络通信模块(AFURLSessionManager、AFHTTPSessionManger)
网络状态监听模块(Reachability)
网络通信安全策略模块(Security)
网络通信信息序列化/反序列化模块(Serialization)
对于iOS UIKit库的扩展(UIKit)
请求头和返回的结果默认类型都是NSData类型
5、masonry的点语法是怎么实现的。
链式赋值的实现原理:block的回调获取参数内部使用,所有的set方法返回
MASConstraint实例,可以通过'.语法'继续访问。此问题可以自行百度加阅读
源代码能有更清晰的了解。
6、数据持久化有哪些方案
答:sqlite、NSUserDefaults、plist表,CoreData,FMDB,归档等等。
以上是比较粗略浅显的答案,可能有错,欢迎指正,共同学习!
网友评论