iOS面試一戰到底

iOS面試一戰到底

作者: 張益琿
出版社: 清華大學
出版在: 2020-09-01
ISBN-13: 9787302559191
ISBN-10: 7302559198
裝訂格式: 平裝
總頁數: 277 頁





內容描述


本書是一本專門面向提升面試技巧的工具書,
同時也是一本專註於提升iOS核心開發能力的進階教程。 
本書比較系統地介紹了一個高級iOS工程師在開發中需要掌握的各種核心技能,
其中包括流行的設計模式與數據結構、常用的核心算法、
多線程技術以及iOS應用運行和界面渲染的底層原理與優化思路等。
本書結合面試場景,提供了大量的模擬習題來幫助讀者做演練。
通過本書的學習,可以切實提高讀者的編程技能,學到更多高階iOS開發技巧,
同時也可以提高面試實力,幫助讀者在找工作的過程中更加游刃有餘。
 由於本書涉及更多的是設計開發中的高階技巧,因此對於無基礎的讀者來說可能略有難度。
本書並不適合零基礎的讀者作為入門參考書閱讀,對於零基礎的讀者,
建議先學習入門類教程後再使用本書做深入與提高。


目錄大綱


目錄
第1章  面試前的準備 1
1.1  精緻你的簡歷 1
1.1.1  求職簡歷的基本格式 2
1.1.2  投其所好——精準投遞你的簡歷 2
1.2  篩選面試機會 3
1.2.1  從眼前著眼,也考慮未來 3
1.2.2  在面試過程中分析公司 3
1.3  筆試與面試 4
1.3.1  關於筆試需要註意的事 4
1.3.2  關於面試需要註意的事 4
1.4  面試中的交流與提問 5
1.4.1  盡量使單向的陳述變成雙向的交流 5
1.4.2  把握提問的機會 5
1.5  Offer的選擇與職業規劃 6
1.5.1  選擇Offer時的幾點建議 6
1.5.2  關於職業規劃 7
1.6  回顧、思考與練習 8
1.6.1  回顧 8
1.6.2  思考與練習 9
第2章  常用設計模式應用解析 10
2.1  設計模式概述 10
2.1.1  初識設計模式 11
2.1.2  設計模式的分類 11
2.2  關於UML建模語言 12
2.2.1  UML簡介 12
2.2.2  使用UML描述類之間的關系 13
2.3  軟件設計的7條原則 16
2.3.1  開閉原則 16
2.3.2  里式替換原則 19
2.3.3  單一職責原則 21
2.3.4  接口隔離原則 23
2.3.5  依賴倒置原則 26
2.3.6  迪米特原則 28
2.3.7  合成復用原則 30
2.4  創建型設計模式 32
2.4.1  單例設計模式 32
2.4.2  原型設計模式 36
2.4.3  工廠方法設計模式 38
2.4.4  抽象工廠設計模式 40
2.4.5  建造者設計模式 42
2.5  結構型設計模式 44
2.5.1  代理設計模式 44
2.5.2  適配器設計模式 46
2.5.3  橋接設計模式 47
2.5.4  裝飾設計模式 48
2.5.5  外觀設計模式 49
2.5.6  享元設計模式 50
2.5.7  組合設計模式 52
2.6  行為型設計模式 55
2.6.1  模板方法設計模式 55
2.6.2  策略設計模式 56
2.6.3  命令設計模式 57
2.6.4  責任鏈設計模式 60
2.6.5  狀態設計模式 62
2.6.6  觀察者設計模式 63
2.6.7  中介者設計模式 65
2.6.8  迭代器設計模式 68
2.6.9  訪問者設計模式 69
2.6.10  備忘錄設計模式 70
2.6.11  解釋器設計模式 72
2.7  回顧、思考與練習 73
2.7.1  回顧 74
2.7.2  思考與練習 74
第3章  核心數據類型你不知道的真相 75
3.1  多變的NSString類 75
3.1.1  從NSString對象的引用計數說起 76
3.1.2  iOS程序的內存分佈 78
3.1.3  NSString類簇 79
3.1.4  NSString復制相關的方法 81
3.2  深入理解NSArray類 83
3.2.1  NSArray相關類簇 84
3.2.2  NSArray數組的內存分佈 85
3.3  NSDictionary的相關內容 86
3.3.1  NSDictionary類簇 86
3.3.2  瞭解哈希表 87
3.3.3  處理哈希碰撞 89
3.3.4  NSDictionary的實現原理 92
3.4  Swift語言中的字符串、數組與字典類型 92
3.4.1  值類型與引用類型 93
3.4.2  在Swift中使用指針 96
3.4.3  指針與內存管理 98
3.4.4  Swift中的String類型 99
3.4.5  Swift中的Array類型 101
3.4.6  Swift中的Dictionary類型 104
3.5  回顧、思考與練習 105
3.5.1  回顧 105
3.5.2  思考與練習 105
第4章  常用算法解析 106
4.1  關於算法的復雜度 107
4.1.1  時間復雜度概述 107
4.1.2  常見的幾種時間復雜度 108
4.1.3  空間復雜度概述 110
4.2  常用查找算法 112
4.2.1  順序查找算法 112
4.2.2  二分查找算法 112
4.2.3  插值查找算法 113
4.2.4  斐波那契查找算法 114
4.2.5  二叉查找樹查找算法 116
4.2.6  分塊查找算法 117
4.2.7  哈希查找算法 118
4.3  常用排序算法 118
4.3.1  冒泡排序算法 118
4.3.2  選擇排序算法 119
4.3.3  快速排序算法 120
4.3.4  插入排序算法 121
4.3.5  希爾排序算法 121
4.3.6  桶排序算法 122
4.3.7  歸並排序算法 123
4.3.8  堆排序算法 125
4.4  樹相關算法 126
4.4.1  樹的概念 126
4.4.2  二叉樹 127
4.4.3  二叉樹的遍歷 128
4.4.4  二叉查找樹 130
4.4.5  平衡二叉查找樹 133
4.4.6  構建平衡二叉查找樹 135
4.5  回顧、思考與練習 140
4.5.1  回顧 140
4.5.2  思考與練習 141
第5章  容易被忽略的語法雷區 142
5.1  Objective-C中的屬性 142
5.1.1  @property語法做了什麽 143
5.1.2  屬性修飾符 145
5.1.3  Setter方法語義類修飾符 145
5.1.4  訪問器名稱相關的修飾符 146
5.1.5  可寫性相關的修飾符 146
5.1.6  原子性相關的修飾符 146
5.1.7  為空性相關的修飾符 147
5.2  深入理解引用計數技術 148
5.2.1  手動引用計數 148
5.2.2  初步瞭解自動引用計數的原理 150
5.2.3  自動釋放池 152
5.3  Objective-C中的Block 154
5.3.1  Block的類型 154
5.3.2  Block中變量的捕獲 157
5.3.3  __block關鍵字 158
5.4  iOS程序開發中的RunLoop 159
5.4.1  線程與RunLoop的關系 159
5.4.2  RunLoop的運行機制 161
5.4.3  RunLoop的模式 163
5.5  Objective-C語言的消息機制與運行時 164
5.5.1  使用消息發送代替函數調用 165
5.5.2  消息傳遞的過程 166
5.5.3  關於super關鍵字 172
5.5.4  Objective-C的運行時技術 173
5.6  Swift中的“?”與“!” 178
5.6.1  關於可選類型 178
5.6.2  隱式解析與可選鏈 179
5.6.3  可選類型的本質 181
5.7  Swift中的權限控制 181
5.7.1  關於private 182
5.7.2  關於fileprivate 183
5.7.3  關於internal 184
5.7.4  public與open 184
5.8  Swift中的泛型 185
5.8.1  泛型使用示例 185
5.8.2  對泛型進行約束 188
5.9  Swift中的協議與擴展 191
5.9.1  Swift中協議的用法 191
5.9.2  協議與擴展的結合使用 194
5.10  回顧、思考與練習 195
5.10.1  回顧 195
5.10.2  思考與練習 196
第6章  界面開發核心技術 197
6.1  自動佈局技術 197
6.1.1  自動佈局的基本原理 198
6.1.2  NSLayoutConstraint對象的使用 199
6.1.3  使用VFL創建約束對象 202
6.1.4  佈局錨點NSLayoutAnchor的應用 205
6.2  iOS開發中的動畫系統 207
6.2.1  動畫的本質 207
6.2.2  關於CALayer 208
6.2.3  CALayer的隱式動畫 210
6.2.4  隱式動畫的原理 213
6.2.5  各種常用的CALayer子類 216
6.2.6  Core Animation核心動畫技術 221
6.3  iOS中的繪圖技術 223
6.3.1  屏幕渲染原理 223
6.3.2  iOS頁面渲染的過程 224
6.3.3  圖層的繪制 225
6.3.4  使用CGContext手動繪制圖層 227
6.4  頁面的性能優化 229
6.4.1  控制圖層數量 229
6.4.2  合理使用離屏渲染 232
6.4.3  更多提高頁面性能的方式 233
6.5  回顧、思考與練習 234
6.5.1  回顧 234
6.5.2  思考與練習 234
第7章  多線程核心知識 235
7.1  pthread多線程技術的應用 235
7.1.1  pthread的簡單使用 236
7.1.2  可配置的線程屬性 236
7.1.3  pthread中的常用函數 238
7.1.4  pthread進行線程間通信 241
7.2  NSThread多線程編程技術 242
7.2.1  使用NSThread開啟新線程的幾種方式 242
7.2.2  NSThread中的相關屬性與方法解析 245
7.2.3  NSThread相關的幾個通知 246
7.3  GCD多線程編程技術 246
7.3.1  GCD調度機制 247
7.3.2  添加任務到GCD隊列 248
7.3.3  使用調度組 248
7.3.4  使用GCD進行快速迭代 251
7.3.5  使用GCD監聽事件源 252
7.3.6  GCD中信號的使用 254
7.3.7  執行延時任務 255
7.3.8  GCD中的單例 255
7.3.9  GCD中的柵欄函數 255
7.4  NSOperationQueue多線程編程 257
7.4.1  理解NSOperation 258
7.4.2  NSOperationQueue操作隊列 260
7.5  關於線程死鎖 262
7.6  回顧、思考與練習 264
7.6.1  回顧 264
7.6.2  思考與練習 264
第8章  應用上架指南 265
8.1  應用程序推送 265
8.1.1  UserNotification框架概覽 265
8.1.2  推送普通的本地通知 267
8.1.3  通知觸發器 268
8.1.4  為通知內容添加附件 269
8.1.5  自定義通知模板 271
8.1.6  遠程推送 273
8.2  應用程序上架流程 275
8.2.1  關於應用程序測試 275
8.2.2  提交應用程序到AppStore 276
8.2.3  應用審核拒絕後的處理方案 276
8.3  回顧、思考與練習 277
8.3.1  回顧 277
8.3.2  思考與練習 277


作者介紹


張益琿(網名:琿少)
多年iOS開發經驗,51CTO學院、CSDN學院簽約講師,麥子學院金牌講師。
參與開發iOS平台系列遊戲:瘋狂越獄1-2、應用物通配貨軟件、
VIPExam考試庫、證券財經軟件等。
曾就職於中國唯品會,主要從事移動端應用開發,
對iOS開發、React Native跨平台開發及JavaScript前端開發都擁有豐富的經驗。
曾出版《iOS開發實戰:從零基礎到App Store上架》
《React Native全教程:移動端跨平台應用開發》等多本編程著作。




相關書籍

The Complete Software Developer's Career Guide: How to Learn Programming Languages Quickly, Ace Your Programming Interview, and Land Your Software Developer Dream Job

作者 John Sonmez

2020-09-01

數據庫程序員面試筆試通關寶典

作者 聚慕課教育研發中心

2020-09-01

iOS面試一戰到底

作者 張益琿

2020-09-01