iOS 一些面試問題(一)

2021-07-03 22:25:59 字數 1461 閱讀 1974

arc下,不顯示指定任何屬性關鍵字時,預設的關鍵字都有哪些?

這個可以從三個方面來對修飾屬性的關鍵字進行分析:

用@property宣告的 nsstring(或nsarray,nsdictionary) 經常使用copy關鍵字,為什麼?如果改用strong關鍵字,可能造成什麼問題?

因為如果賦給該屬性的值是乙個nsmutablestring型別的話,那麼該屬性的值就會隨著該可變字串的值的改變而改變,而這種改變在大多的情況下並不是我們所想要的,為了避免這種情況給我們帶來的困擾,我們需要將該屬性宣告為copy,這樣的話,當給該屬性賦值的時候,系統會將物件複製後再賦值給該屬性。

objc 中向乙個 nil 物件傳送訊息將會發生什麼?

在其它的語言當中,對乙個空指標進行相關的操作往往會造成崩潰的情況,但是對於 objective-c 來說,向乙個空指標傳送訊息是完全有效的,並不會造成程式的崩潰。

如果乙個訊息沒有返回值,向乙個 nil 物件傳送這樣的訊息,不會執行任何的操作,對於乙個擁有返回值的訊息來說,向乙個 nil 物件傳送這樣的訊息,訊息會返回空物件或者 0;

objc中向乙個物件傳送訊息[obj foo]objc_msgsend()函式之間有什麼關係?

在 objective-c 中向任何乙個物件傳送任何的訊息,最終都會間接地呼叫到了objc_msgsend()函式。

runtime如何實現weak變數的自動置nil?

在 runtime 階段,對於 weak 變數而言,系統使用 hash 表進行管理,將weak 變數所指向的位址作為 hash 表的 key,當某個物件的引用計數為零的時候,系統根據物件的記憶體位址找到所有指向該物件的 weak 變數,並將這些 weak 變數置為 nil。

能否向編譯後得到的類中增加例項變數?能否向執行時建立的類中新增例項變數?為什麼?

因為編譯後類的相關的資訊已經註冊在 runtime 之中了,類在執行的過程中維護類的資料結構所佔的記憶體的大小已經確定了,此時,不可能向類中再新增具體的例項變數了;

在執行時建立的類不一樣,在沒有呼叫相應的函式(objc_registerclasspair )之前,是可以新增相關的例項變數的,這其實也是無可厚非的,如果這時候都不能新增類的成員變數的話,那麼在執行時去建立類的意義就不是很大了。

猜想runloop內部是如何實現的?

如果你曾經接觸過windows程式設計的話,對於事件迴圈肯定不會陌生,其實 runloop 的實質也是一種事件迴圈的機制,有**簡單來說,就是這樣:

function

loop

() while (message != quit);

}

一些面試問題總結

1.ln命令用於建立硬鏈結 ln s可以建立軟連線。2.inode包含檔案的元資訊。在linux系統當中,不是用檔名來標誌乙個檔案,而是用inode。因此,硬鏈結就是多個檔名指向同乙個inode,當刪除其中乙個鏈結時,該inode對應的檔名減少1 軟連線是乙個檔案的內容儲存的是另乙個檔案的路徑,雖然...

Linux的一些基礎面試問題

1 安裝系統時如何給 linux作業系統分割槽?答 方案1 針對 集群架構中的某個節點伺服器分割槽,該伺服器上的資料有多份 其他節點也有 且資料不太重要,建議的分割槽方案如下。boot 設定為100 200mb。swap 物理記憶體的1.5倍,當記憶體大於或等於8gb時,配置為8 16gb即可。剩餘...

一些經典的 Shell 指令碼面試問題

如下是一些面試過程中,經常會遇到的 shell 指令碼面試問題及解答。了解指令碼或至少知道基礎知識對測試工程師來說至關重要,它也有助於你在工作環境中自動完成很多任務。你會發現,現在多數的測試工程師招聘要求中,都需要 linux基礎技能,及基本的shell指令碼技能。如下是一些常見的shell指令碼面...