美團 iOS 開發(fā)工程師面試題
一面:
Block的底層原理,結(jié)構(gòu),內(nèi)存以及需要注意的地方。
圖片渲染,一張 png/jpg 格式的圖片渲染到頁面上顯示有哪些流程。png和jpg的區(qū)別。png一定是無損的嗎?
Runtime。
Runloop 的結(jié)構(gòu)和循環(huán)流程,用Runloop做過什么事情。
多線程,NSOperationQueue 和 GCD 的區(qū)別。用多線程做過什么事情。線程安全的問題。加鎖有幾種方式。
NSURLSession 和 NSURLConnection 的區(qū)別,NSURLConnection 是怎么封裝的。CFNetwork。
做過什么動畫。
https 的工作原理,和 http 的區(qū)別。RSA 加密原理。
網(wǎng)絡(luò)層級,TCP 和 UDP 的區(qū)別。
SDWebImage 的框架結(jié)構(gòu),緩存機制。
Git 的 rebase 的原理。Git 流程。
對組件化的了解,組件化是為了解決什么問題。
JSPatch的原理。
單例是為了處理什么問題而使用的,單例和全局變量的區(qū)別。
對設(shè)計模式的掌握。
分層打印二叉樹。
新增一面被問到的問題,什么是meta class,實際中會用meta class做什么事情。
二面:
對一面的總結(jié)。
MVC 和 MVVM 的區(qū)別。
用 MVVM 實現(xiàn)一個業(yè)務(wù)。VC 是入口,VC1 顯示 “省” 的列表,VC2 顯示省關(guān)聯(lián)的 “市” 的列表,VC3 顯示市關(guān)聯(lián)的 “縣” 的列表。VC 到 VC1,VC1到 VC2,VC2 到 VC3,VC3 再跳轉(zhuǎn)到 VC。相關(guān)點在于如何設(shè)計 ViewModel 和 Model ,以及 VC3 到 VC。
如何編寫單元測試,比如寫了一個網(wǎng)絡(luò)庫,如何測試該網(wǎng)絡(luò)庫,用例怎么寫的更全面一些。
代碼從 Git 上拉下來到生成 .ipa 都有哪些過程,期間都生成了什么文件。
最近讀過哪些書,看過哪些框架,有什么收獲。
談到 JSPatch,問 JSPatch 是如何處理 Block 的。
自己擅長的地方。
遇到過什么樣的挫折。
新增二面被問到的問題:如果沒有instruments,該如何檢測memory leak, zombie object 之類的問題。
三面:
先談了下前兩面的感受和問題,又和面試官聊到了單例和全局變量的區(qū)別。
Block和Protocol的區(qū)別,Block是為了解決什么問題而使用的。
iOS 的設(shè)計模式。iOS 為什么沒有類似于 Java 和 C 之類的 “Builder” 的構(gòu)造模式。
冒泡、插入、快速排序的平均時間復(fù)雜度和最壞時間復(fù)雜度。
堆排序。
有時間復(fù)雜度為 O(n) 的排序嗎?
最近從 stackOverFlow 上解決過的問題,讀過的開源框架,讀過的書,業(yè)余興趣,最有成就感的事情。
IT技術(shù)交流QQ群:628365316