iOS面試題集(一)

1.如何在OC中調用swift的文件?

步驟:直接托swift文件 --> 建立橋接頭文件 --> target --> building
setting--> 輸入product --> Packaging --> Project ModuleName
--> SwiftModule --> 在橋接頭文件里加入頭文件#import "SwiftModule-
swift.h"
作用: 此頭文件中就包含了所有.swift的文件

ocInsertSwift.png

2.get和post的區別?

解答:

a.安全性問題:get請求的參數全部暴露在接口中,一般叫做明文請求或者是傻瓜式請
求,post請求的參數一般以字典的方式進行拼接,相對于get比較安全
b.對文件大小的一個要求:get請求不允許向服務器上傳文件(圖片,PDF,音視
頻),一般以post進行上傳文件
c.如果從服務器獲取數據或者查詢數據使用get請求,如果上傳數據到服務器或者修改
服務器上數據使用post

3.錯誤處理:unacceptable content-type: text/html?

解決方案:
manager.responseSerializer.acceptableContentTypes = NSSet(object: "text/html") as! Set < String >

4.了解:APPDelegate和viewController的生命周期

AppDelegate的生命周期:貫穿整個程序的從開始到結束的全過程
詳解:
application(程序啟動入口) --> applicationWillResignActive(將進入活躍
狀態)--> applicationDidBecomeActive(已經進入活躍狀態) -->
applicationDidEnterBackground(進入后臺) -->
applicationWillEnterForeground(將進入前臺) -->
applicationWillTerminate (程序將被中斷的)

ViewController的生命周期:是指視圖View從加載到注銷加載的全過程
詳解:
init(創建視圖) --> loadView(開始加載)--> viewDidLoad(加載成功) -->
viewWillAppear(視圖將要出現) --> viweDidAppear(視圖顯示出來) -->
viewWillDisappear(視圖將要消失) --> viewDidDisappear(視圖已經消失) -->
viewDidUnload(注銷加載) --> dealloc(被釋放)
參考文檔

5.SDWebImage在內存中的實現原理?

作用:SDWebImage是用來加載網絡圖片的第三方庫,實現了異步請求數據,并且實現了圖片的緩存
解答: 在內存和沙盒目錄下各緩存一份文件,內存中的文件到一定程度會自動清除,沙盒目錄下的文件需要由用戶手動清除,首先檢測內存 --> 檢測沙盒目錄 --> 網絡請求(都沒有時才會進行網絡請求)

5.1.AFNetworking的實現原理

NSURLConnection,主要對NSURLConnection進行了進一步的封裝,包含以下核心的類:
AFURLConnectionOperation
AFHTTPRequestOperationManager
AFHTTPRequestOperation
NSURLsession
NSURLSession對象進行了進一步的封裝,包含以下核心的類:

AFURLSessionManager
AFHTTPSessionManager

Reachability,提供了與網絡狀態相關的操作接口,包含以下核心的類:

AFNetworkReachabilityManager

Security,提供了與安全性相關的操作接口,包含以下核心的類:

AFSecurityPolicy

Serialization,提供了與解析數據相關的操作接口,包含以下核心的類:

AFURLRequestSerialization
AFURLResponseSerialization

參考文獻

6.版本迭代

作為一款產品,總會有一些共性,從一開始的誕生到 —— 開始的不完善到不斷的自我完善,然后再不斷的變更需求、改動功能、修改bug和優化性能等中更換版本使之適應各種環境和外部需求得以生存壯大。

7.KVC和KVO的區別

回答:
官方回答

  1. KVC是鍵值編碼,該機制可以不通過存取方法就可以訪問對象的實例變量,可以通過一個字符串的key(屬性名)修改對象的屬性值,
  2. KVO是鍵值監聽,可以監聽一個對象屬性值的改變,是一種能使的對象獲取到其他對象屬性變化的通知機制
  3. 實現KVO鍵值觀察模式,被觀察的對象必須使用KVC鍵值編碼來修改他的實例變量,這樣才能被觀察者觀察到,因此,KVC和KVO的基礎或者說KVO的實現是建立在KVC的基礎上的

個人理解:
KVC即是指 NSKeyValueCoding,一個非正式的Protocol,提供一種機制來間接訪問對象的屬性。而不是通過調用Setter、Getter方法訪問。KVO 就是基于 KVC 實現的關鍵技術之一。

