衆所周知, iOS開發找工做愈來愈難, 企業要求愈來愈高,一方面是資本寒冬期+七八月是企業招人淡季, 另一方面也是iOS市場飽和。最近有出去看新機會, 因此下面記錄一下面試XimalayaFM的大概過程。面試
面試一共分爲4輪,全程手寫代碼和算法。算法
一面:自我介紹, 而後問一下手頭開發App日活和崩潰率,接着開始問數組
1. 無痕埋點實現原理,手寫方法交換代碼;併發
2. 手寫代碼使用GCD完成: 先併發下載3張圖片, 等3張下載完了再併發下載剩餘3張, 這裏能夠使用dispatch_barrage柵欄來區分任務, 也能夠使用信號量;socket
3. timer是否精準, 怎麼使用精準的定時器…oop
4. runloop監聽主線程卡頓: 使用observer監聽主線程loop, 結合信號量post
二面: 手寫代碼: log(a), postNotification(log(b)),log(c), 問打印順序, 這裏主要考察分線程和主線程的通知回調是否同步,而後又問了UI卡頓優化的問題;優化
三面: 考察了隱式和顯式動畫、如何實現圓形進度條、離屏渲染卡頓底層原理(垂直同步信號) 、事件響應鏈詳細過程、socket創建鏈接詳細過程,最後是手寫單鏈表的反轉代碼;動畫
四面: 主要考察算法: 手寫冒泡排序,經常使用排序算法的時間複雜度, 以基準數偏移的有序數組的查找值爲n的元素,要求時間複雜度O(logn)(這裏能夠利用二分法查找), 最後就問了一些我的職業發展以及現有團隊規模問題, 再而後就是談薪資…spa
總結: runloop runtime 經常使用排序算法 鏈表反轉 查找等問題在面試二線大廠的時候基本是必考的點, 最近找工做的朋友須要多留意~