面試形式:電話面試 作為一個開發者,有一個學習的氛圍跟一個交流圈子特別重要,這是一個我的iOS交流群:761407670 進群密碼‘博客’,不管你是小白還是大牛歡迎入駐 ,分享BAT,阿裡面試題、面試經驗,討論技術, 大家一起交流學習成長! 1. 你平時怎麼解決網路請求的依賴關係:當一個介面的請求需 ...
面試形式:電話面試
作為一個開發者,有一個學習的氛圍跟一個交流圈子特別重要,這是一個我的iOS交流群:761407670 進群密碼‘博客’,不管你是小白還是大牛歡迎入駐 ,分享BAT,阿裡面試題、面試經驗,討論技術, 大家一起交流學習成長!
1. 你平時怎麼解決網路請求的依賴關係:當一個介面的請求需要依賴於另一個網路請求的結果
解析:
- 辦法1:線程:NSOperation 操作依賴和優先順序
[operationB addDependency:operationA]; // 操作B依賴於操作
- 辦法2:邏輯:在上一個網路請求的響應回調中進行下一網路請求的激活
關於RAC你有怎樣運用到解決不同API依賴關係
- 信號的依賴 使用場景是當信號A執行完才會執行信號B,和請求的依賴很類似,例如請求A請求完畢才執行請求B,我們需要註意信號A必須要執行發送完成信號,否則信號B無法執行
//這相當於網路請求中的依賴,必須先執行完信號A才會執行信號B //經常用作一個請求執行完畢後,才會執行另一個請求 //註意信號A必須要執行發送完成信號,否則信號B無法執行 RACSignal * concatSignal = [self.signalA concat:self.signalB] //這裡我們是對這個拼接信號進行訂閱 [concatSignal subscribeNext:^(id x) { NSLog(@"%@",x); }];
3. 編譯鏈接你有瞭解多少
解析:這個涉及到簡單知識,可參考 http://www.360doc.com/content/17/0111/22/32626470_621879084.shtml
4. 簡單介紹下KVO的用法
解析:首先,簡單介紹下KVO的用法,先添加觀察者,然後怎樣實現監聽的代理。關於原理,可以利用runtime的知識進行實現KVO的原理,筆者曾經實現KVO的block和delegate兩種形式,可參考 https://www.jianshu.com/p/c1aa85779d80
簡單概述下 KVO 的實現:
當你觀察一個對象時,一個新的類會動態被創建。這個類繼承自該對象的原本的類,並重寫了被觀察屬性的 setter 方法。自然,重寫的 setter 方法會負責在調用原 setter方法之前和之後,通知所有觀察對象值的更改。最後把這個對象的 isa 指針 ( isa 指針告訴 Runtime 系統這個對象的類是什麼 ) 指向這個新創建的子類,對象就神奇的變成了新創建的子類的實例。
原來,這個中間類,繼承自原本的那個類。不僅如此,Apple 還重寫了 -class 方法,企圖欺騙我們這個類沒有變,就是原本那個類。更具體的信息,去跑一下 Mike Ash 的那篇文章里的代碼就能明白,這裡就不再重覆。
4. 編程題:RLE演算法,編寫一個函數,實現統計字元次數的功能:例如輸入為aaabbccc,輸出為a3b2c3。不限語言。
解析:比較簡單,可以參考這個 http://blog.51cto.com/lanchaohuan/1563103
5. 編程題:請實現一個函數,用來判斷一顆二叉樹是不是對稱的。註意,如果一個二叉樹同此二叉樹的鏡像是同樣的,定義其為對稱的.
解析:思路,遞歸,從根節點開始,判斷左右子節點是否對稱,若對稱,遞歸,若不對稱,則返回NO。