钻石女王面膜价格表:ios面試題及答案2018

面試技巧 時間:2018-01-23 我要投稿
【钻石女王珠宝周苗 www.rmdxg.club - 面試技巧】

钻石女王珠宝周苗 www.rmdxg.club   對于iOS技術員來說,面試前的準備很有必要,那么你了解2017年的iOS面試題了嗎?以下是陽光網小編幫你們整理的2018ios面試題及答案,一起來學習啦。

  2018ios面試題及答案(一)

  1. Object-c的類可以多重繼承么?可以實現多個接口么?Category是什么?重寫一個類的方式用繼承好還是分類好?為什么?

  答: Object-c的類不可以多重繼承;可以實現多個接口,通過實現多個接口可以完成C++的多重繼承;Category是類別,一般情況用分類好,用Category去重寫類的方法,僅對本Category有效,不會影響到其他類與原有類的關系。沒有,cocoa 中所有的類都是NSObject 的子類,多繼承在這里是用protocol 委托代理來實現的
 ,ood的多態特性在obj-c中通過委托來實現。

  2. #import 跟#include 又什么區別,@class呢, #import<> 跟 #import””又什么區別?

  答:#import是Objective-C導入頭文件的關鍵字,#include是C/C++導入頭文件的關鍵字,使用#import頭文件會自動只導入一次,不會重復導入,相當于#include和#pragma once;@class告訴編譯器某個類的聲明,當執行時,才去查看類的實現文件,可以解決頭文件的相互包含;#import<>用來包含系統的頭文件,#import””用來包含用戶頭文件。

  3. 屬性readwrite,readonly,assign,retain,copy,nonatomic 各是什么作用,在那種情況下用?

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

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

  03. assign 是賦值特性,setter方法將傳入參數賦值給實例變量;僅設置變量時;

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

  05. copy 表示賦值特性,setter方法將傳入對象復制一份;需要完全一份新的變量時。

  06. nonatomic 非原子操作,決定編譯器生成的setter getter是否是原子操作,atomic表示多線程安全,一般使用nonatomic

  4.對于語句NSString*obj = [[NSData alloc] init]; obj在編譯時和運行時分別時什么類型的對象?

  編譯時是NSString的類型;運行時是NSData類型的對象

  5.常見的object-c的數據類型有那些, 和C的基本數據類型有什么區別?如:NSInteger和int

  object-c的數據類型有NSString,NSNumber,NSArray,NSMutableArray,NSData等等,這些都是class,創建后便是對象,而C語言的基本數據類型int,只是一定字節的內存空間,用于存放數值;NSInteger是基本數據類型,并不是NSNumber的子類,當然也不是NSObject的子類。NSInteger是基本數據類型Int或者Long的別名(NSInteger的定義typedef long NSInteger),它的區別在于,NSInteger會根據系統是32位還是64位來決定是本身是int還是Long。

  6.id 聲明的對象有什么特性?

  Id 聲明的對象具有運行時的特性,即可以指向任意類型的objcetive-c的對象;

  2018ios面試題及答案(二)

  1. 原子(atomic)跟非原子(non-atomic)屬性有什么區別?

  01. atomic提供多線程安全。是防止在寫未完成的時候被另外一個線程讀取,造成數據錯誤

  02. non-atomic:在自己管理內存的環境中,解析的訪問器保留并自動釋放返回的值,如果指定了 nonatomic ,那么訪問器只是簡單地返回這個值。

  2. 看下面的程序,第一個NSLog會輸出什么?這時str的retainCount是多少?第二個和第三個呢? 為什么?

  NSMutableArray* ary = [[NSMutableArray array] retain];

  NSString *str = [NSString stringWithFormat:@"test"];

  [strretain];

  [aryaddObject:str];

  NSLog(@”%@%d”,str,[str retainCount]);

  [strretain];

  [strrelease];

  [strrelease];

  NSLog(@”%@%d”,str,[str retainCount]);

  [aryremoveAllObjects];

  NSLog(@”%@%d”,str,[str retainCount]);

  str的retainCount創建+1,retain+1,加入數組自動+1 3

  retain+1,release-1,release-1 2

  數組刪除所有對象,所有數組內的對象自動-1 1

  3. 類別的作用?繼承和類別在實現中有何區別?

  答案:category 可以在不獲悉,不改變原來代碼的情況下往里面添加新的方法,只能添加,不能刪除修改。

  并且如果類別和原來類中的方法產生名稱沖突,則類別將覆蓋原來的方法,因為類別具有更高的優先級。

  類別主要有3個作用:

  (1)將類的實現分散到多個不同文件或多個不同框架中。

  (2)創建對私有方法的前向引用。

  (3)向對象添加非正式協議。

  繼承可以增加,修改或者刪除方法,并且可以增加屬性。

  4 類別和類擴展的區別。

  答案:category和extensions的不同在于 后者可以添加屬性。另外后者添加的方法是必須要實現的。

  extensions可以認為是一個私有的Category。

  2018ios面試題及答案(三)

  1. 內存管理的幾條原則時什么?按照默認法則.那些關鍵字生成的對象 需要手動釋放?在和property結合的時候怎樣有效的避免內存泄露?

  誰申請,誰釋放

  遵循Cocoa Touch的使用原則;

  內存管理主要要避免“過早釋放”和“內存泄漏”,對于“過早釋放”需要注意@property設置特性時,一定要用對特性關鍵字,對于“內存泄漏”,一定要申請了要負責釋放,要細心。

  關鍵字alloc 或new 生成的對象需要手動釋放;

  設置正確的property屬性,對于retain需要在合適的地方釋放,

  2.如何對iOS設備進行性能測試?

  Profile-> Instruments ->Time Profiler

  3. Object C中創建線程的方法是什么?如果在主線程中執行代碼,方法是什么?如果想延時執行代碼、方法又是什么?

  線程創建有三種方法:使用NSThread創建、使用GCD的dispatch、使用子類化的NSOperation,然后將其加入NSOperationQueue;在主線程執行代碼,方法是performSelectorOnMainThread,如果想延時執行代碼可以用performSelector:onThread:withObject:waitUntilDone:

  GCD從語言、運行時庫、系統擴展等三個方面給讓使用者更充分的操作多核設備,同時它基于隊列的概念,因為每一個CPU core單位時間(時間片)內只能運行某個隊列的某個task,并通過優先級、FIFO等策略進行task的切換運行。

  GCD共提供三種隊列形式:

  01. main,即主線程,iOS的UI繪制、交互響應都要在此線程上執行

  02. concurrent,并發線程隊列,task的進出隊列,都遵循FIFO策略,但隊列中的task‘看起來’是并發執行的完成時間卻可能是以任意的順序結束。很容易理解,因為每個task的執行時間長短通常不一樣。

  03. serial,串行隊列,在此隊列中的task,one by one的執行,嚴格遵守FIFO即,我們要執行一個block(task)

  4.描述一下iOS SDK中如何實現MVC的開發模式

  MVC是模型、試圖、控制開發模式,對于iOS SDK,所有的View都是視圖層的,它應該獨立于模型層,由視圖控制層來控制。所有的用戶數據都是模型層,它應該獨立于視圖。所有的ViewController都是控制層,由它負責控制視圖,訪問模型數據。

  5 淺復制和深復制的區別?

  答案:淺層復制:只復制指向對象的指針,而不復制引用對象本身。

  深層復制:復制引用對象本身。

  意思就是說我有個A對象,復制一份后得到A_copy對象后,對于淺復制來說,A和A_copy指向的是同一個內存資源,復制的只不過是是一個指針,對象本身資源 還是只有一份,那如果我們對A_copy執行了修改操作,那么發現A引用的對象同樣被修改,這其實違背了我們復制拷貝的一個思想。深復制就好理解了,內存中存在了 兩份獨立對象本身。

  用網上一哥們通俗的話將就是:

  淺復制好比你和你的影子,你完蛋,你的影子也完蛋

  深復制好比你和你的克隆人,你完蛋,你的克隆人還活著。

  
看了“2018ios面試題及答案”的人還看了:

1.ios高級面試題及答案

2.2017年公務員經典面試題及參考答案

3.2017php面試題及答案

4.java面試題2017及答案

5.2017java面試題和答案

熱門文章