iOS面試

常用的設(shè)計(jì)模式

?單例模式

?組合模式

?觀察者模式

?代理模式

?享元模式

?工廠方法模式

?抽象工廠模式

#MVC的理解

?數(shù)據(jù)管理者(M)、數(shù)據(jù)展示者(V)、數(shù)據(jù)加工者(C)

? M應(yīng)該做的事:

○給ViewController提供數(shù)據(jù)

○給ViewController存儲數(shù)據(jù)提供接口

○提供經(jīng)過抽象的業(yè)務(wù)基本組件,供Controller調(diào)度

? C應(yīng)該做的事:

○管理View

Container的生命周期

○負(fù)責(zé)生成所有的View實(shí)例,并放入View

Container

○監(jiān)聽來自View與業(yè)務(wù)有關(guān)的事件,通過與Model的合作,來完成對應(yīng)事件的業(yè)務(wù)。

? V應(yīng)該做的事:

○響應(yīng)與業(yè)務(wù)無關(guān)的事件,并因此引發(fā)動畫效果,點(diǎn)擊反饋(如果合適的話,盡量還是放在View去做)等。

○界面元素表達(dá)

#MVC和MVVM的區(qū)別

? MVVM是對胖模型進(jìn)行的拆分,其本質(zhì)是給控制器減負(fù),將一些弱業(yè)務(wù)邏輯放到VM中處理

? MVC是一切設(shè)計(jì)的基礎(chǔ),所有新的設(shè)計(jì)模式都是基于MVC進(jìn)行的改進(jìn)

?補(bǔ)充:常見的設(shè)計(jì)模式有:MVC、MVCS、MVVM、viper

#TCP和UDP有什么區(qū)別?

? TCP是面向連接的,建立連接需要經(jīng)歷三次握手,保證數(shù)據(jù)正確性和數(shù)據(jù)順序

? UDP是非連接的協(xié)議,傳送數(shù)據(jù)受生成速度,傳輸帶寬等限制,可能造成丟包

? UDP一臺服務(wù)端可以同時向多個客戶端傳輸信息

? TCP報(bào)頭體積更大,對系統(tǒng)資源要求更多

#TCP的三次握手

?第一次握手:客戶端發(fā)送syn包到服務(wù)器,并進(jìn)入syn_send狀態(tài),等待服務(wù)器進(jìn)行確認(rèn);

?第二次握手:服務(wù)器收到客戶端的syn包,必須確認(rèn)客戶的SYN,同時自己也發(fā)送一個SYN包,即SYN + ACK包,此時服務(wù)器進(jìn)入SYN_RECV狀態(tài);

?第三次握手:客戶收到服務(wù)器發(fā)送的SYN+ACK包之后,向服務(wù)器發(fā)送確認(rèn)包,此包發(fā)送完畢,客戶端和服務(wù)器進(jìn)入ESTABLISHED狀態(tài),完成第三次握手。

#如何制作一個靜態(tài)庫/動態(tài)庫?他們的區(qū)別是什么?

? Xcode6支持制作靜態(tài)庫/動態(tài)庫framework

?無論是動態(tài)庫還是靜態(tài)庫都是區(qū)分真機(jī)和模擬器的

?靜態(tài)庫編譯靜態(tài)庫文件裝入程序空間,動態(tài)庫是文件動態(tài)裝入內(nèi)存

?動態(tài)庫執(zhí)行到相關(guān)函數(shù)才會被調(diào)用,節(jié)省空間

?蘋果一般不允許第三方動態(tài)庫,APP容易被拒

-一個lib包含了很多的架構(gòu),會打到最后的包里么?

?不會,如果lib中有armv7,

armv7s, arm64, i386,x86_64架構(gòu),而target architecture選擇了armv7s,arm64,那么只會從lib中l(wèi)ink指定的這兩個架構(gòu)的二進(jìn)制代碼,其他架構(gòu)下的代碼不會link到最終可執(zhí)行文件中;反過來,一個lib需要在模擬器環(huán)境中正常link,也得包含i386架構(gòu)的指令

每一個設(shè)備都有屬于自己的CPU架構(gòu)

每一個靜態(tài)支持的架構(gòu)是固定

模擬器

4s-->5 : i386

5s-->6plus : x86_64

真機(jī)

3gs-->4s : armv7

5/5c :

armv7s,靜態(tài)庫只要支持了armv7,就可以跑在armv7s的架構(gòu)上

5s-->6plus : arm64

#常用命令總結(jié):

//使用lipo -info命令,查看指定庫支持的架構(gòu),比如UIKit框架

lipo -info

UIKit.framework/UIKit

//想看的更詳細(xì)的信息可以使用lipo -detailed_info

lipo -detailed_info

UIKit.framework/UIKit

//還可以使用file命令

file

UIKit.framework/UIKit

//合并MyLib-32.a和MyLib-64.a,可以使用lipo -create命令合并

lipo -create

MyLib-32.a MyLib-64.a -output MyLib.a

#支持64-bit后程序包會變大么?

