OC 面試問題彙總

OC 問題彙總: java

1. 你如何理解 iOS 內存管理
   1. new alloc copy retain這些對象咱們都要主動的release或者 autorelease
   2. 若是是類方法建立的對象,那麼系統自動釋放池自動在適當的 時候會幫咱們 release
   3. ARC xcode 自動會幫咱們人工智能的添加 release autorelease 操 做 c++

2. C語言裏的數組與OC數組的區別
OC 數組是一個對象,有大量的方法,c 沒有都須要本身寫 C 數組刪除是須要後面往前移動,oc 數組自動處理 objective-c

3. 淺拷貝與深拷貝的區別 或者什麼是深拷貝 什麼是淺拷貝數據庫

 copy, mutableCopy
@interface A { 數組

B *b; } xcode

淺拷貝只是拷貝對象自己,不會對裏面的子對象進一步拷貝 網絡

 深拷貝會對子對象以及子對象的子對象進一步拷貝iphone

 4. 類別的做用異步

 類別是給已有的類添加方法,可是不能添加變量,匿名類別除外 () 函數

5. 類別和繼承什麼區別
類別/類目/Category 很方便給現有類添加方法。可是不能添加成 員變量,匿名類除外,好比能夠給 NSString 增長方法,給 UINavigationBar 增長方法,好比 SDWebImage 給 UIImageView 增 加了 setImageWithURL:方法。類別對於使用者很方便 

繼承能夠給現有的類增長方法和成員變量。繼承對於使用者來 說不如類別方便 ,好比對 SDWebImage 若是用繼承的話,那麼就 須要寫一個相似於 QFImageView 而後把全部的 UIImageView 改爲 

QFImageView,這裏不如類別方便 

6. C 和 OC 有哪些基本數據類型 

C char, short, int, struct, union, enum 

NSString, nsarray, nsdictionary. 

7. 代理和協議什麼區別 

代理是一種概念,協議是一種技術,代理是用協議來實現的,代理 是 2 個對象之間通信的一種方式。 代理主要作反向傳值的。實現系統的一些回調方法,好比 scrollview 滑動事件,選擇照片,asi 網絡下載完成等。 

iOS 開發和 objective-c 區別
8. 代理和通知中心/廣播/NoficationCenter 什麼區別 

代理主要是反向傳值,通常用來 1:1 的兩個對象通信上。 

通知中心是經過註冊而後接收事件的一種 n:n(多對對) 的方法 

 

9. 解釋 const, static, inline 關鍵字
const 修飾指針,或者常量,好比不可變,
static 修飾變量表示做用域,好比全局的私有變量,函數內部的 static 是內部的私有變量。
Static 修飾函數表示函數是文件做用域
Inline 表示內聯。通常來講 inline 須要和 static 聯合用 通常用法是 static inline int max(int a, int b) { 

return a>b?a:b; } 

static inline做用是和宏相似,只不過是方便調試(宏不能斷掉調 試,static inline 能夠)。運行時候是同樣的。
通常 c/c++短小的函數都用 static inline 內聯函數 

10. OC 裏怎麼實現多繼承 

OC 沒有多繼承。用協議實現多繼承,把協議中的方法在實現的類 中重寫 C++有多繼承,多繼承其實用好了很方便。C++多繼承很容易出現 二一性好比: 

類 A { int a;}
類B: 類A,類C:類A
類D : B, C那麼 int a究竟是繼承自誰的 單繼承 

11.解釋KVC和KVO
Key value coding, Key value observer.
Kvc 是路徑訪問的規範,kvo 是觀察某個變量的變化過程
KVO 能夠觀察某個對象的變量變化過程,KVC 是知足被觀察的編 碼規範。
KVC/KVO 相似於代理,通知中心。都是一種通信方法。 

12. 什麼是單例模式 

單例就是在多個對象之間共享數據,相似於全局變量,好比數據 庫打開一次,多個界面均可以使用 

13. NSString *name = @」1000phone.com」,[name release]會出現什麼 狀況 

這個代碼不知足 objective-c 的內存管理黃金法則。沒有 alloc 就 

release,

14. 列舉所知道的 iOS 的類
15. C/C++和 OC 怎麼混用 

