{"id":33448840,"url":"https://github.com/icofans/ios-interview-questions","last_synced_at":"2025-11-24T18:05:20.710Z","repository":{"id":38417488,"uuid":"189330384","full_name":"icofans/iOS-Interview-Questions","owner":"icofans","description":"iOS面试题整理，在线查看地址：https://ios.nobady.cn","archived":false,"fork":false,"pushed_at":"2023-07-21T07:06:13.000Z","size":89,"stargazers_count":349,"open_issues_count":8,"forks_count":120,"subscribers_count":12,"default_branch":"master","last_synced_at":"2023-11-07T17:12:04.995Z","etag":null,"topics":["gcd","interview","interview-questions","ios","objective-c","runloop","runtime"],"latest_commit_sha":null,"homepage":"","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/icofans.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2019-05-30T02:20:37.000Z","updated_at":"2023-10-31T16:47:36.000Z","dependencies_parsed_at":"2022-07-16T09:46:28.349Z","dependency_job_id":null,"html_url":"https://github.com/icofans/iOS-Interview-Questions","commit_stats":null,"previous_names":[],"tags_count":0,"template":null,"template_full_name":null,"purl":"pkg:github/icofans/iOS-Interview-Questions","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/icofans%2FiOS-Interview-Questions","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/icofans%2FiOS-Interview-Questions/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/icofans%2FiOS-Interview-Questions/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/icofans%2FiOS-Interview-Questions/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/icofans","download_url":"https://codeload.github.com/icofans/iOS-Interview-Questions/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/icofans%2FiOS-Interview-Questions/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286079811,"owners_count":27282121,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-11-24T02:00:07.096Z","response_time":68,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["gcd","interview","interview-questions","ios","objective-c","runloop","runtime"],"created_at":"2025-11-24T18:05:19.693Z","updated_at":"2025-11-24T18:05:20.702Z","avatar_url":"https://github.com/icofans.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"### iOS面试题整理\n\n在线查看地址：https://ios.nobady.cn\n\niOS面试相关问题整理，做这个的初心是希望能巩固自己的基础知识，当然也希望能帮助更多的开发者，如发现答案不准确或者不完整的可前往 Github 提交完善。\n\n主要从以下方面做了整理：\n\n\n#### 数据结构\n\n- [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)\n- [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)\n- [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)\n- [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)\n- [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)\n- [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)\n- [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)\n\n#### 算法\n\n- [1.时间复杂度](https://ios.nobady.cn/Arithmetic.html#_1-%E6%97%B6%E9%97%B4%E5%A4%8D%E6%9D%82%E5%BA%A6)\n- [2.空间复杂度](https://ios.nobady.cn/Arithmetic.html#_2-%E7%A9%BA%E9%97%B4%E5%A4%8D%E6%9D%82%E5%BA%A6)\n- [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)\n- [4.字符串反转](https://ios.nobady.cn/Arithmetic.html#_4-%E5%AD%97%E7%AC%A6%E4%B8%B2%E5%8F%8D%E8%BD%AC)\n- [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)\n- [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)\n- [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)\n- [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)\n- [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)\n- [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)\n\n#### Foundation\n\n- [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)\n- [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)\n- [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)\n- [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)\n- [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)\n- [6.self和super的区别](https://ios.nobady.cn/Foundation.html#_6-self%E5%92%8Csuper%E7%9A%84%E5%8C%BA%E5%88%AB)\n- [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)\n- [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)\n- [9.类族](https://ios.nobady.cn/Foundation.html#_9-%E7%B1%BB%E6%97%8F)\n- [10.struct和class的区别](https://ios.nobady.cn/Foundation.html#_10-struct%E5%92%8Cclass%E7%9A%84%E5%8C%BA%E5%88%AB)\n\n#### UIKit\n\n- [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)\n- [2.Bounds 和 Frame 的区别?](https://ios.nobady.cn/UIKit.html#_2-bounds-%E5%92%8C-frame-%E7%9A%84%E5%8C%BA%E5%88%AB)\n- [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)\n- [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)\n- [5.loadView的作用？](https://ios.nobady.cn/UIKit.html#_5-loadview%E7%9A%84%E4%BD%9C%E7%94%A8%EF%BC%9F)\n- [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)\n- [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)\n\n#### WebView\n\n- [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)\n- [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)\n\n#### 内存管理\n\n- [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)\n- [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)\n- [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)\n- [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)\n- [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)\n- [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)\n- [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)\n- [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)\n- [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)\n\n#### 消息传递的方式\n\n- [1.KVC实现原理](https://ios.nobady.cn/Message-passing.html#_1-kvc%E5%AE%9E%E7%8E%B0%E5%8E%9F%E7%90%86)\n- [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)\n- [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)\n- [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)\n- [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)\n- [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)\n\n#### 网络\n\n- [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)\n- [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)\n- [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)\n- [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)\n- [5.TCP 和 UDP的区别](https://ios.nobady.cn/Network.html#_5-tcp-%E5%92%8C-udp%E7%9A%84%E5%8C%BA%E5%88%AB)\n- [6.Cookie和Session](https://ios.nobady.cn/Network.html#_6-cookie%E5%92%8Csession)\n- [7.DNS是什么](https://ios.nobady.cn/Network.html#_7-dns%E6%98%AF%E4%BB%80%E4%B9%88)\n- [8.DNS解析过程](https://ios.nobady.cn/Network.html#_8-dns%E8%A7%A3%E6%9E%90%E8%BF%87%E7%A8%8B)\n\n#### 数据存储\n\n- [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)\n- [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)\n\n#### 多线程\n\n- [1.进程与线程](https://ios.nobady.cn/Multi-thread.html#_1-%E8%BF%9B%E7%A8%8B%E4%B8%8E%E7%BA%BF%E7%A8%8B)\n- [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)\n- [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)\n- [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)\n- [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)\n- [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)\n- [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)\n- [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)\n- [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)\n- [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)\n\n#### 动画\n\n- [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)\n- [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)\n\n#### 图像处理\n\n- [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)\n- [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)\n\n#### 数据安全及加密\n\n- [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)\n- [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)\n- [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)\n\n#### Runtime\n\n- [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)\n- [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)\n- [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)\n- [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)\n- [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)\n- [6.runtime具体应用](https://ios.nobady.cn/Runtime.html#_6-runtime%E5%85%B7%E4%BD%93%E5%BA%94%E7%94%A8)\n- [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)\n- [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)\n- [9.load和initialize的区别](https://ios.nobady.cn/Runtime.html#_9-load%E5%92%8Cinitialize%E7%9A%84%E5%8C%BA%E5%88%AB)\n- [10.怎么理解Objective-C是动态运行时语言。](https://ios.nobady.cn/Runtime.html#_9-load%E5%92%8Cinitialize%E7%9A%84%E5%8C%BA%E5%88%AB)\n\n#### Runloop\n\n- [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)\n- [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)\n- [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)\n- [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)\n- [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)\n- [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)\n- [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)\n- [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)\n- [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)\n- [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)\n- [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)\n\n#### 项目架构\n\n- [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)\n- [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)\n- [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)\n- [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)\n\n#### 设计模式\n\n- [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)\n- [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)\n- [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)\n\n#### 组件化\n\n- [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)\n- [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)\n- [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)\n- [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)\n\n#### 调试技巧\n\n- [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)\n- [2.断点调试](https://ios.nobady.cn/Debug-tips.html#_2-%E6%96%AD%E7%82%B9%E8%B0%83%E8%AF%95)\n- [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)\n\n#### 性能优化\n\n- [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)\n- [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)\n- [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)\n- [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)\n- [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)\n- [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)\n\n#### 源码理解 \n\n- [1.YYKit](https://ios.nobady.cn/Source-code.html#_1-yykit)\n- [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)\n- [3.YYWebImage和SDWebImage对比](https://ios.nobady.cn/Source-code.html#_3-yywebimage%E5%92%8Csdwebimage%E5%AF%B9%E6%AF%94)\n- [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)\n\n#### 代码管理\n\n- [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)\n- [2.Git与SVN的区别](https://ios.nobady.cn/Code-management.html#_2-git%E4%B8%8Esvn%E7%9A%84%E5%8C%BA%E5%88%AB)\n\n#### 持续集成\n\n- [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)\n- [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)\n- [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)\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ficofans%2Fios-interview-questions","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ficofans%2Fios-interview-questions","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ficofans%2Fios-interview-questions/lists"}