iOS面試題13-其他

2018 iOS面試題系列

1.常用的設計模式

單例模式
組合模式
觀察者模式
代理模式
享元模式
工廠方法模式
抽象工廠模式

2.MVC 的理解

數據管理者(M)、數據展示者(V)、數據加工者(C)

M 應該做的事:
給 ViewController 提供數據
給 ViewController 存儲數據提供接口
提供經過抽象的業務基本組件,供 Controller 調度

C 應該做的事:
管理 View Container 的生命周期
負責生成所有的 View 實例,并放入 View Container
監聽來自 View 與業務有關的事件,通過與 Model 的合作,來完成對應事件的業務。

V 應該做的事:
響應與業務無關的事件,并因此引發動畫效果,點擊反饋(如果合適的話,盡量還是放在 View 去做)等。
界面元素表達

3.MVC 和 MVVM 的區別

MVVM 是對胖模型進行的拆分,其本質是給控制器減負,將一些弱業務邏輯放到 VM 中處理

MVC 是一切設計的基礎,所有新的設計模式都是基于 MVC 進行的改進

補充:常見的設計模式有:MVC、MVCS、MVVM、viper

4.TCP 和 UDP 有什么區別?

TCP 是面向連接的,建立連接需要經歷三次握手,保證數據正確性和數據順序

UDP 是非連接的協議,傳送數據受生成速度,傳輸帶寬等限制,可能造成丟包

UDP 一臺服務端可以同時向多個客戶端傳輸信息

TCP 報頭體積更大,對系統資源要求更多

5.TCP 的三次握手

第一次握手:客戶端發送 syn 包到服務器,并進入 syn_send狀態,等待服務器進行確認;

第二次握手:服務器收到客戶端的 syn 包,必須確認客戶的SYN,同時自己也發送一個 SYN 包,即 SYN + ACK 包,此時服務器進入 SYN_RECV 狀態;

第三次握手:客戶收到服務器發送的 SYN+ACK 包之后,向服務器發送確認包, 此包發送完畢,客戶端和服務器進入ESTABLISHED 狀態,完成第三次握手。

6.如何制作一個靜態庫/動態庫?他們的區別是什么?

Xcode6 支持制作靜態庫/動態庫 framework
無論是動態庫還是靜態庫都是區分真機和模擬器的靜態庫編譯靜態庫文件裝入程序空間,動態庫是文件動態裝入內存,動態庫執行到相關函數才會被調用,節省空間 。

蘋果一般不允許第三方動態庫,APP 容易被拒

7. 一個 lib 包含了很多的架構,會打到最后的包里么?

不會 , 如果lib中有armv7,armv7s,arm64,i386,x86_64 架 構 , 而 target architecture 選擇了armv7s,arm64,那么只會從 lib 中 link 指定的這兩個架構的二進制代碼,其他架構下的代碼不會 link 到最終可執行文件中;反過來,一個 lib 需要在模擬器環境中正常 link,也得包含 i386 架構的指令
每一個設備都有屬于自己的 CPU架構
每一個靜態支持的架構是固定的
模擬器
4s-->5 : i386
5s-->6plus : x86_64

真機
3gs-->4s : armv7
5/5c : armv7s,靜態庫只要支持了 armv7,就可以跑在 armv7s的架構上
5s-->6plus : arm64

8.常用命令總結:

// 使用 lipo -info命令,查看指定庫支持的架構,比如 UIKit框架
lipo -info UIKit.framework/UIKit

// 想看的更詳細的信息可以使用 lipo -detailed_info
lipo -detailed_info UIKit.framework/UIKit

// 還可以使用 file命令
file UIKit.framework/UIKit

// 合并 MyLib-32.a和 MyLib-64.a,可以使用 lipo -create命令
合并
lipo -create MyLib-32.a MyLib-64.a -output MyLib.a

9.支持 64-bit 后程序包會變大么?

會,支持 64-bit 后,多了一個 arm64 架構,理論上每個架構一套指令,但相比原來會大多少還不好說

10.用過 Core Data 或者 SQLite 嗎?讀寫是分線程的嗎?遇到過死鎖沒?如何解決的?

用過 SQLite,使用 FMDB 框架
丟給 FMDatabaseQueue 或者添加互斥鎖(NSLock/@synchronized(鎖對象))

11.請簡單的介紹下 APNS 發送系統消息的機制

APNS 優勢:杜絕了類似安卓那種為了接受通知不停在后臺喚醒程序保持長連接的行為,由 iOS 系統和 APNS 進行長連替代

APNS 的原理:
應用在通知中心注冊,由 iOS 系統向 APNS 請求返回設備令牌(device Token)
應用程序接收到設備令牌并發送給自己的后臺服務器
服務器把要推送的內容和設備發送給 APNS

APNS 根據設備令牌找到設備,再由 iOS 根據 APPID 把推送內容展示

12.不用中間變量,用兩種方法交換 A 和 B 的值

方法 1:A = A + B
B = A - B
A = A - B

方法 2:異或 A = A^B;
B = A^B;
A = A^B;

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 229,732評論 6 539
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,214評論 3 426
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 177,781評論 0 382
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,588評論 1 316
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,315評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,699評論 1 327
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,698評論 3 446
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,882評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,441評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,189評論 3 356
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,388評論 1 372
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,933評論 5 363
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,613評論 3 348
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,023評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,310評論 1 293
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,112評論 3 398
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,334評論 2 377

推薦閱讀更多精彩內容