美團(tuán) 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酪耕。
做過什么動(dòng)畫导梆。
https 的工作原理,和 http 的區(qū)別迂烁。RSA 加密原理看尼。
網(wǎng)絡(luò)層級(jí),TCP 和 UDP 的區(qū)別盟步。
SDWebImage 的框架結(jié)構(gòu)藏斩,緩存機(jī)制。
Git 的 rebase 的原理却盘。Git 流程灾茁。
對組件化的了解,組件化是為了解決什么問題谷炸。
JSPatch的原理。
單例是為了處理什么問題而使用的禀挫,單例和全局變量的區(qū)別旬陡。
對設(shè)計(jì)模式的掌握。
分層打印二叉樹语婴。
新增一面被問到的問題描孟,什么是meta class驶睦,實(shí)際中會(huì)用meta class做什么事情。
二面:
對一面的總結(jié)匿醒。
MVC 和 MVVM 的區(qū)別场航。
用 MVVM 實(shí)現(xiàn)一個(gè)業(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)點(diǎn)在于如何設(shè)計(jì) ViewModel 和 Model ,以及 VC3 到 VC揪罕。
如何編寫單元測試梯码,比如寫了一個(gè)網(wǎng)絡(luò)庫,如何測試該網(wǎng)絡(luò)庫好啰,用例怎么寫的更全面一些榨崩。
代碼從 Git 上拉下來到生成 .ipa 都有哪些過程油宜,期間都生成了什么文件。
最近讀過哪些書,看過哪些框架棵癣,有什么收獲。
談到 JSPatch节值,問 JSPatch 是如何處理 Block 的廊镜。
自己擅長的地方。
遇到過什么樣的挫折男应。
新增二面被問到的問題:如果沒有instruments闹司,該如何檢測memory leak, zombie object 之類的問題。
三面:
先談了下前兩面的感受和問題沐飘,又和面試官聊到了單例和全局變量的區(qū)別游桩。
Block和Protocol的區(qū)別,Block是為了解決什么問題而使用的耐朴。
iOS 的設(shè)計(jì)模式借卧。iOS 為什么沒有類似于 Java 和 C 之類的 “Builder” 的構(gòu)造模式。
冒泡筛峭、插入铐刘、快速排序的平均時(shí)間復(fù)雜度和最壞時(shí)間復(fù)雜度。
堆排序影晓。
有時(shí)間復(fù)雜度為 O(n) 的排序嗎镰吵?
最近從 stackOverFlow 上解決過的問題檩禾,讀過的開源框架,讀過的書疤祭,業(yè)余興趣盼产,最有成就感的事情。
IT技術(shù)交流QQ群:628365316