1. 程式人生 > >戴維營教育ios筆試題一

戴維營教育ios筆試題一

戴維營教育原創文章,轉載請註明出處。我們的夢想是做最好的iOS開發培訓!

筆試是招攬人才的第一道關卡(簡歷篩選除外),它能夠較全面的考察一個人對基礎知識的掌握程度以及解決問題的能力。更多iOS筆試面試題請上潛心俱樂部。

  1. 陣列NSArray用的是什麼排序演算法?

答:快速排序

  1. 用Storyboard連線的屬性(IBOutlet)為什麼可以是weak型別的。(Where?)

答:在其它地方有強引用,因此沒有必要再去手動管理記憶體了。

  1. static的作用域和生命週期是什麼?

答:1. 該static型別變數所在的作用域(定義它的作用域,靜態區域性變數)。2. 全域性靜態變數作用域為從定義的位置開始到所在檔案結尾。3. 生命週期為整個程式的執行期(當前程序啟動到程序結束)。

  1. Objective-C中是否有靜態成員變數。

答:否,沒有。

  1. 為什麼有的網頁解析後中文是亂碼,用的UTF-8?

  2. main函式的兩個引數是做什麼用的?

答:1. argc表示輸入的命令列引數個數(最前面的引數為程式名)。2. 存放輸入引數的字串陣列。

  1. 什麼是類簇?

  2. id、NSObject *以及instancetype有什麼區別?

答:instancetype只能用於返回值,編譯器能夠推導具體的型別。id和NSObject *在Cocoa或者Cocoa Touch環境下沒有任何區別,但是id能表示的範圍更廣,因為Objective-C的類並不一定需要有父類(OBJC_ROOT_CLASS)。

  1. 三個網路請求的框架(NSURLConnection、NSURLSession和AFNetworking)的使用。

  2. 類的屬性,如果使用copy,注意可變型別複製後會產生不可變的物件。

  3. KVO/KVC中的key一定要是屬性嗎?

答:不一定,key是一個名字,它的查詢順序為方法 > 例項變數,比如name名字的查詢順序為name方法/setName: > _name > name。

  1. frame和bounds的區別是什麼?

答:frame和bounds都是CGRect型別的屬性。其中frame是相對於父檢視的座標系表示的,而bounds相對於本身的座標系。大部分情況下bounds的原點(origin)為(0,0)。

  1. iOS應用沙盒的結構是什麼樣的,哪些目錄可以寫?

答:Documents、tmp、Library/Caches可寫,xxx.app(main bundle)只讀。NSHomeDirectory()、NSSearchPathForDirectoriesInDomains、[[NSBundle mainBundle] bundlePath]等。

  1. 如何訪問物件的私有成員變數?

答:可以通過KVC訪問。

  1. unsigned int和NSUInteger有什麼區別?

  2. 歸檔和writeToFile:automically:的區別是什麼?

答:

  1. 物件初始化時,為什麼要呼叫父類的初始化方法?

答:1. 因為父類中可能包含有一些私有的資源,需要進行初始化。2. 程式碼重用。

  1. 在子類的方法中列印[self class]和[super class]結果是什麼?