iOS面试题2

1、MVC 和MVVM的区别

2、#import 和#include 有什么区别 , @class 你额? #import<> 和#import"" 有什么区别

3、frame和bounds有什么区别

4、objective-c 的类可以多重继承么? 可以实现多个接口么? Category是什么?重写一个类的方式用继承好还是分类好?为什么?

5、@property 的本质是什么?ivar,getter , setter 是如何生成并添加到这个类的?

6、@property 中有哪些属性关键字,/@property后面剋一有哪些修饰符?

7、什么情况下使用weak关键字、相比assign有什么不同?

8、用@property 声明NSString/NSArray/ NSDictionary 经常使用copy关键字,如果用strong关键字,可能会造成什么问题?

9、写一个setter 方法用于完成property (nonatomic, retain) NSString  *name, 写一个setter 方法用于完成@property (nonatomic , copy) NSString *name

10、@synthesize 和@dynamic分别有什么作用

11、id 声明对象有什么特性

12、Objective-C如何对内存管理,说说你的看法和解决方法

13、为什么我们常见的delegate属性都用的是weak,而不是retain/strong

14、ViewController 生命周期

15、你一般是怎么用instruments 的

16、iOS中常用的数据存储方式有哪些?

17、iOS中多线程技术有哪些,GCD与NSOperation的区别

18、什么是tableView的重用机制?使用注意事项?如何优化TableView?

19、HTTP协议中Post 方法和GET方法有哪些区别?

20、 请写出你知道的排序方法,写出其中一种


后续添加答案,有答案的小伙伴请在下面评论作为参考哦!


答案:

1、阮一峰老师的介绍:

MVC的意思是软件可以分为三部分:Controller \ Model\ View层

视图 View:用户界面

控制器 Controller: 业务逻辑

模型 Model :数据保存

view传送指令到controller、 Controller 完成业务逻辑后,要求Model改变状态、Model将信的数据发送给View,用户得到反馈。(我的项目大概就是:Controller 请求网络得到Model数据,完成后Model通过在Controller中的代理方法,来改变View的状态,这样所谓的单向就可以说得通了,但还是有耦合,不知道大家是什么样的处理方式。看到MVP模式,感觉这种有点像,MVC有点说不过去了,MVP, P(Presenter)就是相当于C(Controller), 但是View和Model完全不通信,只通过Pre senter来控制,View和Presenter ,Model和Presenter都是双向通信的,view和model是不发生联系的)

MVVM :

Presenter 改名为ViewModel。基本和MVP模式完全一致,唯一区别就是它采用双向绑定,:View的变动,自动反映在ViewModel,反之亦然。


10、 @synthesize 就是表示编译期间,编译器自动生成getter/ setter 方法, 当有自定义的存取方法时,自定义会屏蔽自动生成的方法

@dynamic 告诉编译器,不自动生成getter/setter 方法,表示自定义生成getter / setter方法,当然如果是readOnly 就可以只实现getter方法,避免编译期间产生警告。然后由自己实现存取方法,或存取方法在运行时动态创建绑定:主要使用在CoreData的实现NSManagedObject 子类时使用,由Core Data框架在程序运行时动态生成子类属性

你可能感兴趣的:(iOS面试题2)