iOS 程式員面試要注意的問題

來源:互聯網
上載者:User

iOS 程式員面試要注意的問題

1、自動釋放池是什麼,如何工作?

當您向一個對象發送一個autorelease訊息時,Cocoa就會將該對象的一個引用放入到最新的自動釋放池。它仍然是個正當的對象,因此自動釋放 池定義的範圍內的其它對象可以向它發送訊息。當程式執行到範圍結束的位置時,自動釋放池就會被釋放,池中的所有對象也就被釋放。 

 2、說一說static 關鍵字

1)函數體內 static 變數的作用範圍為該函數體,不同於 auto 變數,該變數的記憶體只被分配一次, 

因此其值在下次調用時仍維持上次的值; 

2)在模組內的 static 全域變數可以被模組內所用函數訪問,但不能被模組外其它函數訪問; 

3)在模組內的 static 函數只可被這一模組內的其它函數調用,這個函數的使用範圍被限制在聲明 

它的模組內; 

4)在類中的 static 成員變數屬於整個類所擁有,對類的所有對象只有一份拷貝; 

5)在類中的 static 成員函數屬於整個類所擁有,這個函數不接收 this 指標,因而只能訪問類的static 成員變數。  

 3、什麼事單件執行個體

Foundation 和 Application Kit 架構中的一些類只允許建立單件對象,即這些類在當前進程中的唯一執行個體。舉例來說,NSFileManager 和NSWorkspace 類在使用時都是基於進程進行單件對象的執行個體化。當向這些類請求執行個體的時候,它們會向您傳遞單一執行個體的一個引用,如果該執行個體還不存在,則首先進行執行個體的分配 和初始化。單件對象充當控制中心的角色,負責指引或協調類的各種服務。如果類在概念上只有一個執行個體比如 

NSWorkspace),就應該產生一個單件執行個體,而不是多個執行個體;如果將來某一天可能有多個執行個體,您可 

以使用單件執行個體機制,而不是Factory 方法或函數。

 4、說說Objective-C,有哪些優點哪些不足

objc優點: 

1) Cateogies 

2) Posing 

3) 動態識別 

4) 指標計算 

5)彈性訊息傳遞 

6) 不是一個過度複雜的 C 衍生語言 

7) Objective-C 與 C++ 可混合編程 

不足: 

1) 不支援命名空間 

2)  不支援運算子多載 

3)不支援多重繼承 

4)使用動態運行時類型,所有的方法都是函數調用,所以很多編譯時間最佳化方法都用不到。如內嵌函式等),效能低劣。 

5、#import和#include的區別,@class代表什嗎?

@class一般用於標頭檔中需要聲明該類的某個執行個體變數的時候用到,在m檔案中還是需要使用#import

而#import比起#include的好處就是不會引起重複包含

 6、線程和進程的區別?

進程和線程都是由作業系統所體會的程式啟動並執行基本單元,系統利用該基本單元實現系統對應用的並發性。

進程和線程的主要差別在於它們是不同的作業系統資源管理方式。進程有獨立的地址空間,一個進程崩潰後,在保護模式下不會對其它進程產生影響,而線程只是一個 進程中的不同執行路徑。線程有自己的堆棧和局部變數,但線程之間沒有單獨的地址空間,一個線程死掉就等於整個進程死掉,所以多進程的程式要比多線程的程式 健壯,但在進程切換時,耗費資源較大,效率要差一些。但對於一些要求同時進行並且又要共用某些變數的並行作業,只能用線程,不能用進程。

7、Object-C的記憶體管理?

1.當你使用new,alloc和copy方法建立一個對象時,該對象的保留計數器值為1.當你不再使用該對象時,你要負責向該對象發送一條release或autorelease訊息.這樣,該對象將在使用壽命結束時被銷毀.

2.當你通過任何其他方法獲得一個對象時,則假設該對象的保留計數器值為1,而且已經被設定為自動釋放,你不需要執行任何操作來確保該對象被清理.如果你打算在一段時間內擁有該對象,則需要保留它並確保在操作完成時釋放它.

3.如果你保留了某個對象,你需要(最終)釋放或自動釋放該對象.必須保持retain方法和release方法的使用次數相等.

8、屬性readwrite,readonly,assign,retain,copy,nonatomic 各是什麼作用,在那種情況下用?

readwrite 是可讀可寫特性;需要產生getter方法和setter方法時

readonly 是唯讀特性  只會產生getter方法 不會產生setter方法 ;不希望屬性在類外改變

assign 是賦值特性,setter方法將傳入參數賦值給執行個體變數;僅設定變數時;

retain 表示持有特性,setter方法將傳入參數先保留,再賦值,傳入參數的retaincount會+1;

copy 表示賦值特性,setter方法將傳入對象複製一份;需要完全一份新的變數時。

nonatomic 非原子操作,決定編譯器產生的setter getter是否是原子操作,atomic表示多安全執行緒,一般使用nonatomic

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.