今日頭條iOS高級工程師第1輪面試回憶

原文鏈接: xiaozhuanlan.com

面試形式:電話面試

1. 你平時怎么解決網(wǎng)絡(luò)請求的依賴關(guān)系:當一個接口的請求需要依賴于另一個網(wǎng)絡(luò)請求的結(jié)果

解析:

  • 辦法1:線程:NSOperation 操作依賴和優(yōu)先級
[operationB addDependency:operationA]; // 操作B依賴于操作
  • 辦法2:邏輯:在上一個網(wǎng)絡(luò)請求的響應(yīng)回調(diào)中進行下一網(wǎng)絡(luò)請求的激活

2. 關(guān)于RAC你有怎樣運用到解決不同API依賴關(guān)系

  • 信號的依賴

使用場景是當信號A執(zhí)行完才會執(zhí)行信號B,和請求的依賴很類似,例如請求A請求完畢才執(zhí)行請求B,我們需要注意信號A必須要執(zhí)行發(fā)送完成信號,否則信號B無法執(zhí)行

//這相當于網(wǎng)絡(luò)請求中的依賴,必須先執(zhí)行完信號A才會執(zhí)行信號B
  //經(jīng)常用作一個請求執(zhí)行完畢后,才會執(zhí)行另一個請求
  //注意信號A必須要執(zhí)行發(fā)送完成信號,否則信號B無法執(zhí)行
  RACSignal * concatSignal = [self.signalA concat:self.signalB];

  //這里我們是對這個拼接信號進行訂閱
  [concatSignal subscribeNext:^(id x) {

      NSLog(@"%@",x);

  }];

3. 編譯鏈接你有了解多少

解析:這個涉及到簡單知識,可參考www.360doc.com/content/17/…

4. 簡單介紹下KVO的用法

解析:首先,簡單介紹下KVO的用法,先添加觀察者,然后怎樣實現(xiàn)監(jiān)聽的代理。關(guān)于原理,可以利用runtime的知識進行實現(xiàn)KVO的原理,筆者曾經(jīng)實現(xiàn)KVO的block和delegate兩種形式,可參考www.itdecent.cn/p/c1aa85779…

簡單概述下 KVO 的實現(xiàn)原理:

當你觀察一個對象時,一個新的類會動態(tài)被創(chuàng)建。這個類繼承自該對象的原本的類,并重寫了被觀察屬性的 setter 方法。自然,重寫的 setter 方法會負責在調(diào)用原 setter方法之前和之后,通知所有觀察對象值的更改。最后把這個對象的 isa 指針 ( isa 指針告訴 Runtime 系統(tǒng)這個對象的類是什么 ) 指向這個新創(chuàng)建的子類,對象就神奇的變成了新創(chuàng)建的子類的實例。

原來,這個中間類,繼承自原本的那個類。不僅如此,Apple 還重寫了 -class 方法,企圖欺騙我們這個類沒有變,就是原本那個類。更具體的信息,去跑一下 Mike Ash 的那篇文章里的代碼就能明白,這里就不再重復(fù)。

點擊加入:iOS技術(shù)分享群

整理的2020年《大廠最新常問iOS面試題+答案》,有需要的伙伴,直接加iOS技術(shù)交流群:761407670,免費獲?。蝗簝?nèi)更有內(nèi)推機會!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容