第1章 iOS工程师的面试 1
1.1 简历的准备 1
1.2 寻找机会 8
1.3 面试流程 9
1.4 代码和系统设计的准备 16
1.5 如何提问 22
1.6 Offer的比较和选择 24
第2章 算法基础 28
2.1 基本的数据结构 28
数组 28
字典和集合 30
字符串 32
2.2 链表 34
链表的基本概念 34
Dummy节点和尾插法 35
快行指针 38
2.3 栈和队列 40
栈和队列的基本概念 40
栈和队列互相转换 43
栈和队列面试实战题 45
2.4 二叉树 47
二叉树的基本概念 48
二叉树的遍历 50
二叉树面试实战题 51
2.5 排序和搜索 54
排序的基本概念 54
搜索的基本概念 57
排序面试实战题 59
搜索面试实战题 61
iOS中搜索与排序的配合使用 64
2.6 深度优先搜索和广度优先搜索 66
深度优先搜索和广度优先搜索的基本概念 66
深度优先搜索和广度优先搜索面试实战题 69
2.7 动态规划 74
斐波拉契数列问题 74
斐波拉契数列问题面试实战题 77
第3章 语言工具 81
3.1 Swift 81
Swift面试理论题 81
Swift面试实战题 88
3.2 Objective-C 91
Objective-C面试理论题 91
Objective-C面试实战题 96
3.3 Swift VS Objective-C 101
数据结构 101
编程思路 104
语言特性 105
3.4 Xcode使用 112
Xcode调试 112
分析与优化 114
Playground技巧 117
第4章 系统框架 119
4.1 UI相关知识 119
UIKit 119
UI控件和基本布局 119
动画 124
多任务开发 127
4.2 UIScrollView及其子类 131
UIScrollView及其子类理论面试题 131
拓展知识 134
优化进阶 138
4.3 网络、推送与数据处理 141
网络、推送与数据处理相关理论 142
iOS网络请求 144
信息推送 148
数据处理 150
4.4 并发编程 152
4.5 设计模式 168
第5章 经验之谈 175
5.1 架构的选择 175
5.2 面向协议的编程 184
POP VS OOP 184
POP面试实战题 189
5.3 App的测试和上架 195
测试相关知识 195
App Store相关知识 201
结束语 204