天天看點

ios面試攻略(1.1)

來自: 一切都是為了改變自己

1.Object-c的類可以多重繼承麼?可以實作多個接口麼?? 沒有,protocol  代替,Object-c的類不可以多重繼承。

2.#import 跟#include 又什麼差別,@class呢; #import<> 跟 #import”"又什麼差別??  #import 能防止重複引用,#include 不能,@class 前置聲明一個類。

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

4、為什麼很多内置的類,如TableViewController的delegate的屬性是assign不是retain? 防止循環引用。 5、定義屬性時,什麼情況使用copy、assign、retain?? copy:拷貝對象。assign:傳值,一般用于基礎類型。retain:傳位址,引用計數器加一。

6,委托是什麼?委托的property聲明用什麼屬性?為什麼?

代理的目的是改變或傳遞控制鍊,允許一個類在某些特定時刻通知到其他類而不需要擷取那些類的指針。

7,類别的作用?

1),将類的實作分散到多個類中2),建立對私有方法的引用3),可以添加或修改方法,屬性

8,.id 聲明的對象有什麼特性?? 可以是任意類型的對象,是個很重要的類型,是個可以指向任何類型的指針或者可以了解為指向任何未知類型的指針。

9,.MVC是什麼?有什麼特性?為什麼在iPhone上被廣泛運用?

MVC設計模式是三種對象:模型對象,視圖對象和控制器對象。模型對象代表應用程式的資料和定義操作資料的邏輯。視圖對象顯示應用程式的模型資料。控制器對象是協調視圖和模型對象。 10,對于語句NSString* testObject = [[NSData alloc] init];testObject 在編譯時和運作時分别是什麼類型的對象? 11.什麼是安全釋放? 12,為什麼有些4.0獨有的objective-c 函數在3.1上運作時會報錯.而4.0獨有的類在3.1上配置設定記憶體時不會報錯?配置設定的結果是什麼?

13,為什麼4.0獨有的c函數在3.1的機器上運作不會報錯(在沒有調用的情況下?)而4.0獨有的類名在3.1的機器上一運作就報錯?

?14,常見的object-c的資料類型有那些, 和 c 的 基本資料類型有什麼差別?如:nsinteger 和int

15,.property中屬性retain,copy,assgin的含義分别是什麼?有什麼差別?将其轉換成get/set方法怎麼做?有什麼注意事項?

16、什麼是Notification? 

Notification是一種消息,它傳遞給一個或多個觀察對象用來通知它們程式裡發生了一個事件。

17、什麼時候用delegate,什麼時候用Notification?

當處理單個需要在另外類觸發目前類行為的事件時用代理,多個事件用 Notification.

18、線程了解,有什麼好處?

線程建立和啟動,NSThread  detachNew建立和NSThread 建立兩中方式

線程共享同一應用程式的部分記憶體空間它們擁有對資料相同的通路權限

19.線程和程序的差別和聯系?

線程和程序都是程式運作的基本單元,差別在于程序在運作中擁有獨立的記憶體單元,而多個線程共享記憶體,提高程式效率,線程不能獨立執行。

20,線程是什麼? 有哪些注意事項.?

21,.notification是同步還是異步? kvo是同步還是異步?notification是全程序空間的通知嗎?

22.淺拷貝和深拷貝差別是什麼?…

淺複制:隻複制指向對象的指針,而不複制引用對象本身。深複制:複制引用對象本身。

23,.NSString 和 NSMutableString 有什麼差別?

24.for(int index = 0; index < 20; index ++){?    NSString *tempStr = @”tempStr”;?    NSLog(tempStr);?    NSNumber *tempNumber = [NSNumber numberWithInt:2];?    NSLog(tempNumber);?}?這段代碼有什麼問題.?會不會造成記憶體洩露(多線程)?在記憶體緊張的裝置上做大循環時自動釋放池是寫在循環内好還是循環外好?為什麼?

25,.記憶體管理的幾條原則時什麼?按照預設法則.那些關鍵字生成的對象需要手動釋放?在和property結合的時候怎樣有效的避免記憶體洩露?

26,.在一個對象釋放前.如果他被加到了notificationCenter 中.不在notificationcenter中remove這個對象可能會出現什麼問題?

27,.怎樣實作一個 singleton的類.給出思路。

單例是在程式生命周期裡隻被執行個體化過一次的 類 28.什麼是序列化或者Acrchiving,可以用來做什麼,怎樣與copy結合,原理是什麼?.

29.在iphone上有兩件事情要做,請問是在一個線程裡按順序做效率高還是兩個線程裡做效率高?為什麼?

30,.runloop是什麼?在主線程中的某個函數裡調用了異步函數,怎麼樣block目前線程,且還能響應目前線程的timer事件,touch事件等.