?會,支持64-bit后,多了一個arm64架構(gòu),理論上每個架構(gòu)一套指令,但相比原來會大多少還不好說

用過Core Data或者SQLite嗎?讀寫是分線程的嗎?遇到過死鎖沒?如何解決的?

?用過SQLite,使用FMDB框架

?丟給FMDatabaseQueue或者 添加互斥鎖(NSLock/@synchronized(鎖對象))

請簡單的介紹下APNS發(fā)送系統(tǒng)消息的機(jī)制

? APNS優(yōu)勢:杜絕了類似安卓那種為了接受通知不停在后臺喚醒程序保持長連接的行為,由iOS系統(tǒng)和APNS進(jìn)行長連接替代

? APNS的原理:

○應(yīng)用在通知中心注冊,由iOS系統(tǒng)向APNS請求返回設(shè)備令牌(device Token)

○應(yīng)用程序接收到設(shè)備令牌并發(fā)送給自己的后臺服務(wù)器

○服務(wù)器把要推送的內(nèi)容和設(shè)備發(fā)送給APNS

○ APNS根據(jù)設(shè)備令牌找到設(shè)備,再由iOS根據(jù)APPID把推送內(nèi)容展示

不用中間變量,用兩種方法交換A和B的值

?方法1:

A = A + B

B = A - B

A = A - B

?方法2:異或

A = A^B;

B = A^B;

A = A^B;



#開發(fā)常用的工具有哪些?

Xcode

你一般是怎么用Instruments的?

用于調(diào)試內(nèi)存泄露,循環(huán)引用

#你一般是如何調(diào)試Bug的?

一般情況,邏輯判斷,其次看堆棧,斷點(diǎn)調(diào)試 ,lldb

#如何實(shí)現(xiàn)單例,單例會有什么弊端?

單例是一種開發(fā)思想. 實(shí)現(xiàn)單利重寫構(gòu)造方法即可 ,對象會一直存在知道程序結(jié)束才銷毀

弊端?單例不可濫用 ,濫用單例會讓內(nèi)存龐大.

1、由于單利模式中沒有抽象層,因此單例類的擴(kuò)展有很大的困難。

2、單例類的職責(zé)過重,在一定程度上違背了“單一職責(zé)原則”。

3、濫用單例將帶來一些負(fù)面問題,如為了節(jié)省資源將數(shù)據(jù)庫連接池對象設(shè)計(jì)為的單例類,可能會導(dǎo)致共享連接池對象的程序過多而出現(xiàn)連接池溢出;如果實(shí)例化的對象長時間不被利用,系統(tǒng)會認(rèn)為是垃圾而被回收,這將導(dǎo)致對象狀態(tài)的丟失。

?節(jié)省內(nèi)存資源,一個應(yīng)用就一個對象

節(jié)省內(nèi)存資源?犧牲時間換空間 ?

APP上架后如何搜集錯誤信息?

用qq旗下的bugly當(dāng)然友盟也有 只需要在app注冊即可

簡答描述下你所理解的敏捷開發(fā)

敏捷開發(fā)?

六大設(shè)計(jì)原則:

代理:解耦和, 開放封閉原則

觀察者模式:接口隔離原則,開放-封閉原則

MVC 對擴(kuò)展開放-對修改封閉

單例 單一職責(zé)原則

策略模式 :敏捷原則:接口隔離原則;多用組合,少用繼承;針對接口編程,而非實(shí)現(xiàn)。

(六)工廠模式 易于替換,面向抽象編程,application只與抽象工廠和易變類的共性抽象類發(fā)生調(diào)用關(guān)系。 倒轉(zhuǎn)依賴原則?

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

推薦閱讀更多精彩內(nèi)容

  • *面試心聲:其實(shí)這些題本人都沒怎么背,但是在上海 兩周半 面了大約10家 收到差不多3個offer,總結(jié)起來就是把...
    Dove_iOS閱讀 27,197評論 30 471
  • 來自網(wǎng)絡(luò) 序言 目前形勢,參加到iOS隊(duì)伍的人是越來越多,甚至已經(jīng)到供過于求了。今年,找過工作人可能會更深刻地體會...
    用心在飛閱讀 842評論 5 4
  • 序言 目前形勢,參加到iOS隊(duì)伍的人是越來越多,甚至已經(jīng)到供過于求了。今年,找過工作人可能會更深刻地體會到今年的就...
    Jack_lin閱讀 78,484評論 110 1,946
  • OC的理解與特性O(shè)C作為一門面向?qū)ο蟮恼Z言,自然具有面向?qū)ο蟮恼Z言特性:封裝、繼承、多態(tài)。它既具有靜態(tài)語言的特性(...
    LIANMING_LI閱讀 533評論 0 0
  • OC的理解與特性 OC作為一門面向?qū)ο蟮恼Z言,自然具有面向?qū)ο蟮恼Z言特性:封裝、繼承、多態(tài)。它既具有靜態(tài)語言的特性...
    克魯?shù)吕?/span>閱讀 456評論 0 0