最近看了一些面試的題, 發現這里面真的有好多自己沒接觸過的東西, 自己做了筆記順便和大家分享一下:
本文將持續更新
1. Objective-C
所有對象間的交互是如何實現的?
主要有兩種角色: 數據發送者
、 數據接收者.
正向傳遞:直接拿到接收者的指針.
反向傳遞:
- 委托模式:觀察者模式(本質是單例)
-
Block
語法,APPDelegate
來實現
1.委托模式, Block
語法 1 對 1
2.觀察者模式:1 對 多
2. 什么是數據結構?
計算機存儲, 組織數據的方式, 相互之間存在一種或多種特定關系的數據元素的集合.
3. #import" "
和#include" "
的區別, @class
的意思, #import<>
和#import" "
的區別.
#import
是Objective-C
導入頭文件的關鍵字
#include
是C/C++
導入頭文件的關鍵字
@class
告訴編譯器某個類的聲明, 執行時才查看類的實現文件, 可以解決頭文件的相互包含.
#import<>
引入的是系統庫文件 (使用CocoaPods
導入的三方庫也是需要使用這種引入方式)
#import" "
引入的是用戶自己定義的頭文件
4. 對于語句NSString *str = [[NSData alloc] init]
, str在編譯時和運行時分別是什么類型?
編譯時: NSString
類型
運行時: NSData
類型
5. 常見 OC
數據類型有哪些? 和 c
區別?
Objective-C
: NSString
, NSInteger
, NSArray
, NSData
...
C
: 基本數據類型int
6. id
聲明對象有什么特性
- 可以指向
任意類型
的Objective-C
對象 - 可以作為
返回值
, 也可以聲明對象
返回值使用 instancetype
與id
的區別
-
instancetype
只能作為返回值 -
id
可以聲明對象
, 也可以作為返回值
7.
@property NSString *sex;
//屬性
屬性擁有setter
和 getter
方法, 外加 _sex
成員變量
8. 深拷貝與淺拷貝的區別:(面試幾乎必考的筆試題)
淺拷貝: 只復制指向對象的指針, 而不復制引用對象本身
深拷貝: 復制引用和對象本身
用網上一流行的小哥說的話:
淺拷貝: 你和你的影子, 你完蛋了, 你的影子也完蛋了.
深拷貝: 你和你的克隆人, 你完蛋了, 你的克隆人還好好的或者.
9. nil
null
Nil
區別:
nil
指向OC
對象
Nil
指向OC
的類
null
一般在C語言
中使用
10. 線程和進程的區別?
一個應用程序對應一個進程,一個進程幫助程序占據一塊存儲空間
要想在進程中執行任務,就必須開啟線程,一條線程就代表一個任務
一個進程中允許開啟多條線程,也就是同時執行多個任務
今天就暫時寫這么多, 本文全是小編一個一個字敲出來的, 后續還會繼續更新, 希望本文能對大家起到幫助 !!!