31,ios平台怎麼做資料的持久化?coredata和sqlite有無必然聯系?coredata是一個關系型資料庫嗎?

32.闡述一個nil對象從interface bulider産生,到載入程式運作空間,最後被釋放時所經曆的生命周期.

33,響應者鍊是什麼?

34,.timer的間隔周期準嗎?為什麼?怎樣實作一個精準的timer?

35.UIscrollVew用到了什麼設計模式?還能再foundation庫中找到類似的嗎?

36.C和obj-c 如何混用?

37,ViewController 的 loadView, viewDidLoad, viewDidUnload 分别是在什麼時候調用的?

view為空時調用loadView,加載完成時調用viewDidLoad,釋放時調用viewDidUnload. 38.ViewController 的 didReceiveMemoryWarning 是在什麼時候被調用的? 39.談談你對ARC 的認識和了解?

代碼中自動加入了retain/release,原先需要手動添加的用來處理記憶體管理的引用計數的代碼可以自動地由編譯器完成了,代碼高速化,由于使用編譯器管理引用計數,減少了低效代碼的可能性

40, Object-C有私有方法嗎?私有變量呢??沒,有。

41、Object-C的記憶體管理??引用計數器。?? 42、對象是什麼時候被release的??引用計數器為0. 43、iOS有沒有垃圾回收??沒。 44、tableView的重用機制??複用标記。 45、ViewController 的loadView、viewDidLoad、viewDidUnload分别是什麼時候調用的,在自定義ViewController時在這幾個函數中應該做什麼工作??當view為nil時調用loadView,view完成加載調用viewDidLoad,view釋放時調用viewDidUnload.? 46、ViewController的didReceiveMemoryWarning是在什麼時候調用的?預設的操作是什麼??記憶體超過阙值,嘗試釋放view. 47、列舉Cocoa中常見的幾種多線程的實作,并談談多線程安全的幾種解決辦法,一般什麼地方會用到多線程??NSThread,GCD等。盡量用上層分裝好的方法去實作多線程而不是手動調用NSThread。 48、self.跟self什麼差別?

self.表示對象的屬性,self表示對象本身 49、id、nil代表什麼??id相當于void*,nil是空對象。 50、ObjC中,與alloc語義相反的方法是dealloc還是release?與retain語義相反的方法是dealloc還是release,為什麼?需要與alloc配對使用的方法是dealloc還是release,為什麼?? 51、autorelease的對象是在什麼時候被release的?

自動釋放池中所有對象釋放完後釋放。 52、這段代碼有什麼問題,如何修改?for (int i = 0; i < someLargeNumber; i++) { ?NSString *string = @”Abc”;?string = [string lowercaseString];?string = [string stringByAppendingString:@"xyz"];?NSLog(@“%@”, string);?} ?53、autorelease和垃圾回收機制(gc)有什麼關系? 

記憶體釋放池提供了一個對象容器,每次對象發送autorelease消息時,對象的引用計數并不真正變化,而是向記憶體釋放池中添加一條記錄,記下對象的這 種要求。直到當記憶體釋放池發送drain或release消息時,即當池被銷毀前會通知池中的所有對象,全部發送release消息才會真正将引用計數減 少?。? 54、考察對@interface與@propety的了解

隻用 @ interface聲明的變量隻能在目前的類中通路,在其他類無法通路,而@ propety聲明的變量可以在外部通路。@ propety聲明的變量可以打點調用 55、objective-c中的類型轉換分為哪幾類

字元串拼接,強制類型轉換 56、多态的了解 Object-C是面向對象的程式設計語言,它具有面向對象程式設計的一些特性,封裝性,繼承性和多态性。不同對象以自己的方式響應相同的消息的能力叫多态。多态的主要好處就是簡化了程式設計接口,

騰訊面試題 1。簡述push原理,push的證書和其它的右什麼不一樣?

2。viewcontroller的一些方法的說明viewDidLoad, viewWillDisappear, viewWillAppear方法的 順序和 作用?

3。frame 和 bounds 的 差別 ,bound的大小改變frame 改變嗎?

4。sqlite中插入特殊字元的方法和接收到處理方法。

5。談談你對數組和連結清單認識,還有你是怎麼用他們的?

6。冒泡算法。

7。socket程式設計簡述

8。asihttp代碼原理 ,異步請求的原理,異步請求最大數目,為什麼隻能這麼多?

9。http請求方式?

10。uiview的圓角屬性設定方法。

(m_mainImgView.layer.cornerRadius = 6;

m_mainImgView.layer.masksToBounds = YES;)

11。 masksToBounds屬性的作用。(決定子layer是否被目前layer的邊界剪切。預設是NO。)