Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/itenfay/ios-interview-questions

相信很多 iOS 程序猿都有进入 BAT、字节跳动、美团、京东、360和小米等大厂的梦想,进入唯一途径就是通过面试,面试的关键就是硬实力,也就是知识储备和行业工作经验。感谢 icofans 的资料!在线查看地址:https://ios.nobady.cn
https://github.com/itenfay/ios-interview-questions

alorithms animations data-structure gcd image-processing interview interview-questions ios metal networking objective-c runloop runtime

Last synced: 2 months ago
JSON representation

相信很多 iOS 程序猿都有进入 BAT、字节跳动、美团、京东、360和小米等大厂的梦想,进入唯一途径就是通过面试,面试的关键就是硬实力,也就是知识储备和行业工作经验。感谢 icofans 的资料!在线查看地址:https://ios.nobady.cn

Awesome Lists containing this project

README

        

[如果此项目能帮助到你,就请你给一颗星。谢谢!(If this project can help you, please give it a star. Thanks!)](https://github.com/chenxing640/iOS-interview-questions)

## iOS Interview Questions

相信很多 iOS 程序猿都有进入 BAT、字节跳动、美团、京东、小米、网易、360、58、滴滴、Sina、携程、Qunar 等大厂的梦想,进入唯一途径就是通过面试,面试的关键就是硬实力,也就是知识储备和行业工作经验。

工作经验是通过入厂和社会实践获得,知识储备就是通过各种学习慢慢积累。我从数据结构、算法、Foundation、UIKit、WebView、内存管理、消息传递的方式、消息传递的方式、数据存储、多线程、动画、图像处理、数据安全及加密、Runtime、Runloop、项目架构、设计模式、组件化、调试技巧、性能优化、源码理解、代码管理和持续集成等这些内容分类整理出相关问题,一方面希望巩固自己的基础知识,另一面也希望能帮助更多的 iOS 开发者。如果发现答案不准确或者不完整,就请前往 [Github](https://github.com/chenxing640/iOS-interview-questions) 提交完善。

[![License MIT](https://img.shields.io/badge/license-MIT-green.svg?style=flat)](LICENSE) 

## Group (ID:614799921)



### 数据结构 [![edit](https://github.com/chenxing640/iOS-interview-questions/raw/master/images/md_edit.png)](https://github.com/chenxing640/iOS-interview-questions/edit/master/docs/Data-structure.md)

- [1.数据结构的存储一般常用的有几种?各有什么特点?](https://ios.nobady.cn/Data-structure.html#_1-%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84%E7%9A%84%E5%AD%98%E5%82%A8%E4%B8%80%E8%88%AC%E5%B8%B8%E7%94%A8%E7%9A%84%E6%9C%89%E5%87%A0%E7%A7%8D%EF%BC%9F%E5%90%84%E6%9C%89%E4%BB%80%E4%B9%88%E7%89%B9%E7%82%B9%EF%BC%9F)
- [2.集合结构 线性结构 树形结构 图形结构](https://ios.nobady.cn/Data-structure.html#_2-%E9%9B%86%E5%90%88%E7%BB%93%E6%9E%84-%E7%BA%BF%E6%80%A7%E7%BB%93%E6%9E%84-%E6%A0%91%E5%BD%A2%E7%BB%93%E6%9E%84-%E5%9B%BE%E5%BD%A2%E7%BB%93%E6%9E%84)
- [3.单向链表 双向链表 循环链表](https://ios.nobady.cn/Data-structure.html#_3-%E5%8D%95%E5%90%91%E9%93%BE%E8%A1%A8-%E5%8F%8C%E5%90%91%E9%93%BE%E8%A1%A8-%E5%BE%AA%E7%8E%AF%E9%93%BE%E8%A1%A8)
- [4.数组和链表区别](https://ios.nobady.cn/Data-structure.html#_4-%E6%95%B0%E7%BB%84%E5%92%8C%E9%93%BE%E8%A1%A8%E5%8C%BA%E5%88%AB)
- [5.堆、栈和队列](https://ios.nobady.cn/Data-structure.html#_5-%E5%A0%86%E3%80%81%E6%A0%88%E5%92%8C%E9%98%9F%E5%88%97)
- [6.输入一棵二叉树的根结点,求该树的深度?](https://ios.nobady.cn/Data-structure.html#_6-%E8%BE%93%E5%85%A5%E4%B8%80%E6%A3%B5%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E6%A0%B9%E7%BB%93%E7%82%B9%EF%BC%8C%E6%B1%82%E8%AF%A5%E6%A0%91%E7%9A%84%E6%B7%B1%E5%BA%A6%EF%BC%9F)
- [7.输入一课二叉树的根结点,判断该树是不是平衡二叉树?](https://ios.nobady.cn/Data-structure.html#_7-%E8%BE%93%E5%85%A5%E4%B8%80%E8%AF%BE%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E6%A0%B9%E7%BB%93%E7%82%B9%EF%BC%8C%E5%88%A4%E6%96%AD%E8%AF%A5%E6%A0%91%E6%98%AF%E4%B8%8D%E6%98%AF%E5%B9%B3%E8%A1%A1%E4%BA%8C%E5%8F%89%E6%A0%91%EF%BC%9F)

### 算法 [![edit](https://github.com/chenxing640/iOS-interview-questions/raw/master/images/md_edit.png)](https://github.com/chenxing640/iOS-interview-questions/edit/master/docs/Arithmetic.md)

- [1.时间复杂度](https://ios.nobady.cn/Arithmetic.html#_1-%E6%97%B6%E9%97%B4%E5%A4%8D%E6%9D%82%E5%BA%A6)
- [2.空间复杂度](https://ios.nobady.cn/Arithmetic.html#_2-%E7%A9%BA%E9%97%B4%E5%A4%8D%E6%9D%82%E5%BA%A6)
- [3.常用的排序算法](https://ios.nobady.cn/Arithmetic.html#_3-%E5%B8%B8%E7%94%A8%E7%9A%84%E6%8E%92%E5%BA%8F%E7%AE%97%E6%B3%95)
- [4.字符串反转](https://ios.nobady.cn/Arithmetic.html#_4-%E5%AD%97%E7%AC%A6%E4%B8%B2%E5%8F%8D%E8%BD%AC)
- [5.链表反转(头差法)](https://ios.nobady.cn/Arithmetic.html#_5-%E9%93%BE%E8%A1%A8%E5%8F%8D%E8%BD%AC%EF%BC%88%E5%A4%B4%E5%B7%AE%E6%B3%95%EF%BC%89)
- [6.有序数组合并](https://ios.nobady.cn/Arithmetic.html#_6-%E6%9C%89%E5%BA%8F%E6%95%B0%E7%BB%84%E5%90%88%E5%B9%B6)
- [7.查找第一个只出现一次的字符(Hash查找)](https://ios.nobady.cn/Arithmetic.html#_7-%E6%9F%A5%E6%89%BE%E7%AC%AC%E4%B8%80%E4%B8%AA%E5%8F%AA%E5%87%BA%E7%8E%B0%E4%B8%80%E6%AC%A1%E7%9A%84%E5%AD%97%E7%AC%A6%EF%BC%88hash%E6%9F%A5%E6%89%BE%EF%BC%89)
- [8.查找两个子视图的共同父视图](https://ios.nobady.cn/Arithmetic.html#_8-%E6%9F%A5%E6%89%BE%E4%B8%A4%E4%B8%AA%E5%AD%90%E8%A7%86%E5%9B%BE%E7%9A%84%E5%85%B1%E5%90%8C%E7%88%B6%E8%A7%86%E5%9B%BE)
- [9.无序数组中的中位数(快排思想)](https://ios.nobady.cn/Arithmetic.html#_9-%E6%97%A0%E5%BA%8F%E6%95%B0%E7%BB%84%E4%B8%AD%E7%9A%84%E4%B8%AD%E4%BD%8D%E6%95%B0-%E5%BF%AB%E6%8E%92%E6%80%9D%E6%83%B3)
- [10.给定一个整数数组和一个目标值,找出数组中和为目标值的两个数。](https://ios.nobady.cn/Arithmetic.html#_10-%E7%BB%99%E5%AE%9A%E4%B8%80%E4%B8%AA%E6%95%B4%E6%95%B0%E6%95%B0%E7%BB%84%E5%92%8C%E4%B8%80%E4%B8%AA%E7%9B%AE%E6%A0%87%E5%80%BC%EF%BC%8C%E6%89%BE%E5%87%BA%E6%95%B0%E7%BB%84%E4%B8%AD%E5%92%8C%E4%B8%BA%E7%9B%AE%E6%A0%87%E5%80%BC%E7%9A%84%E4%B8%A4%E4%B8%AA%E6%95%B0%E3%80%82)

### Foundation [![edit](https://github.com/chenxing640/iOS-interview-questions/raw/master/images/md_edit.png)](https://github.com/chenxing640/iOS-interview-questions/edit/master/docs/Foundation.md)

- [1.nil、NIL、NSNULL 有什么区别?](https://ios.nobady.cn/Foundation.html#_1-nil%E3%80%81nil%E3%80%81nsnull-%E6%9C%89%E4%BB%80%E4%B9%88%E5%8C%BA%E5%88%AB%EF%BC%9F)
- [2.如何实现一个线程安全的 NSMutableArray?](https://ios.nobady.cn/Foundation.html#_2-%E5%A6%82%E4%BD%95%E5%AE%9E%E7%8E%B0%E4%B8%80%E4%B8%AA%E7%BA%BF%E7%A8%8B%E5%AE%89%E5%85%A8%E7%9A%84-nsmutablearray)
- [3.atomic 修饰的属性是绝对安全的吗?为什么?](https://ios.nobady.cn/Foundation.html#_3-atomic-%E4%BF%AE%E9%A5%B0%E7%9A%84%E5%B1%9E%E6%80%A7%E6%98%AF%E7%BB%9D%E5%AF%B9%E5%AE%89%E5%85%A8%E7%9A%84%E5%90%97%EF%BC%9F%E4%B8%BA%E4%BB%80%E4%B9%88%EF%BC%9F)
- [4.实现 isEqual 和 hash 方法时要注意什么?](https://ios.nobady.cn/Foundation.html#_4-%E5%AE%9E%E7%8E%B0-isequal-%E5%92%8C-hash-%E6%96%B9%E6%B3%95%E6%97%B6%E8%A6%81%E6%B3%A8%E6%84%8F%E4%BB%80%E4%B9%88%EF%BC%9F)
- [5.id 和 instanceType 有什么区别?](https://ios.nobady.cn/Foundation.html#_5-id-%E5%92%8C-instancetype-%E6%9C%89%E4%BB%80%E4%B9%88%E5%8C%BA%E5%88%AB%EF%BC%9F)
- [6.self和super的区别](https://ios.nobady.cn/Foundation.html#_6-self%E5%92%8Csuper%E7%9A%84%E5%8C%BA%E5%88%AB)
- [7.@synthesize和@dynamic分别有什么作用?](https://ios.nobady.cn/Foundation.html#_7-synthesize%E5%92%8C-dynamic%E5%88%86%E5%88%AB%E6%9C%89%E4%BB%80%E4%B9%88%E4%BD%9C%E7%94%A8%EF%BC%9F)
- [8.typeof 和 _typeof,typeof_ 的区别?](https://ios.nobady.cn/Foundation.html#_8-typeof-%E5%92%8C-typeof%EF%BC%8Ctypeof-%E7%9A%84%E5%8C%BA%E5%88%AB)
- [9.类族](https://ios.nobady.cn/Foundation.html#_9-%E7%B1%BB%E6%97%8F)
- [10.struct和class的区别](https://ios.nobady.cn/Foundation.html#_10-struct%E5%92%8Cclass%E7%9A%84%E5%8C%BA%E5%88%AB)

### UIKit [![edit](https://github.com/chenxing640/iOS-interview-questions/raw/master/images/md_edit.png)](https://github.com/chenxing640/iOS-interview-questions/edit/master/docs/UIKit.md)

- [1.UIView 和 CALayer 是什么关系?](https://ios.nobady.cn/UIKit.html#_1-uiview-%E5%92%8C-calayer-%E6%98%AF%E4%BB%80%E4%B9%88%E5%85%B3%E7%B3%BB%EF%BC%9F)
- [2.Bounds 和 Frame 的区别?](https://ios.nobady.cn/UIKit.html#_2-bounds-%E5%92%8C-frame-%E7%9A%84%E5%8C%BA%E5%88%AB)
- [3.setNeedsDisplay 和 layoutIfNeeded 两者是什么关系?](https://ios.nobady.cn/UIKit.html#_3-setneedsdisplay-%E5%92%8C-layoutifneeded-%E4%B8%A4%E8%80%85%E6%98%AF%E4%BB%80%E4%B9%88%E5%85%B3%E7%B3%BB%EF%BC%9F)
- [4.谈谈对UIResponder的理解](https://ios.nobady.cn/UIKit.html#_4-%E8%B0%88%E8%B0%88%E5%AF%B9uiresponder%E7%9A%84%E7%90%86%E8%A7%A3)
- [5.loadView的作用?](https://ios.nobady.cn/UIKit.html#_5-loadview%E7%9A%84%E4%BD%9C%E7%94%A8%EF%BC%9F)
- [6.使用 drawRect有什么影响?](https://ios.nobady.cn/UIKit.html#_6-%E4%BD%BF%E7%94%A8-drawrect%E6%9C%89%E4%BB%80%E4%B9%88%E5%BD%B1%E5%93%8D%EF%BC%9F)
- [7.keyWindow 和 delegate的window有何区别](https://ios.nobady.cn/UIKit.html#_6-%E4%BD%BF%E7%94%A8-drawrect%E6%9C%89%E4%BB%80%E4%B9%88%E5%BD%B1%E5%93%8D%EF%BC%9F)

### WebView [![edit](https://github.com/chenxing640/iOS-interview-questions/raw/master/images/md_edit.png)](https://github.com/chenxing640/iOS-interview-questions/edit/master/docs/WebView.md)

- [1.说一下 JS 和 OC 互相调用的几种方式?](https://ios.nobady.cn/WebView.html#_1-%E8%AF%B4%E4%B8%80%E4%B8%8B-js-%E5%92%8C-oc-%E4%BA%92%E7%9B%B8%E8%B0%83%E7%94%A8%E7%9A%84%E5%87%A0%E7%A7%8D%E6%96%B9%E5%BC%8F%EF%BC%9F)
- [2.在使用 WKWedView 时遇到过哪些问题?](https://ios.nobady.cn/WebView.html#_2-%E5%9C%A8%E4%BD%BF%E7%94%A8-wkwedview-%E6%97%B6%E9%81%87%E5%88%B0%E8%BF%87%E5%93%AA%E4%BA%9B%E9%97%AE%E9%A2%98%EF%BC%9F)

### 内存管理 [![edit](https://github.com/chenxing640/iOS-interview-questions/raw/master/images/md_edit.png)](https://github.com/chenxing640/iOS-interview-questions/edit/master/docs/Memory-management.md)

- [1.什么情况使用 weak 关键字,相比 assign 有什么不同?](https://ios.nobady.cn/Memory-management.html#_1-%E4%BB%80%E4%B9%88%E6%83%85%E5%86%B5%E4%BD%BF%E7%94%A8-weak-%E5%85%B3%E9%94%AE%E5%AD%97%EF%BC%8C%E7%9B%B8%E6%AF%94-assign-%E6%9C%89%E4%BB%80%E4%B9%88%E4%B8%8D%E5%90%8C%EF%BC%9F)
- [2.如何让自己的类用 copy 修饰符?如何重写带 copy 关键字的 setter?](https://ios.nobady.cn/Memory-management.html#_2-%E5%A6%82%E4%BD%95%E8%AE%A9%E8%87%AA%E5%B7%B1%E7%9A%84%E7%B1%BB%E7%94%A8-copy-%E4%BF%AE%E9%A5%B0%E7%AC%A6%EF%BC%9F%E5%A6%82%E4%BD%95%E9%87%8D%E5%86%99%E5%B8%A6-copy-%E5%85%B3%E9%94%AE%E5%AD%97%E7%9A%84-setter%EF%BC%9F)
- [3.@property 的本质是什么?ivar、getter、setter 是如何生成并添加到这个类中的](https://ios.nobady.cn/Memory-management.html#_3-property-%E7%9A%84%E6%9C%AC%E8%B4%A8%E6%98%AF%E4%BB%80%E4%B9%88%EF%BC%9Fivar%E3%80%81getter%E3%80%81setter-%E6%98%AF%E5%A6%82%E4%BD%95%E7%94%9F%E6%88%90%E5%B9%B6%E6%B7%BB%E5%8A%A0%E5%88%B0%E8%BF%99%E4%B8%AA%E7%B1%BB%E4%B8%AD%E7%9A%84)
- [4.@protocol 和 category 中如何使用 @property](https://ios.nobady.cn/Memory-management.html#_4-protocol-%E5%92%8C-category-%E4%B8%AD%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8-property)
- [5.简要说一下 @autoreleasePool 的数据结构??](https://ios.nobady.cn/Memory-management.html#_5-%E7%AE%80%E8%A6%81%E8%AF%B4%E4%B8%80%E4%B8%8B-autoreleasepool-%E7%9A%84%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84%EF%BC%9F%EF%BC%9F)
- [6.BAD_ACCESS在什么情况下出现?](https://ios.nobady.cn/Memory-management.html#_6-bad-access%E5%9C%A8%E4%BB%80%E4%B9%88%E6%83%85%E5%86%B5%E4%B8%8B%E5%87%BA%E7%8E%B0%EF%BC%9F)
- [7.使用CADisplayLink、NSTimer有什么注意点?](https://ios.nobady.cn/Memory-management.html#_7-%E4%BD%BF%E7%94%A8cadisplaylink%E3%80%81nstimer%E6%9C%89%E4%BB%80%E4%B9%88%E6%B3%A8%E6%84%8F%E7%82%B9%EF%BC%9F)
- [8.iOS内存分区情况](https://ios.nobady.cn/Memory-management.html#_8-ios%E5%86%85%E5%AD%98%E5%88%86%E5%8C%BA%E6%83%85%E5%86%B5)
- [9.iOS内存管理方式](https://ios.nobady.cn/Memory-management.html#_9-ios%E5%86%85%E5%AD%98%E7%AE%A1%E7%90%86%E6%96%B9%E5%BC%8F)

### 消息传递的方式 [![edit](https://github.com/chenxing640/iOS-interview-questions/raw/master/images/md_edit.png)](https://github.com/chenxing640/iOS-interview-questions/edit/master/docs/Message-passing.md)

- [1.KVC实现原理](https://ios.nobady.cn/Message-passing.html#_1-kvc%E5%AE%9E%E7%8E%B0%E5%8E%9F%E7%90%86)
- [2.KVO的实现原理](https://ios.nobady.cn/Message-passing.html#_2-kvo%E7%9A%84%E5%AE%9E%E7%8E%B0%E5%8E%9F%E7%90%86)
- [3.如何手动触发KVO方法](https://ios.nobady.cn/Message-passing.html#_3-%E5%A6%82%E4%BD%95%E6%89%8B%E5%8A%A8%E8%A7%A6%E5%8F%91kvo%E6%96%B9%E6%B3%95)
- [4.通知和代理有什么区别](https://ios.nobady.cn/Message-passing.html#_4-%E9%80%9A%E7%9F%A5%E5%92%8C%E4%BB%A3%E7%90%86%E6%9C%89%E4%BB%80%E4%B9%88%E5%8C%BA%E5%88%AB)
- [5.block和delegate的区别](https://ios.nobady.cn/Message-passing.html#_4-%E9%80%9A%E7%9F%A5%E5%92%8C%E4%BB%A3%E7%90%86%E6%9C%89%E4%BB%80%E4%B9%88%E5%8C%BA%E5%88%AB)
- [6.为什么Block用copy关键字](https://ios.nobady.cn/Message-passing.html#_6-%E4%B8%BA%E4%BB%80%E4%B9%88block%E7%94%A8copy%E5%85%B3%E9%94%AE%E5%AD%97)

### 网络 [![edit](https://github.com/chenxing640/iOS-interview-questions/raw/master/images/md_edit.png)](https://github.com/chenxing640/iOS-interview-questions/edit/master/docs/Network.md)

- [1.网络七层协议](https://ios.nobady.cn/Network.html#_1-%E7%BD%91%E7%BB%9C%E4%B8%83%E5%B1%82%E5%8D%8F%E8%AE%AE)
- [2.Http 和 Https 的区别?Https为什么更加安全?](https://ios.nobady.cn/Network.html#_2-http-%E5%92%8C-https-%E7%9A%84%E5%8C%BA%E5%88%AB%EF%BC%9Fhttps%E4%B8%BA%E4%BB%80%E4%B9%88%E6%9B%B4%E5%8A%A0%E5%AE%89%E5%85%A8%EF%BC%9F)
- [3.HTTPS的连接建立流程](https://ios.nobady.cn/Network.html#_3-https%E7%9A%84%E8%BF%9E%E6%8E%A5%E5%BB%BA%E7%AB%8B%E6%B5%81%E7%A8%8B)
- [4.解释一下 三次握手 和 四次挥手](https://ios.nobady.cn/Network.html#_4-%E8%A7%A3%E9%87%8A%E4%B8%80%E4%B8%8B-%E4%B8%89%E6%AC%A1%E6%8F%A1%E6%89%8B-%E5%92%8C-%E5%9B%9B%E6%AC%A1%E6%8C%A5%E6%89%8B)
- [5.TCP 和 UDP的区别](https://ios.nobady.cn/Network.html#_5-tcp-%E5%92%8C-udp%E7%9A%84%E5%8C%BA%E5%88%AB)
- [6.Cookie和Session](https://ios.nobady.cn/Network.html#_6-cookie%E5%92%8Csession)
- [7.DNS是什么](https://ios.nobady.cn/Network.html#_7-dns%E6%98%AF%E4%BB%80%E4%B9%88)
- [8.DNS解析过程](https://ios.nobady.cn/Network.html#_8-dns%E8%A7%A3%E6%9E%90%E8%BF%87%E7%A8%8B)

### 数据存储 [![edit](https://github.com/chenxing640/iOS-interview-questions/raw/master/images/md_edit.png)](https://github.com/chenxing640/iOS-interview-questions/edit/master/docs/Data-storage.md)

- [1.iOS 开发中数据持久性有哪几种?](https://ios.nobady.cn/Data-storage.html#_1-ios-%E5%BC%80%E5%8F%91%E4%B8%AD%E6%95%B0%E6%8D%AE%E6%8C%81%E4%B9%85%E6%80%A7%E6%9C%89%E5%93%AA%E5%87%A0%E7%A7%8D)
- [2.FMDB数据结构变化升级](https://ios.nobady.cn/Data-storage.html#_2-fmdb%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84%E5%8F%98%E5%8C%96%E5%8D%87%E7%BA%A7)

### 多线程 [![edit](https://github.com/chenxing640/iOS-interview-questions/raw/master/images/md_edit.png)](https://github.com/chenxing640/iOS-interview-questions/edit/master/docs/Multi-thread.md)

- [1.进程与线程](https://ios.nobady.cn/Multi-thread.html#_1-%E8%BF%9B%E7%A8%8B%E4%B8%8E%E7%BA%BF%E7%A8%8B)
- [2.什么是多线程?](https://ios.nobady.cn/Multi-thread.html#_2-%E4%BB%80%E4%B9%88%E6%98%AF%E5%A4%9A%E7%BA%BF%E7%A8%8B%EF%BC%9F)
- [3.多线程的优点和缺点](https://ios.nobady.cn/Multi-thread.html#_3-%E5%A4%9A%E7%BA%BF%E7%A8%8B%E7%9A%84%E4%BC%98%E7%82%B9%E5%92%8C%E7%BC%BA%E7%82%B9)
- [4.多线程的 并行 和 并发 有什么区别?](https://ios.nobady.cn/Multi-thread.html#_4-%E5%A4%9A%E7%BA%BF%E7%A8%8B%E7%9A%84-%E5%B9%B6%E8%A1%8C-%E5%92%8C-%E5%B9%B6%E5%8F%91-%E6%9C%89%E4%BB%80%E4%B9%88%E5%8C%BA%E5%88%AB%EF%BC%9F)
- [5.iOS中实现多线程的几种方案,各自有什么特点?](https://ios.nobady.cn/Multi-thread.html#_5-ios%E4%B8%AD%E5%AE%9E%E7%8E%B0%E5%A4%9A%E7%BA%BF%E7%A8%8B%E7%9A%84%E5%87%A0%E7%A7%8D%E6%96%B9%E6%A1%88%EF%BC%8C%E5%90%84%E8%87%AA%E6%9C%89%E4%BB%80%E4%B9%88%E7%89%B9%E7%82%B9%EF%BC%9F)
- [6.多个网络请求完成后执行下一步](https://ios.nobady.cn/Multi-thread.html#_6-%E5%A4%9A%E4%B8%AA%E7%BD%91%E7%BB%9C%E8%AF%B7%E6%B1%82%E5%AE%8C%E6%88%90%E5%90%8E%E6%89%A7%E8%A1%8C%E4%B8%8B%E4%B8%80%E6%AD%A5)
- [7.多个网络请求顺序执行后执行下一步](https://ios.nobady.cn/Multi-thread.html#_7-%E5%A4%9A%E4%B8%AA%E7%BD%91%E7%BB%9C%E8%AF%B7%E6%B1%82%E9%A1%BA%E5%BA%8F%E6%89%A7%E8%A1%8C%E5%90%8E%E6%89%A7%E8%A1%8C%E4%B8%8B%E4%B8%80%E6%AD%A5)
- [8.异步操作两组数据时, 执行完第一组之后, 才能执行第二组](https://ios.nobady.cn/Multi-thread.html#_8-%E5%BC%82%E6%AD%A5%E6%93%8D%E4%BD%9C%E4%B8%A4%E7%BB%84%E6%95%B0%E6%8D%AE%E6%97%B6-%E6%89%A7%E8%A1%8C%E5%AE%8C%E7%AC%AC%E4%B8%80%E7%BB%84%E4%B9%8B%E5%90%8E-%E6%89%8D%E8%83%BD%E6%89%A7%E8%A1%8C%E7%AC%AC%E4%BA%8C%E7%BB%84)
- [9.多线程中的死锁?](https://ios.nobady.cn/Multi-thread.html#_9-%E5%A4%9A%E7%BA%BF%E7%A8%8B%E4%B8%AD%E7%9A%84%E6%AD%BB%E9%94%81%EF%BC%9F)
- [10.GCD执行原理?](https://ios.nobady.cn/Multi-thread.html#_10-gcd%E6%89%A7%E8%A1%8C%E5%8E%9F%E7%90%86%EF%BC%9F)

### 动画 [![edit](https://github.com/chenxing640/iOS-interview-questions/raw/master/images/md_edit.png)](https://github.com/chenxing640/iOS-interview-questions/edit/master/docs/Animation.md)

- [1.UIView动画与核心动画的区别?](https://ios.nobady.cn/Animation.html#_1-uiview%E5%8A%A8%E7%94%BB%E4%B8%8E%E6%A0%B8%E5%BF%83%E5%8A%A8%E7%94%BB%E7%9A%84%E5%8C%BA%E5%88%AB)
- [2.当我们要做一些基于 CALayer 的动画时,有时需要设置 layer 的锚点来配合动画,这时候我们需要注意什么?](https://ios.nobady.cn/Animation.html#_2-%E5%BD%93%E6%88%91%E4%BB%AC%E8%A6%81%E5%81%9A%E4%B8%80%E4%BA%9B%E5%9F%BA%E4%BA%8E-calayer-%E7%9A%84%E5%8A%A8%E7%94%BB%E6%97%B6%EF%BC%8C%E6%9C%89%E6%97%B6%E9%9C%80%E8%A6%81%E8%AE%BE%E7%BD%AE-layer-%E7%9A%84%E9%94%9A%E7%82%B9%E6%9D%A5%E9%85%8D%E5%90%88%E5%8A%A8%E7%94%BB%EF%BC%8C%E8%BF%99%E6%97%B6%E5%80%99%E6%88%91%E4%BB%AC%E9%9C%80%E8%A6%81%E6%B3%A8%E6%84%8F%E4%BB%80%E4%B9%88%EF%BC%9F)

### 图像处理 [![edit](https://github.com/chenxing640/iOS-interview-questions/raw/master/images/md_edit.png)](https://github.com/chenxing640/iOS-interview-questions/edit/master/docs/Image-processing.md)

- [1.图像的压缩方式](https://ios.nobady.cn/Image-processing.html#_1-%E5%9B%BE%E5%83%8F%E7%9A%84%E5%8E%8B%E7%BC%A9%E6%96%B9%E5%BC%8F)
- [2.如何计算图片加载内存中所占的大小](https://ios.nobady.cn/Image-processing.html#_2-%E5%A6%82%E4%BD%95%E8%AE%A1%E7%AE%97%E5%9B%BE%E7%89%87%E5%8A%A0%E8%BD%BD%E5%86%85%E5%AD%98%E4%B8%AD%E6%89%80%E5%8D%A0%E7%9A%84%E5%A4%A7%E5%B0%8F)

### 数据安全及加密 [![edit](https://github.com/chenxing640/iOS-interview-questions/raw/master/images/md_edit.png)](https://github.com/chenxing640/iOS-interview-questions/edit/master/docs/Data-encryption.md)

- [1.对称加密和非对称加密的区别?](https://ios.nobady.cn/Data-encryption.html#_1-%E5%AF%B9%E7%A7%B0%E5%8A%A0%E5%AF%86%E5%92%8C%E9%9D%9E%E5%AF%B9%E7%A7%B0%E5%8A%A0%E5%AF%86%E7%9A%84%E5%8C%BA%E5%88%AB%EF%BC%9F)
- [2.简述 SSL 加密的过程用了哪些加密方法,为何这么作?](https://ios.nobady.cn/Data-encryption.html#_2-%E7%AE%80%E8%BF%B0-ssl-%E5%8A%A0%E5%AF%86%E7%9A%84%E8%BF%87%E7%A8%8B%E7%94%A8%E4%BA%86%E5%93%AA%E4%BA%9B%E5%8A%A0%E5%AF%86%E6%96%B9%E6%B3%95%EF%BC%8C%E4%B8%BA%E4%BD%95%E8%BF%99%E4%B9%88%E4%BD%9C%EF%BC%9F)
- [3.iOS的签名机制是怎么样的](https://ios.nobady.cn/Data-encryption.html#_3-ios%E7%9A%84%E7%AD%BE%E5%90%8D%E6%9C%BA%E5%88%B6%E6%98%AF%E6%80%8E%E4%B9%88%E6%A0%B7%E7%9A%84)

### Runtime [![edit](https://github.com/chenxing640/iOS-interview-questions/raw/master/images/md_edit.png)](https://github.com/chenxing640/iOS-interview-questions/edit/master/docs/Runtime.md)

- [1.Category 的实现原理?](https://ios.nobady.cn/Runtime.html#_1-category-%E7%9A%84%E5%AE%9E%E7%8E%B0%E5%8E%9F%E7%90%86%EF%BC%9F)
- [2.isa指针的理解,对象的isa指针指向哪里?isa指针有哪两种类型?](https://ios.nobady.cn/Runtime.html#_2-isa%E6%8C%87%E9%92%88%E7%9A%84%E7%90%86%E8%A7%A3%EF%BC%8C%E5%AF%B9%E8%B1%A1%E7%9A%84isa%E6%8C%87%E9%92%88%E6%8C%87%E5%90%91%E5%93%AA%E9%87%8C%EF%BC%9Fisa%E6%8C%87%E9%92%88%E6%9C%89%E5%93%AA%E4%B8%A4%E7%A7%8D%E7%B1%BB%E5%9E%8B%EF%BC%9F)
- [3.Objective-C 如何实现多重继承?](https://ios.nobady.cn/Runtime.html#_3-objective-c-%E5%A6%82%E4%BD%95%E5%AE%9E%E7%8E%B0%E5%A4%9A%E9%87%8D%E7%BB%A7%E6%89%BF%EF%BC%9F)
- [4.runtime 如何实现 weak 属性?](https://ios.nobady.cn/Runtime.html#_4-runtime-%E5%A6%82%E4%BD%95%E5%AE%9E%E7%8E%B0-weak-%E5%B1%9E%E6%80%A7%EF%BC%9F)
- [5.讲一下 OC 的消息机制](https://ios.nobady.cn/Runtime.html#_5-%E8%AE%B2%E4%B8%80%E4%B8%8B-oc-%E7%9A%84%E6%B6%88%E6%81%AF%E6%9C%BA%E5%88%B6)
- [6.runtime具体应用](https://ios.nobady.cn/Runtime.html#_6-runtime%E5%85%B7%E4%BD%93%E5%BA%94%E7%94%A8)
- [7.runtime如何通过selector找到对应的IMP地址?](https://ios.nobady.cn/Runtime.html#_7-runtime%E5%A6%82%E4%BD%95%E9%80%9A%E8%BF%87selector%E6%89%BE%E5%88%B0%E5%AF%B9%E5%BA%94%E7%9A%84imp%E5%9C%B0%E5%9D%80%EF%BC%9F)
- [8.简述下Objective-C中调用方法的过程](https://ios.nobady.cn/Runtime.html#_8-%E7%AE%80%E8%BF%B0%E4%B8%8Bobjective-c%E4%B8%AD%E8%B0%83%E7%94%A8%E6%96%B9%E6%B3%95%E7%9A%84%E8%BF%87%E7%A8%8B)
- [9.load和initialize的区别](https://ios.nobady.cn/Runtime.html#_9-load%E5%92%8Cinitialize%E7%9A%84%E5%8C%BA%E5%88%AB)
- [10.怎么理解Objective-C是动态运行时语言。](https://ios.nobady.cn/Runtime.html#_9-load%E5%92%8Cinitialize%E7%9A%84%E5%8C%BA%E5%88%AB)

### Runloop [![edit](https://github.com/chenxing640/iOS-interview-questions/raw/master/images/md_edit.png)](https://github.com/chenxing640/iOS-interview-questions/edit/master/docs/Runloop.md)

- [1.Runloop 和线程的关系?](https://ios.nobady.cn/Runloop.html#_1-runloop-%E5%92%8C%E7%BA%BF%E7%A8%8B%E7%9A%84%E5%85%B3%E7%B3%BB%EF%BC%9F)
- [2.RunLoop的运行模式](https://ios.nobady.cn/Runloop.html#_2-runloop%E7%9A%84%E8%BF%90%E8%A1%8C%E6%A8%A1%E5%BC%8F)
- [3.runloop内部逻辑?](https://ios.nobady.cn/Runloop.html#_3-runloop%E5%86%85%E9%83%A8%E9%80%BB%E8%BE%91%EF%BC%9F)
- [4.autoreleasePool 在何时被释放?](https://ios.nobady.cn/Runloop.html#_4-autoreleasepool-%E5%9C%A8%E4%BD%95%E6%97%B6%E8%A2%AB%E9%87%8A%E6%94%BE%EF%BC%9F)
- [5.GCD 在Runloop中的使用?](https://ios.nobady.cn/Runloop.html#_5-gcd-%E5%9C%A8runloop%E4%B8%AD%E7%9A%84%E4%BD%BF%E7%94%A8%EF%BC%9F)
- [6.AFNetworking 中如何运用 Runloop?](https://ios.nobady.cn/Runloop.html#_6-afnetworking-%E4%B8%AD%E5%A6%82%E4%BD%95%E8%BF%90%E7%94%A8-runloop)
- [7.PerformSelector 的实现原理?](https://ios.nobady.cn/Runloop.html#_7-performselector-%E7%9A%84%E5%AE%9E%E7%8E%B0%E5%8E%9F%E7%90%86%EF%BC%9F)
- [8.PerformSelector:afterDelay:这个方法在子线程中是否起作用?](https://ios.nobady.cn/Runloop.html#_8-performselector-afterdelay-%E8%BF%99%E4%B8%AA%E6%96%B9%E6%B3%95%E5%9C%A8%E5%AD%90%E7%BA%BF%E7%A8%8B%E4%B8%AD%E6%98%AF%E5%90%A6%E8%B5%B7%E4%BD%9C%E7%94%A8%EF%BC%9F)
- [9.事件响应的过程?](https://ios.nobady.cn/Runloop.html#_9-%E4%BA%8B%E4%BB%B6%E5%93%8D%E5%BA%94%E7%9A%84%E8%BF%87%E7%A8%8B%EF%BC%9F)
- [10.手势识别的过程?](https://ios.nobady.cn/Runloop.html#_10-%E6%89%8B%E5%8A%BF%E8%AF%86%E5%88%AB%E7%9A%84%E8%BF%87%E7%A8%8B%EF%BC%9F)
- [11.CADispalyTimer和Timer哪个更精确](https://ios.nobady.cn/Runloop.html#_11-cadispalytimer%E5%92%8Ctimer%E5%93%AA%E4%B8%AA%E6%9B%B4%E7%B2%BE%E7%A1%AE)

### 项目架构 [![edit](https://github.com/chenxing640/iOS-interview-questions/raw/master/images/md_edit.png)](https://github.com/chenxing640/iOS-interview-questions/edit/master/docs/Project-organization.md)

- [1.MVC、MVP、MVVM模式](https://ios.nobady.cn/Project-organization.html#_1-mvc%E3%80%81mvp%E3%80%81mvvm%E6%A8%A1%E5%BC%8F)
- [2.关于RAC你有怎样运用到解决不同API依赖关系](https://ios.nobady.cn/Project-organization.html#_2-%E5%85%B3%E4%BA%8Erac%E4%BD%A0%E6%9C%89%E6%80%8E%E6%A0%B7%E8%BF%90%E7%94%A8%E5%88%B0%E8%A7%A3%E5%86%B3%E4%B8%8D%E5%90%8Capi%E4%BE%9D%E8%B5%96%E5%85%B3%E7%B3%BB)
- [3.@weakify和我们宏定义的WeakSelf有什么区别?](https://ios.nobady.cn/Project-organization.html#_3-weakify%E5%92%8C%E6%88%91%E4%BB%AC%E5%AE%8F%E5%AE%9A%E4%B9%89%E7%9A%84weakself%E6%9C%89%E4%BB%80%E4%B9%88%E5%8C%BA%E5%88%AB%EF%BC%9F)
- [4.微服务架构设想。](https://ios.nobady.cn/Project-organization.html#_4-%E5%BE%AE%E6%9C%8D%E5%8A%A1%E6%9E%B6%E6%9E%84%E8%AE%BE%E6%83%B3%E3%80%82)

### 设计模式 [![edit](https://github.com/chenxing640/iOS-interview-questions/raw/master/images/md_edit.png)](https://github.com/chenxing640/iOS-interview-questions/edit/master/docs/Design-patterns.md)

- [1.iOS有哪些常见的设计模式?](https://ios.nobady.cn/Design-patterns.html#_1-ios%E6%9C%89%E5%93%AA%E4%BA%9B%E5%B8%B8%E8%A7%81%E7%9A%84%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F)
- [2.单例会有什么弊端?](https://ios.nobady.cn/Design-patterns.html#_2-%E5%8D%95%E4%BE%8B%E4%BC%9A%E6%9C%89%E4%BB%80%E4%B9%88%E5%BC%8A%E7%AB%AF%EF%BC%9F)
- [3.编程中的六大设计原则?](https://ios.nobady.cn/Design-patterns.html#_3-%E7%BC%96%E7%A8%8B%E4%B8%AD%E7%9A%84%E5%85%AD%E5%A4%A7%E8%AE%BE%E8%AE%A1%E5%8E%9F%E5%88%99%EF%BC%9F)

### 组件化 [![edit](https://github.com/chenxing640/iOS-interview-questions/raw/master/images/md_edit.png)](https://github.com/chenxing640/iOS-interview-questions/edit/master/docs/Component-based.md)

- [1.组件化有什么好处?](https://ios.nobady.cn/Component-based.html#_1-%E7%BB%84%E4%BB%B6%E5%8C%96%E6%9C%89%E4%BB%80%E4%B9%88%E5%A5%BD%E5%A4%84%EF%BC%9F)
- [2.你是如何组件化解耦的?](https://ios.nobady.cn/Component-based.html#_2-%E4%BD%A0%E6%98%AF%E5%A6%82%E4%BD%95%E7%BB%84%E4%BB%B6%E5%8C%96%E8%A7%A3%E8%80%A6%E7%9A%84%EF%BC%9F)
- [3.为什么CTMediator方案优于基于Router的方案?](https://ios.nobady.cn/Component-based.html#_3-%E4%B8%BA%E4%BB%80%E4%B9%88ctmediator%E6%96%B9%E6%A1%88%E4%BC%98%E4%BA%8E%E5%9F%BA%E4%BA%8Erouter%E7%9A%84%E6%96%B9%E6%A1%88%EF%BC%9F)
- [4.基于CTMediator的组件化方案,有哪些核心组成?](https://ios.nobady.cn/Component-based.html#_3-%E4%B8%BA%E4%BB%80%E4%B9%88ctmediator%E6%96%B9%E6%A1%88%E4%BC%98%E4%BA%8E%E5%9F%BA%E4%BA%8Erouter%E7%9A%84%E6%96%B9%E6%A1%88%EF%BC%9F)

### 调试技巧 [![edit](https://github.com/chenxing640/iOS-interview-questions/raw/master/images/md_edit.png)](https://github.com/chenxing640/iOS-interview-questions/edit/master/docs/Debug-tips.md)

- [1.LLDB常用的调试命令?](https://ios.nobady.cn/Debug-tips.html#_1-lldb%E5%B8%B8%E7%94%A8%E7%9A%84%E8%B0%83%E8%AF%95%E5%91%BD%E4%BB%A4%EF%BC%9F)
- [2.断点调试](https://ios.nobady.cn/Debug-tips.html#_2-%E6%96%AD%E7%82%B9%E8%B0%83%E8%AF%95)
- [3.iOS 常见的崩溃类型有哪些?](https://ios.nobady.cn/Debug-tips.html#_3-ios-%E5%B8%B8%E8%A7%81%E7%9A%84%E5%B4%A9%E6%BA%83%E7%B1%BB%E5%9E%8B%E6%9C%89%E5%93%AA%E4%BA%9B%EF%BC%9F)

### 性能优化 [![edit](https://github.com/chenxing640/iOS-interview-questions/raw/master/images/md_edit.png)](https://github.com/chenxing640/iOS-interview-questions/edit/master/docs/Performance-optimization.md)

- [1.造成tableView卡顿的原因有哪些?](https://ios.nobady.cn/Performance-optimization.html#_1-%E9%80%A0%E6%88%90tableview%E5%8D%A1%E9%A1%BF%E7%9A%84%E5%8E%9F%E5%9B%A0%E6%9C%89%E5%93%AA%E4%BA%9B%EF%BC%9F)
- [2.如何提升 tableview 的流畅度?](https://ios.nobady.cn/Performance-optimization.html#_2-%E5%A6%82%E4%BD%95%E6%8F%90%E5%8D%87-tableview-%E7%9A%84%E6%B5%81%E7%95%85%E5%BA%A6%EF%BC%9F)
- [3.APP启动时间应从哪些方面优化?](https://ios.nobady.cn/Performance-optimization.html#_3-app%E5%90%AF%E5%8A%A8%E6%97%B6%E9%97%B4%E5%BA%94%E4%BB%8E%E5%93%AA%E4%BA%9B%E6%96%B9%E9%9D%A2%E4%BC%98%E5%8C%96%EF%BC%9F)
- [4.如何降低APP包的大小](https://ios.nobady.cn/Performance-optimization.html#_4-%E5%A6%82%E4%BD%95%E9%99%8D%E4%BD%8Eapp%E5%8C%85%E7%9A%84%E5%A4%A7%E5%B0%8F)
- [5.如何检测离屏渲染与优化](https://ios.nobady.cn/Performance-optimization.html#_5-%E5%A6%82%E4%BD%95%E6%A3%80%E6%B5%8B%E7%A6%BB%E5%B1%8F%E6%B8%B2%E6%9F%93%E4%B8%8E%E4%BC%98%E5%8C%96)
- [6.日常如何检查内存泄露?](https://ios.nobady.cn/Performance-optimization.html#_6-%E6%97%A5%E5%B8%B8%E5%A6%82%E4%BD%95%E6%A3%80%E6%9F%A5%E5%86%85%E5%AD%98%E6%B3%84%E9%9C%B2%EF%BC%9F)

### 源码理解 [![edit](https://github.com/chenxing640/iOS-interview-questions/raw/master/images/md_edit.png)](https://github.com/chenxing640/iOS-interview-questions/edit/master/docs/Source-code.md)

- [1.YYKit](https://ios.nobady.cn/Source-code.html#_1-yykit)
- [2.SDWebImage加载图片过程](https://ios.nobady.cn/Source-code.html#_2-sdwebimage%E5%8A%A0%E8%BD%BD%E5%9B%BE%E7%89%87%E8%BF%87%E7%A8%8B)
- [3.YYWebImage和SDWebImage对比](https://ios.nobady.cn/Source-code.html#_3-yywebimage%E5%92%8Csdwebimage%E5%AF%B9%E6%AF%94)
- [4.AFNetworking 底层原理分析](https://ios.nobady.cn/Source-code.html#_4-afnetworking-%E5%BA%95%E5%B1%82%E5%8E%9F%E7%90%86%E5%88%86%E6%9E%90)

### 代码管理 [![edit](https://github.com/chenxing640/iOS-interview-questions/raw/master/images/md_edit.png)](https://github.com/chenxing640/iOS-interview-questions/edit/master/docs/Code-management.md)

- [1.SVN与Git优缺点比较](https://ios.nobady.cn/Code-management.html#_1-svn%E4%B8%8Egit%E4%BC%98%E7%BC%BA%E7%82%B9%E6%AF%94%E8%BE%83)
- [2.Git与SVN的区别](https://ios.nobady.cn/Code-management.html#_2-git%E4%B8%8Esvn%E7%9A%84%E5%8C%BA%E5%88%AB)

### 持续集成 [![edit](https://github.com/chenxing640/iOS-interview-questions/raw/master/images/md_edit.png)](https://github.com/chenxing640/iOS-interview-questions/edit/master/docs/Continuous-integration.md)

- [1.你在项目中使用过什么持续集成方式?](https://ios.nobady.cn/Continuous-integration.html#_1-%E4%BD%A0%E5%9C%A8%E9%A1%B9%E7%9B%AE%E4%B8%AD%E4%BD%BF%E7%94%A8%E8%BF%87%E4%BB%80%E4%B9%88%E6%8C%81%E7%BB%AD%E9%9B%86%E6%88%90%E6%96%B9%E5%BC%8F%EF%BC%9F)
- [2.jenkins怎么备份恢复](https://ios.nobady.cn/Continuous-integration.html#_2-jenkins%E6%80%8E%E4%B9%88%E5%A4%87%E4%BB%BD%E6%81%A2%E5%A4%8D)
- [3.jenkins你都用了哪些插件?](https://ios.nobady.cn/Continuous-integration.html#_3-jenkins%E4%BD%A0%E9%83%BD%E7%94%A8%E4%BA%86%E5%93%AA%E4%BA%9B%E6%8F%92%E4%BB%B6%EF%BC%9F)