OC修飾符,追問weak,unsafe_unretained什麼意思?
為什麼NSString要加copy?
KVO的原理是什麼?
RN基礎架構是什麼?
HTTPS和HTTP區別,追問具體怎麼加密,如何信任證照
HTTP2.0和HTTP1.1區別
TCP接受視窗和傳送視窗,TCP 3次握手
如何解決controller臃腫問題
NSNumber是如何實現的
談談category和extension區別,系統如何底層實現category
談談訊息轉發機制實現
談談事件響應鏈,如何響應view之外的事件
介面效能優化
談談對自動釋放池的理解
對於strong weak,atomic等等理解
陣列和連結串列的區別,使用場景分別是什麼
整個面試大約1個半小時。整體上,回答的還算OK,自動釋放池這塊,不夠清楚底層實現。另外atomic是在屬性沒有寫的情況下系統預設的。Block的底層實現也表達的不夠準確。一面之後過了幾天給了二面通知。
四道一共有演算法題,要求寫出可編譯程式碼。
反轉一個連結串列
給定一個陣列,其中有一個數只出現一次,其他數都出現兩次,找到只出現一次的那個數。
實現堆排序
給定一個陣列array,其中array[i] != array[i+1],找到任何一個i,滿足array[i] > array[i-1] 且 array[i] > array[i+1]。假設array[-1] == array[n] == 負無窮。要求O(logN)時間複雜度。
這次面試官相對於一面,更加側重於過往專案。
- 簡短的自我介紹
- 介紹你做過的專案難點?
- 聊一聊過往專案中你覺得收穫最大的一個模組。
答: 就說了上個專案做類似朋友圈的優化思路,談到了空間換時間,快取,渲染相關的技術點。不得不驚歎騰訊的面試官的邏輯條理,很快抓住了問題的本質。
- 需求痛點:介面卡頓,體驗不好
- 解決方案:探索的思路 -> 解決方案。
該模組引申到的新話題還涉及到了增量更新,記憶體快取,本地快取。細節上還談到了富文字繪製,Coretext框架的使用,但由於也好久沒用了,最後只能憑藉印象大概說了下繪製的流程,其實面試官都是由淺入深的,如果這邊回答的不夠深入。那麼後面也就不會有更深入的探討了。由於之前我們的產品需求比較簡單,沒有特別完善。這裡我也只能說了大概。
接著面試官問到這個需求遇到過哪些坑,怎麼解決的。還是之前的思路,需求痛點有了
- 解決方案:探索的思路 -> 解決方案。
不得不說之前做的產品,都是需求驅動,解決了需求,很多時候就沒有極客精神,在深入的去探討。這塊真的是差!
專案聊完了之後,又追問了iOS的一些基礎問題,屬性和成員變數區別,strong,atomic關鍵字,怎麼理解runloop,runloop有幾種狀態等等。
- 最後給出了一個非常有意思的演算法題
- 有15個瓶子,其中最多有一瓶有毒,現在有四隻老鼠,喝了有毒的水之後,第二天就會死。如何在第二天就可以判斷出哪個瓶子有毒
答:開始我想到的是常規思路二分法,717,和麵試官說了,發現四隻老鼠根本不夠,面試官友好的提示從老鼠面去想,這時候很快想到了一個老鼠有死和不死,也就0和1兩個狀態,四隻老鼠有16個組合,正好是足夠的。但是怎麼分配瓶子,還沒想好,演算了一會兒,因為面試官這邊時間有限,就說思路是正確的。下面有興趣在看怎麼分哈。面試就到此結束了。
二面持續了大約一個小時多一點。 二面自己感覺了很多欠缺,不夠深入。
聊聊自己定位
聊聊待遇期望
聊聊經歷
聊聊規劃
聊聊薪水
口頭offer
騰訊的面試官都非常的友好,邏輯性非常強。綜合素質很高。面試過程中雖然針對的都是技術問題,但是考察的包含了邏輯思維和產品思維以及溝通能力等綜合素質。特別是二面。
面試題持續整理更新中,如果你正在面試或者想一起進階,不妨新增一下交流群1012951431一起交流。
面試題資料或者相關學習資料都在群檔案中 進群即可下載!
本作品採用《CC 協議》,轉載必須註明作者和本文連結