閱讀564 返回首頁    go windows


iOS題目

經過本人最近的麵試和對麵試資料的一些匯總,準備記錄這些麵試題,以便ios開發工程師找工作複習之用,本人希望有麵試經驗的同學能和我同時完成這個模塊,先出麵試題,然後會放出答案。

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

可以。可以。分類(@interface classname (yourdefine))。用繼承好,因為可以調用父類函數。

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

#import是oc引入頭文件。include是c++/c引入頭文件。@class是強製聲明引用類。#import<>是引用框架或者庫的頭文件。#import""引用的是自己定義的頭文件。

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

4.id 聲明的對象有什麼特性?

累死於c++的void* 是指向萬能的類。

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

Model view controller 。劃分層次清晰。

6.對於語句NSString* testObject = [[NSData alloc] init];testObject 在編譯時和運行時分別時什麼類型的對象?

編譯的時候是NSString 運行時候是NSdata 會有警告。

7.什麼是安全釋放?

if(object){[object release]; object = nil;}

8.為什麼有些4.0獨有的objective-c 函數在3.1上運行時會報錯.而4.0獨有的類在3.1上分配內存時不會報錯?分配的結果是什麼?


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

10.常見的object-c的數據類型有那些, 和 c 的 基本數據類型有什麼區別?如:nsinteger 和int

NSInteger在64位平台是int long 型的 

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

retain : [object release]; _object= object ; [_object retain];

copy :[object release];_object  =[object copy];

assign:[object release];_object = object;

12.委托是什麼?委托的property聲明用什麼屬性?為什麼?

委托是觀察者模式實現的一種方法。用assgin。防止循環引用。

13.淺拷貝和深拷貝區別是什麼?…

14.NSString 和 NSMutableString 有什麼區別?

15.自動釋放池跟GC有什麼區別?iPhone上有GC麼?[pool release] 和[pool drain]有什麼區別?

16.

for(int index = 0; index < 20; index ++){
    NSString *tempStr = @”tempStr”;
    NSLog(tempStr);
    NSNumber *tempNumber = [NSNumber numberWithInt:2];
    NSLog(tempNumber);
}

這段代碼有什麼問題.?會不會造成內存泄露(多線程)?在內存緊張的設備上做大循環時自動釋放池是寫在循環內好還是循環外好?為什麼?

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

+1操作別忘記-1.alloc。new。retain。

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

會找不到觀察者。引起崩潰。

19.怎樣實現一個 singleton的類.給出思路。

不要忘記同步單例;

20.什麼是序列化或者Acrchiving,可以用來做什麼,怎樣與copy結合,原理是什麼?.

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


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

看具體問題。如果是有前後依賴關係 還是單一線程。如果可以並發的事件,就多線程。

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

24.ios平台怎麼做數據的持久化?coredata和sqlite有無必然聯係?coredata是一個關係型數據庫嗎?

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


26.notification是同步還是異步? kvo是同步還是異步?notification是全進程空間的通知嗎?kvo呢?

notification是同步的。notification不是全進程空間。

27.kvc是什麼?kvo是什麼?有什麼特性?

28.響應者鏈是什麼?

UIResponder;

29.unix上進程怎麼通信?

30.timer的間隔周期準嗎?為什麼?怎樣實現一個精準的timer?

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

觀察者。

32.如果要開發一個類似eclipse的軟件,支持插件結構。且開放給第三方開發。你會怎樣去設計它?(大概思路)

33.線程和進程的區別和聯係?

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

c:mm/cpp/m

obj-c:m/mm

35.以下每行代碼執行後,person對象的retain count分別是多少

Person *person = [[Person alloc] init];   // count 1
[person retain];   // count 2
[person release];   //count 1
[person release];   //retain count = 1;

36.ViewController 的 loadView, viewDidLoad, viewDidUnload 分別是在什麼時候調用的?

37.ViewController 的 didReceiveMemoryWarning 是在什麼時候被調用的?

38.ios5新特性有那些?

39.談談你對ARC 的認識和理解?

最後更新:2017-04-04 07:03:32

  上一篇:go WebP官方翻譯==Google推出新的圖片格式WebP
  下一篇:go 不容忽視的Windows Server 2012