—(id)valueForKey:(NSString *)key;
—(void)setValue:(id)value forKey:(NSString *)key;

KVO的是KeyValue Observe的縮寫,中文是鍵值觀察。這是一個典型的觀察者模式,觀察者在鍵值改變時會得到通知。

addObserver:forKeyPath:options:context:;
observeValueForKeyPath:ofObject:change:context:

KVO需要注意在對象銷毀時,要移除觀察者,不然會崩潰。

removeObserver:forKeyPath:context:
KVO是同步執行,不能執行耗時方法,KVO可能發生資源搶奪

8.類方法和實例方法的區別

類方法:

  • 類方法屬于類對象
  • 類方法只能通過類對象調用
  • 類方法中的self是類對象
  • 類方法可以調用其他類方法
  • 類方法中不能訪問成員變量
  • 類方法不能直接調用對象方法

實例方法:

  • 實例方法是屬于實例對象的
  • 實例方法只能呢通過實例對象調用
  • 實例方法中的self是實例對象
  • 實例方法中可以訪問成員變量
  • 實例方法中直接調用實例方法
  • 實例方法中野可以調用類方法(通過類名)

9.繼承和擴展的區別

解答:
在 Swift 中,可以調用和訪問超類的方法,屬性和附屬腳本,并且可以重寫這些方法,屬性和附屬腳本來優化或修改它們的行為。Swift 會檢查你的重寫 義在超類中是否有匹配的定義,以此確保你的重寫行為是正確的。
在 Swift 中,擴展就是向一個已有的類、結構體或枚舉類型添加新功能,這包括在沒有權限獲取原始源代碼的情況下擴展類型的能力
Swift中的擴展可以:

添加計算屬性和計算靜態屬性
添加實例方法和類型方法
提供新的構造器
添加下標腳本
定義和使用新的嵌套類型

區別:

  • 繼承可以寫所有類型的屬性,類別只能擴展計算性屬性
  • 繼承可以寫所有類的的構造方法,但類別只能擴展便利構造方法,不能擴展指定構造方法

參考文獻

10.繼承和類別的類別

回答:
類別是對一個功能完備類的補充,比如一個Animal類,具有run和eat方法,想給類增加一個bark方法,可以使用類別。
而多個類具有相同的實例變量和方法時,考慮用繼承,即子類可以繼承父類相同的特性,比如Animal類具有年齡和體重兩個屬性,Dog也具有年齡和體重兩個屬性,Dog就可以繼承Animal的兩個屬性,即為繼承。
共同點是都給類進行了擴展。
區別:

1.類別是對方法的擴展,不能添加成員變量,繼承可以在父類的成員變量基礎上添加新的成員變量。
2.類別只能添加新方法,而不能修改和刪除原來的方法,繼承可以增加、修改和刪除方法。
3.類別不提倡對原有方法進行重載,繼承可以使用super對原來的方法進行重載
4.類別可以被繼承,如果一個父類中定義了一個類別,那么子類中也會繼承此

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 229,362評論 6 537
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,013評論 3 423
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 177,346評論 0 382
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,421評論 1 316
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,146評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,534評論 1 325
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,585評論 3 444
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,767評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,318評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,074評論 3 356
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,258評論 1 371
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,828評論 5 362
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,486評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,916評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,156評論 1 290
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,993評論 3 395
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,234評論 2 375

推薦閱讀更多精彩內容

  • *面試心聲:其實這些題本人都沒怎么背,但是在上海 兩周半 面了大約10家 收到差不多3個offer,總結起來就是把...
    Dove_iOS閱讀 27,197評論 30 471
  • 發現 關注 消息 iOS 第三方庫、插件、知名博客總結 作者大灰狼的小綿羊哥哥關注 2017.06.26 09:4...
    肇東周閱讀 12,156評論 4 61
  • 1.Difference between shallow copy and deep copy? 淺復制和深復制的...
    用心在飛閱讀 1,011評論 0 9
  • 系統版本:macOS Sierra 10.12MySQL版本:5.7.16 從官網下載的 dmg 安裝包,安裝完成...
    水冰棍閱讀 19,183評論 2 7
  • 萬家燈火 ,入景隨風。 山野闊路,夕陽對酌。 深冬夜里,宛似人間四月。
    慢與阿肖閱讀 247評論 0 1