.m -> .mm 

16. 本地存儲方式有哪幾種 

數據庫,nsuserdefauts, file , plist,archieve 歸檔 比較小的就放在 nsuserdefaults(以文件設計的存放在 Libraray 中) 數據庫裏面適合存放一條一條的記錄
file 通常存普通文件,圖片,視頻,音頻等
plist 存放比 nsuserdefaults 大一些的
歸檔 nsarchieve 能夠存對象 

17.解釋OC裏的id類型
id 是泛型指針,能夠指向任何 oc 類型,
id =~ NSObject *
id 是 objc_object 的 typedef,執行 Class 對象 

18. retain、copy、readonly、readwrite 的區別
retain對計數器+1 copy是建立一個新對象,readonly只產生getter 函數,readwrite 產生 setter, getter 函數 

19. copy 是深拷貝仍是淺拷貝
copy 缺省是淺拷貝.可是 copy 也能夠作成深拷貝 

20. copy 和 mutableCopy 區別
copy 是拷貝,mutableCopy 是可變拷貝,好比把 NSString 經過 mutableCopy 變 成 NSMutableString, 把 NSArray 通 過 mutableCopy 變成 NSMutableArray.
NSString -àNSMutableString, NSArrayàNSMutableArray, 

NSDictionaryàNSMutableDictionary, NSData->NSMutableData; 

21. 怎麼實現對象的本地存儲 

歸檔 NSArchieve

22. 遍歷數組的三種方式有什麼區別
for forin iterator
forin 也叫快速循環。爲何他叫快速循環,緣由是速度快?爲什 

麼速度快? 能夠經過優化提早把 forin 裏面的 array 數組數組所有 

導入到 cpu cache 中。由於 cache 訪問速度把內存快至少 100 倍 

23. NSArray, NSDictionary 這些是如何作的? 

NSArray 使用鏈表作的 

NSDictionary 使用 hash 表作出來的

 24. C++怎麼調用 C 的方法 

extern 「C」 int foo(){ }; 

25. Blocks 語法有什麼優勢
Blocks 相似於 c 中回調函數,和代理相似的,相似於 java 中的 listener 匿名函數
26. 什麼是委託代理模式 

委託代理是 2 個對象之間的一種通信方式。一方使用協議,代理 

另一方實現協議,相似於回調,blocks 等語法。 目的是爲了軟件設計的低耦合 

27. 什麼是通知中心 

通知中心是多對多的平等的通信模式。主要用在多個對象之間鬆 耦合的通信模式。對象和對象之間經過通知的名字就能夠進行關 聯通信。 

28.解釋關鍵字static、const、inline、 static inline、volatile 

static 修飾變量表示靜態變量,根據做用域 不一樣
extern 和 static 是相反的。
Static 修飾函數是表示函數在本文件有效 

Static inline 聯合在一塊兒表示內聯函數。相似於宏
Const 修飾變量和變量的內容只讀
Volatile 表示每次都從內存中真正的讀取。主要是用於嵌入式中, 讀取硬件。 

29. OC 中有私有方法嗎?怎麼實現
在.m 文件中實現 Category,只是在.m 中方法 

30. OC 中有私有成員變量嗎?怎麼實現 

在.m 文件中實現匿名類別 Category 

31. 成員變量的做用域有哪幾種

 @public, @protected, @private 

32. 數據庫能不能存圖片,怎麼存?
能夠存圖片, nsdata 存,可是咱們通常不這樣存,咱們存路徑把 圖片存在沙盒中。 


33. 不一樣屏幕怎麼適配
iphone4, iphone4S 640x960 retina

iphone5, iphone5S, 640x1136

iphone6, iphone6S, 1334x750像素

iphone6 plus  1920x1080像素

iphone6s plus  1920x1080像素

34. 不一樣版本屏幕旋轉怎麼適配 

35. 內存警告應該怎麼作 

儘可能多的釋放內存。把一些內容寫到文件中,不要保存在內存中。

36. iOS7, iOS8, iOS9區別 

37. NSNotification 是同步仍是異步的 

是同步的. 若是須要異步 必須使用 NSNotificationQueue 實現

相關文章
相關標籤/搜索