ios面試題及答案
iOS面試試題及參考答案
2、 線程和進程的區別和聯系?
進程和線程都是由操作系統所體會的程序運行的基本單元,系統會利用該基本單元實現系統對應用的并發性。線程和進程的主要差別在于它們是不同的操作系統資源管理方式,進程有獨立的地址空間,一個進程崩潰后,在保護模式下不會對其它進程產生影響,而線程只是一個進程中的不同執行路徑。線程有自己的堆棧和局部變量,但線程之間沒有單獨的地址空間,一個線程死掉就等于整個進程死掉,所有多進程的程序要比多線程的程序健壯,但在進程切換時,耗費資源較大,效率要差一些。但對于一些要求同時進行并且又要共享某些變量的并發操作,只能用線程,不能用進程。
3、 屬性readwrite,readonly,assign,retain,copy,nonatomic各是什么作用,在哪種情況下用?
1) Readwrite是可讀可寫特性,需要生成getter方法和setter方法時
2) Readonly是只讀寫特性,只會生成getter方法,不會生成setter方法,不希望屬性在類外改變
3) Assign是賦值特性,setter方法將傳入參數賦值給實例變量,僅設置變量時
4) Retain表示持有特性,setter方法將傳入參數先保留,再賦值,傳入參數的retaincount會+1
5) Copy表示賦值特性,setter方法將傳入對象賦值一份,需要完全一份新的變量時
6) Nonatomic非原子操作,決定編譯器生成的setter,getter是否是原子操作,atomic表示多線程安全,一般使用nonatomic
4、 object-c中創建線程的方法是什么,如果在主線程中執行代碼,方法是什么,如果想延時執行代碼,方法又是什么?
線程創建有三種方法:使用nsthread創建、使用gcd的dispatch創建、使用子類化的nsoperation創建,然后將其加入nsoperationqueue;在主線程執行代碼,方法是performSelectorOnMainThread,如果想延時執行代碼可以用performSelector:onThread:withObject:waitUntilDone
5、 類別的作用,繼承和類別在實現中有何區別?
Category可以在不獲悉,不改變原來代碼的情況下往里面添加新的方法,只能添加,不能刪除修改;并且如果類別和原來類中的方法產生沖突,類別將覆蓋原來的方法,因此類別具有更高的優先級;將類的實現分散到多個不同文件或多個不同框架中,創建對私有方法的前向引用,向對象添加非正式協議。繼承可以增加,修改或者刪除方法,并且可以增加屬性
6、 什么是KVC、KVO?
Kvc:鍵值編碼是一種間接訪問對象的屬性使用字符串來標識屬性,而不是通過調用存取方法,直接或通過實例變量訪問的機制
Kvo:鍵值觀察機制,他提供了觀察某一屬性變化的方法,極大的簡化了代碼
7、 在iphone應用中如何保存數據?
1) 通過web服務,保存在服務器上
2) 通過nscoder固化機制,將對象保存在文件中
3) 通過sqlite或者coredata保存在文件數據庫中
8、 在項目中什么時候選擇使用gcd,什么時候選擇nsoperation?
項目中使用nsoperation的優點是對線程的高度抽象,在項目中使用它,會使項目的程序結構更好,子類化nsoperation的設計思路,是具有面向對象的優點,使得實現是多線程支持,而接口簡單,建議在復雜的項目中使用;而gcd的優點是它本身簡單,易用,對于不復雜的多線程操作,會節省代碼量,而block參數的使用,會使代碼更為易懂,建議在簡單項目中使用
9、 iOS性能優化(初級)
1) 用ARC管理內存
2) 在正確的地方使用reuseidentifier
3) 盡可能使view透明
4) 避免龐大的xib
5) 不要block主線程
6) 在imageviews中調整圖片大小
7) 選擇正確的collection
8) 打開zip壓縮
10、 簡單描述下客戶端的緩存機制?
1) 緩存可以分為:內存數據緩存、數據庫緩存、文件緩存
2) 每次想要獲取數據的時侯
1> 先檢查內存中有無緩存
2> 在檢查本地有無緩存
3> 最終發送網絡請求
4> 講服務器返回的網絡數據進行緩存(內存、數據庫、文件),以便下次讀取
11、 iOS控制器view的生命周期
1> init函數——初始化
2> awakefromnib——在loadview之前的工作放在這里
3> viewdidload——一個viewcontroller一個生命周期內這個函數只會調用一次
4> viewwillappear——view將要出現,每次view消失再出現都會調用
5> viewwilllayoutsubviews——簡要對子視圖進行布局 6> Viewdidlayoutsubviews——完成對子視圖進行布局 7> viewdidappear——視圖將要出現在屏幕上
8> viewwilldisappear——view將要消失
9> viewdiddisappear——view已經消失
看了“ios面試題及答案”的還看了:
1.軟件測試常見面試題及答案
2.管理人員面試題及答案
3.關于事業單位常見的面試題及答案
4.面試問題及答案
5.ios面試技巧