iOSInterviewKnowledge

iOS interview

基础问题

1,swift中的let和var是什么?

2,swift中的optional和nil是什么,nil在oc中是什么?

3,struct和class的区别是?如何选择

4,iOS中内存是怎么管理的

5,属性和实例变量在oc和swift中是什么?

6,OC和swift中的协议是什么?如何使用

7,分类和扩展是什么?有什么区别?如何使用

8,闭包是什么?如何使用

9,什么是MVC?

10,什么是单例?单例怎么使用

11,iOS中的delegate 模式

12,什么是KVO?什么是KVC

13,iOS应用的生命周期

14,什么是ViewController?它的生命周期

网络篇

1,什么是HTTP?什么是HTTPS?它们的区别

2,什么是Rest?

3,iOS中你是怎么实现网络请求的?

4,网络层应该放置什么呢

5,什么是NSURLSession? 如何使用

6,AFNetworking 和Alamofire是什么?如何使用

7,如何处理网络请求中的多线程?

8,你如何序列化映射后台返回的json data

9,如何下载图片?

10,如何缓存图片?

11,如何下载大文件

12,你是否用过socket

13,RestKit是什么?它用于做什么,它的优点和缺点

14,你替代RestKit的方案是?

15,你怎么测试网络请求的?

数据存储

1,iOS中的数据存储是什么?

2,你用什么来做数据存储?

3,什么是NSCoding?

4,什么是NSUserDefaults?

5,KeyChain是什么,什么时候需要用它呢

6,你怎么保存数据到一个disk呢?

7,当你存储数据的时候如何做数据映射的

8,你的应用中你如何做数据库设计,存储合并的呢?

UI问题

1,在UI开发中最大的挑战是什么?

2,你用什么来用于你的UI准确布局?

3,CGRect的frame是什么?什么时候你用它?

4,view和layer是什么?

5,什么是AutoLayout?什么时候你要它呢?

6,compression resistance和content hugging priorities 是什么?

7,AutoLayout和多线程怎么一起工作?

8,使用代码和storyboard来编写界面的优点和特点

9,在多人团队中你如何和多人协同开发?

10,你是如何混用frame和AutoLayout的

11,iOS中对应的动画选项有哪些?

12,你是如何使用TableView的?

13,你如何用UICollectionView

14,你如何使用UIScrollView

15,什么是UIStackView?什么时候用它?

16,什么是UITabbarController?

17, UI响应式布局你用过哪些

18,你是如何和设计稿保持一像素的完美布局的?

19, 你是如何做UI单元和迭代测试的呢?

架构和设计模式问题

1,MVC和MVVM有什么区别?

2,什么是VIPER?

3,讲讲UBer的RIB架构

4,iOS分层设计的话要怎么做呢

5,iOS中你怎么做依赖管理的?SPM和Cocoapods的优劣

6,Solid原则是什么? 你在开发的时候怎么做的?

7,什么是函数式编程?什么是函数响应式编程?

8,你所了解的设计模式