送給非科班iOS開發,乙份面試題(附答案)

2022-06-05 16:15:16 字數 1897 閱讀 7756

ios行業在經歷了過去幾年的爆發期後,現在到了乙個相對冷靜的時期,乙個良幣驅逐劣幣、去偽存真的階段。只有持續的專注和付出,才能夠在激烈的競爭中脫穎而出,成為強者。正如狄更斯所言,「這是乙個最壞的時代,也是最好的時代」 。

對於這些面試題,不要死記硬背,應該舉一反三,深刻理解實現機制(這也是科班和非科班的區別之一)。面試題答案只是參考,如有錯誤請指正。

如果讓你實現屬性的weak,如何實現的?
runtime對註冊的類會進行布局,對於weak修飾的物件會放入乙個hash表中。用weak指向的物件記憶體位址作為key,當此物件的引用計數為0的時候會dealloc,假如weak指向的物件記憶體位址是a,那麼就會以a為鍵在這個weak表中搜尋,找到所有以a為鍵的weak物件,從而設定為nil

如果讓你來實現屬性的atomic,如何實現?
- (void)setcurrentimage:(uiimage *)currentimage

}}- (uiimage *)currentimage

}

kvo為什麼要建立乙個子類來實現?
runtime動態生成乙個nskvonotifying_class子類,可以動態地新增willchangevalueforkeydidchangevalueforkey觀察所有屬性的變化

類結構體的組成,isa指標指向了什麼?(這裡應該將元類和根元類也說一下)
isa:是乙個class 型別的指標. 每個例項物件有個isa的指標,他指向物件的類,而class裡也有個isa的指標, 指向meteclass(元類)。元類儲存了類方法的列表。當類方法被呼叫時,先會從本身查詢類方法的實現,如果沒有,元類會向他父類查詢該方法。同時注意的是:元類(meteclass)也是類,它也是物件。元類也有isa指標,它的isa指標最終指向的是乙個根元類(root meteclass).根元類的isa指標指向本身,這樣形成了乙個封閉的內迴圈。

runloop有幾種事件源?有幾種模式?
runloop(訊息迴圈)的目的:

1\.    基本作用:保持程式的持續執行,保證程式不退出

3\. 節省cpu資源,提高程式效能:該做事時做事,該休息是休息

方法列表的資料結構是什麼?
struct objc_method_list

;

分類是如何實現的?它為什麼會覆蓋掉原來的方法?
因為分類方法加入類中這一操作是在執行期系統載入分類時完成的,執行期系統會把分類中所實現的每乙個方法都加入類的方法列表中

category的方法被放到了新方法列表的前面,而原來類的方法被放到了新方法列表的後面,所以category的方法會「覆蓋」掉原來類的同名方法。

希望我所分享的經驗能對您有所幫助,也希望您終能如願以償進入心儀的企業工作。

結交人脈

最後推薦個我的高階ios***:1001906160 ,有乙個共同的圈子很重要,結識人脈!裡面都是ios開發,全棧發展,歡迎入駐,共同進步!(群內會免費提供一些群主收藏的免費學習書籍資料以及整理好的幾百道面試題和答案文件!)

乙份C語言開發面試題

以下是題主參加的一家偏向linux平台開發的公司軟體崗位筆試題,分享原題,後面附上題主91分的部分參 v 一 8分 請問一下程式輸出什麼結果?char getstr void void test void 二 5分 test2函式有問題嗎,如果有,請支出問題出在什麼地方並給出正確答案。void te...

另乙份有點難的 iOS 面試題

這一年的時間已經經歷了實習 校招好幾次的面試了,對於每個準備找工作或者已經找到工作的人來說,準備面試題都是一次提公升自己的機會。但比較慶幸的是,本人幾次面試所遇到的問題都比較簡單,沒有太多能讓自己有所提公升的內容,而網上流傳的各種面試題如今看來也沒有什麼太大的新意。因此我決定自己出乙份面試題,真正有...

2023年面試 整理出乙份高階iOS面試題

1 nsarray與nsset的區別?nsarray記憶體中儲存位址連續,而nsset不連續 nsset效率高,內部使用hash查詢 nsarray查詢需要遍歷 nsset通過anyobject訪問元素,nsarray通過下標訪問 2 nshashtable與nsmaptable?nshashtab...