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