iOS面試準備

1.Cocoa框架:

Cocoa是OS X和?iOS操作系統(tǒng)的程序的運行環(huán)境。

是什么因素使一個程序成為Cocoa程序呢?不是編程語言,因為在Cocoa開發(fā)中你可以使用各種語言;也不是開發(fā)工具,你可以在命令行上就可以創(chuàng)建Cocoa程序。Cocoa程序可以這么說,它是由一些對象組成,而這些對象的類最后都是繼承于它們的根類?:NSObject。而且它們都是基于Objective-C運行環(huán)境的。

iOS中,Cocoa眾多框架中最重要最基本的兩個框架是:Foundation?和?UIKit。

Foundation?和界面無關(guān),也可以說和界面無關(guān)的類基本是Foundation框架的,和界面相關(guān)的是UIKit框架。

這兩個框架在系統(tǒng)中處于的位置如圖:

Foundation框架:

UIKit框架:

2.React框架:

React是臉書為Web端開發(fā)的一個開源框架。

React Native是臉書為移動端跨平臺開發(fā)的一個開源框架。

3.主要設(shè)計模式:

https://www.cnblogs.com/wangbinios/p/7882082.html

4.網(wǎng)絡開發(fā)相關(guān)技術(shù),如?Socket,HTTP,REST:

WEB使用HTTP作傳輸層協(xié)議,以封裝HTTP文本信息,然后使用TCP/IP做傳輸層協(xié)議將它發(fā)送到網(wǎng)絡上。Socket是對TCP/IP協(xié)議的封裝,Socket本身并不是協(xié)議,而是一個調(diào)用接口(API),通過Socket,我們才能使用TCP/IP協(xié)議。

iOS可以利用第三方框架CocoaAsyncSocket實現(xiàn)Scocket

iOS可以利用第三方框架SocketRocket實現(xiàn)webSocket

REST式的服務最重要的三個特征就是**無狀態(tài)性**(statelessness)、**統(tǒng)一資源定位**(uniform resource identification)和**可緩存性**(cacheability)。

REST式服務總是無狀態(tài)的。每次API調(diào)用都被視作新的請求,服務器并不會記錄客戶端上下文??蛻舳诵枰S護服務器的狀態(tài),包括但不限于緩存服務器響應(response)和登錄訪問令牌(login access token)。

REST式服務的資源定位是通過URL實現(xiàn)的。REST不使用資源ID作為參數(shù),而是將它作為URL的一部分。例如,http://example.com/resource?id=1234REST服務中就變成了http://example.com/resources/1234。

REST式服務使用這種方式進行資源定位,而且也不維護客戶端狀態(tài),這就使客戶端可以根據(jù)URL緩存響應,就像瀏覽器緩存網(wǎng)頁一樣。

REST式服務的響應通常以一種統(tǒng)一的、雙方一致同意的格式返回給客戶端,這樣可以更好地對客戶端接口和服務器接口進行解耦。客戶端的iOS應用使用雙方一致同意的數(shù)據(jù)交換格式與RESTful服務器進行通信。到目前為止,最常用的格式是XML和JSON。

5.數(shù)據(jù)存儲相關(guān)技術(shù):

XML屬性列表(plist)歸檔

Preference(偏好設(shè)置)

NSKeyedArchiver歸檔(NSCoding)?//?所謂歸檔,是一個過程,即用某種格式來保存一個或者多個對象,以便以后還原這些對象。

特點:

1> 可以存儲自定義模型對象,NSKeyedArchiver歸檔相對較plist存儲而言,它可以直接存儲自定義模型對象,而plist文件需要將模型轉(zhuǎn)為字典才可以存儲自定義對象模型;

2> 歸檔不能存儲大批量數(shù)據(jù)(相比較Sqlite而言),存儲數(shù)據(jù)到文件是將所有的數(shù)據(jù)一下子存儲到文件中,從文件中讀取數(shù)據(jù)也是一下子讀取所有的數(shù)據(jù);

缺點:

1> 假如你的文件中有100個對象了,然后你想在利用歸檔添加一個對象,你需要先把所有的數(shù)據(jù)解檔出來,然后再加入你想添加的那個對象,同理,你想刪除一個文件中的一個對象也是,需要解檔出所有的對象,然后將其刪除。性能低這樣處理

2> 基本使用:需要歸檔的模型類必須要遵守NSCoding協(xié)議,然后模型實現(xiàn)類中必須實現(xiàn)兩個方法:1>encodeWithCoder ->?歸檔;2> initWithCoder:?- >?解檔

SQLite3

Core Data

6.面向接口開發(fā)模式:

objc是一門面向?qū)ο蟮恼Z言,面向?qū)ο笠步o我們平時帶來了很多的方便。然而很多情況下面向?qū)ο笠灿凶约旱木窒扌?,濫用繼承多態(tài)可能會埋下很多坑。

在實際采用多態(tài)的時候會有下面四種情況:

父類有部分public的方法是不需要,也不允許子類覆重

父類有一些特別的方法是必須要子類去覆重的,在父類的方法其實是個空方法

父類有一些方法是可選覆重的,一旦覆重,則以子類為準

父類有一些方法即便被覆重,父類原方法還是要執(zhí)行的

父類有一些方法即便被覆重,父類原方法還是要執(zhí)行的

因為我們規(guī)定了父類方法不可以被覆蓋重載,只能通過接口實現(xiàn)的方式來寫.

參考鏈接:?https://casatwy.com/tiao-chu-mian-xiang-dui-xiang-si-xiang-er-duo-tai.html

7.Git?版本控制工具和缺陷跟蹤系統(tǒng):

git add .

git commit -m?‘initial commit’

git push

git pull

題外話:一般在開發(fā)中,多人合作開發(fā)的時候,版本控制非常重要,所以一定要有穩(wěn)定的主分支Master,開發(fā)功能的分支developer,預發(fā)布的分支release這三個重要分支。每次有新功能和需求的時候每個開發(fā)人員就從developer分支分別拉取項目開發(fā),最后合并入developer,功能完成后就并入release,修改bug時在release分支操作,修復完成后分別并入Master和developer分支,最后從Master分支拉取最終的代碼打包上傳APP Store。

項目管理和缺陷跟蹤工具——Redmine

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

  • 1、YYModel在Swift中的使用與OC中有沒有什么不同?(此問題為小眾問題) 不同:1)、無法將 Model...
    學習之路閱讀 326評論 0 1
  • *面試心聲:其實這些題本人都沒怎么背,但是在上海 兩周半 面了大約10家 收到差不多3個offer,總結(jié)起來就是把...
    Dove_iOS閱讀 27,624評論 30 472
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,569評論 19 139
  • 孟圓的筆記閱讀 399評論 0 0
  • 【日精進:小煜媽打卡第212天】-20180103 1、經(jīng)典學習:《易經(jīng)》序卦傳前部分,《詩經(jīng)》小雅230-234...
    b79ddab78458閱讀 153評論 0 0

友情鏈接更多精彩內(nèi)容