《iOS面試之道》是2018年7月電子工業出版社出版的圖書,作者是故胤道長、唐巧。
基本介紹
- 中文名:iOS面試之道
- 作者:故胤道長、唐巧
- ISBN:9787121342622
- 頁數:220頁
- 定價:59元
- 出版社:電子工業出版社
- 出版時間:2018年7月
- 開本:16開
內容簡介,圖書目錄,
內容簡介
《iOS面試之道》是作者將多年的工作經驗和積累,結合具體面試內容總結而成的。《iOS面試之道》共分為3部分。第1部分為面試準備,詳細介紹求職中遇到的基本問題,作者根據其多年的經驗,在面試流程、簡歷投遞、複習準備方面給出了完善的參考意見和建議。第2部分為算法知識。算法幾乎是各種水平的程式設計師都要面對的考查內容。該部分採用Swift語言重新審視了多種數據結構和算法原理,可以說是為iOS開發者量身打造的算法解答。第3部分為iOS專業問答,分為語言工具、系統框架和經驗之談,採用問答的形式來詳細介紹。如果你是一名iOS開發者,並且正準備跳槽,那么本書是一本不錯的複習參考書;如果你沒有面試計畫,那么本書也可以幫助你對iOS知識進行提綱挈領的整理;如果你是面試官,那么希望本書能為你提供考查應聘者的依據和源泉;對於具有其他背景的軟體工程師,若想一窺iOS世界的知識框架,本書也是不錯的切入點。
圖書目錄
第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
題目目錄
給出一個字元串,要求將其按照單詞順序進行反轉 33
類(class)和結構體(struct)有什麼區別 81
Swift是面向對象還是函式式的程式語言 83
在Swift中,什麼是可選型(Optional) 84
在Swift中,什麼是泛型(Generics) 84
說明並比較關鍵字:Open,Public,Internal,File-private和Private 85
說明並比較關鍵字:Strong,Weak和Unowned 86
在Swift中,如何理解copy-on-write 87
什麼是屬性觀察(Property Observer) 87
在結構體中如何修改成員變數的方法 88
如何用Swift實現或(II)操作 89
實現一個函式:輸入是任意一個整數,輸出為輸入的整數+2 89
實現一個函式:求0~100(包括0和100)中為偶數並且恰好是其他數字平方的
數字 90
什麼是ARC 91
什麼情況下會出現循環引用 92
說明並比較關鍵字:strong,weak,assign和copy 93
說明並比較關鍵字:atomatic和nonatomic 94
atomic是百分之百執行緒安全的嗎 94
說明並比較關鍵字:_ _weak和_ _block 95
什麼是block?它和代理的區別是什麼 95
屬性聲明代碼風格考查 96
架構解耦代碼考查 97
記憶體管理語法考查 98
多執行緒語法考查 99
以scheduledTimerWithTimeInterval的方式觸發的timer,在滑動頁面上的列表時,
timer會暫停,為什麼?該如何解決 100
Swift為什麼將String,Array和Dictionary設計成值類型 101
如何用Swift將協定(protocol)中的部分方法設計成可選(optional) 102
協定的代碼實戰 103
在Swift和Objective-C的混合編程項目中,如何在Swift檔案中調用
Objective-C檔案中定義的方法?如何在Objective-C檔案中調用Swift
檔案中定義的方法 104
比較Swift和Objective-C中的初始化方法(init)有什麼異同 105
比較Swift和Objective-C中的協定(protocol)有什麼異同 105
談談對Objective-C和Swift動態特性的理解 105
語言特性的代碼實戰 107
message send如果找不到對象,則會如何進行後續處理 108
什麼是method swizzling 108
Swift和Objective-C的自省(Introspection)有什麼不同 109
能否通過Category給已有的類添加屬性(property) 110
LLDB中p和po有什麼區別 112
Xcode中的Buildtime issues和Runtime issues指什麼 113
App啟動時間過長,該怎樣最佳化 114
如何用Xcode檢測代碼中的循環引用 115
怎樣解決EXC_BAD_ACCESS 116
如何在Playground中執行異步操作 117
在playground中實現一個10行的列表,每行隨機顯示一個0~100的整數 118
要在UIView上定義一個Label有哪幾種方式 119
storyboard/xib和純代碼構建UI相比,有哪些優點和缺點 120
Auto Layout和Frame在UI布局和渲染上有什麼區別 121
UIView和CALayer有什麼區別 121
說明並比較關鍵字:frame,bounds和center 122
說明並比較方法:layoutIfNeeded,layoutSubviews和setNeedsLayout 123
說明並比較關鍵字:Safe Area,SafeAreaLayoutGuide和SafeAreaInsets 123
在iOS中實現動畫的方式有幾種 124
控制螢幕上的圓形小球,使其水平向右滑動200個point 125
在iOS開發中,如何保證App的UI在iPhone、iPad及iPad分屏情況下
依然適用 127
如何用drag & drop實現圖片拖動功能 129
說明並比較關鍵字:contentView,contentInset,contentSize和contentOffset 131
說明UITableViewCell的重用機制 133
說明並比較協定:UITableViewDataSource和UITableViewDelegate 133
請說明並比較協定:UICollectionViewDataSource,UICollection- ViewDelegate
和UICollectionViewDelegateFlowLayout 133
實現一個10行的列表,每行隨機顯示一個0~100的整數。用戶可以刪除、
移動任何一行,下拉列表中的數字重新刷新 134
UICollectionView中的Supplementary Views和Decoration Views分別指什麼 137
如果一個列表視圖滑動很慢,那么該怎樣最佳化 138
說一說實現預載入的方法 139
如何用UICollectionView實現瀑布流界面 140
說一說HTTP中GET與POST的區別 142
說一說Session和Cookie的概念 142
說明並比較網路通信協定:Ajax Polling,Long Polling,WebSockets和
Sever-Sent Event 143
在一個HTTPS連線的網站中,輸入賬號和密碼並單擊登錄按鈕後,
到伺服器返回這個請求前,這期間經歷了什麼 143
說明並比較類:URLSessionTask,URLSessionDataTask,
URLSessionUploadTask和URLSessionDownloadTask 144
什麼是Completion Handler 145
設計一個方法,在給定API的網址的條件下,返回用戶數據 146
在iOS開發中,本地訊息通知的流程是怎樣的 148
說一說在iOS開發中,遠程訊息推送的原理 149
在iOS開發中,如何實現編碼和解碼 150
說一說在iOS開發中數據持久化的方案 151
在iOS開發中,對於並發操作有哪3種方式 153
比較關鍵字:Serial,Concurrent,Sync和Async 153
串列佇列的代碼實戰 154
並行佇列的代碼實戰 156
舉例說明iOS並發編程中的三大問題 157
競態條件的代碼實戰 160
試比較GCD中的方法:dispatch_async,dispatch_after,dispatch_ once
和dispatch_group 162
GCD中全局(global)佇列有哪幾種優先權 164
試比較Operations中的關鍵字:Operation,BlockOperation和OperationQueue 164
如何在OperationQueue中取消某個Operation 166
在實際開發中,主執行緒和其他執行緒有哪些使用場景 168
說說你平常開發中用到的設計模式 169
什麼是MVC 170
Objective-C和Swift在單例模式的創建上有什麼區別 171
什麼是裝飾模式(Decorator) 171
什麼是觀察者模式(Observer) 172
什麼是備忘錄模式(Memento) 174
比較蘋果官方的MVC架構的優點和缺點 176
MVC架構的代碼實戰 177
MVCS中的S為什麼要單獨拆分出來 179
MVP和MVC有什麼異同 179
MVVM中的ViewModel的作用是什麼 180
比較MVC、MVP和MVVM這三種架構 181
VIPER之間的各個組件是如何互動的 182
什麼是OOP?它在iOS開發中有哪些優點 184
OOP在iOS開發中有哪些缺點 185
POP相比OOP有哪些優勢 187
要給一個UIButton增加一個點擊後抖動的效果,該怎樣實現 189
POP的代碼實戰 190
試用Swift實現二分搜尋算法 192
一個App崩潰了,可能是什麼原因造成的 195
在模擬機上完成所有測試之後,就不需要在真機上再進行測試了嗎 196
為什麼在單元測試中引入代碼模組要用@testable關鍵字 197
單元測試的代碼實戰 197
說一說iOS中的性能測試(performance test) 199
說一說iOS開發中的UI測試 200
如何檢查測試覆蓋率 200
什麼是iOS中的App ID 201
什麼是iOS中的Code Signing 202
什麼是iOS中的App Thinning 202
向App Store提交App時有哪些原因可能被拒 203