iOS面試題-每日十道-第十天

有誤的地方 歡迎高手能給指出

一. 運(yùn)行時(shí)你是怎么理解的,怎么用

ObjC Runtime 其實(shí)是一個(gè) Runtime 庫(kù)缕陕,基本上用 C 和匯編寫(xiě)的,這個(gè)庫(kù)使得 C 語(yǔ)言有了面向?qū)ο蟮哪芰ο寐恕_@個(gè)庫(kù)做的事情就是加載類(lèi)的信息翘瓮,進(jìn)行方法的分發(fā)和轉(zhuǎn)發(fā)之類(lèi)的。OC是一種面向runtime(運(yùn)行時(shí))的語(yǔ)言遍坟,也就是說(shuō)拳亿,它會(huì)盡可能地把代碼執(zhí)行的決策從編譯和鏈接的時(shí)候推遲到運(yùn)行時(shí)。這給程序員寫(xiě)代碼帶來(lái)很大的靈活性愿伴,比如說(shuō)你可以把消息轉(zhuǎn)發(fā)給你想要的對(duì)象肺魁,或者隨意交換一個(gè)方法的實(shí)現(xiàn)之類(lèi)的。這就要求runtime能檢測(cè)一個(gè)對(duì)象是否能對(duì)一個(gè)方法進(jìn)行響應(yīng)隔节,然后再把這個(gè)方法分發(fā)到對(duì)應(yīng)的對(duì)象去鹅经。我們拿 C 來(lái)跟 ObjC 對(duì)比一下。在 C 語(yǔ)言里面怎诫,一切從 main 函數(shù)開(kāi)始瘾晃,程序員寫(xiě)代碼的時(shí)候是自上而下地,一個(gè) C 的結(jié)構(gòu)體或者說(shuō)類(lèi)吧幻妓,是不能把方法調(diào)用轉(zhuǎn)發(fā)給其他對(duì)象的蹦误。這個(gè)問(wèn)題其實(shí)涉及到兩個(gè)概念,運(yùn)行時(shí)和多態(tài)肉津。 簡(jiǎn)單來(lái)說(shuō)强胰,運(yùn)行時(shí)機(jī)制使我們直到運(yùn)行時(shí)才去決定一個(gè)對(duì)象的類(lèi)別,以及調(diào)用該類(lèi)別對(duì)象指定方法妹沙。 多態(tài):不同對(duì)象以自己的方式響應(yīng)相同的消息的能力叫做多態(tài)哪廓。意思就是假設(shè)生物類(lèi)(life)都用有一個(gè)相同的方法-eat; 那人類(lèi)屬于生物,豬也屬于生物初烘,都繼承了life后涡真,實(shí)現(xiàn)各自的eat,但是調(diào)用是我們只需調(diào)用各自的eat方法肾筐。 也就是不同的對(duì)象以自己的方式響應(yīng)了相同的消息 響應(yīng)了eat這個(gè)選擇器哆料。因此也可以說(shuō),運(yùn)行時(shí)機(jī)制是多態(tài)的基礎(chǔ)吗铐。比如KVO中我們就用了东亦。

二. 你單例怎么理解怎么用的?

單例設(shè)計(jì)模式,一個(gè)類(lèi)只有一個(gè)實(shí)例,而且該實(shí)例易于外界訪問(wèn),方便對(duì)實(shí)例個(gè)數(shù)的控制并節(jié)約系統(tǒng)資源。類(lèi)只能有一個(gè)實(shí)例,而且必須從一個(gè)為人熟知的訪問(wèn)點(diǎn)對(duì)其進(jìn)行訪問(wèn)典阵,比如工廠方法奋渔。在程序中,我需要一系列的對(duì)象壮啊,他們每一個(gè)內(nèi)部都包含有一組變量和功能嫉鲸,是靜態(tài)的,而且整個(gè)程序都只需要擁有一個(gè)該類(lèi)的對(duì)象歹啼。例如:
1.登陸界面(點(diǎn)擊多個(gè)地方都彈出相同的控制器)玄渗;
2.管理數(shù)據(jù)庫(kù);
3.音效控制狸眼;
4.文件處理:
5.封裝網(wǎng)絡(luò)工具類(lèi)等等...

三. 說(shuō)說(shuō)oc這門(mén)語(yǔ)言吧藤树,和c \ c++比,你覺(jué)得哪個(gè)效率高拓萌,高到哪里了?

object_c比C++稍慢岁钓,是因?yàn)閛bject_c的一些語(yǔ)言特性,比如反射微王,影響了執(zhí)行效率屡限。區(qū)別主要有以下一些方面。

  • 單一繼承:Objective-C不支持多重繼承骂远,(同Java和Smalltalk)囚霸,而C++語(yǔ)言支持多重繼承腰根。
  • 動(dòng)態(tài):Objective-C是動(dòng)態(tài)定型(dynamicaly typed)所以它的類(lèi)庫(kù)比C++要容易操作激才。Objective-C 在運(yùn)行時(shí)可以允許根據(jù)字符串名字來(lái)訪問(wèn)方法和類(lèi),還可以動(dòng)態(tài)連接和添加類(lèi)额嘿。C++ 跟從面向?qū)ο缶幊汤锏腟imula67(一種早期OO語(yǔ)言)學(xué)派瘸恼,而Objecive-C屬于Smalltalk學(xué)派。
    在C++里册养,對(duì)象的靜態(tài)類(lèi)型決定你是否可以發(fā)送消息給它东帅,而對(duì)Objecive-C來(lái)說(shuō),由動(dòng)態(tài)類(lèi)型來(lái)決定球拦。Simula 67學(xué)派更安全靠闭,因?yàn)榇蟛糠皱e(cuò)誤可以在編譯時(shí)查出。而Smalltalk學(xué)派更靈活坎炼,比如一些Smalltalk看來(lái)無(wú)誤的程序拿到Simualr 67那里就無(wú)法通過(guò)愧膀。從很多方面來(lái)看,C++和Objective-C的差別谣光,與其說(shuō)時(shí)技術(shù)上的檩淋,不如說(shuō)是思維方式上的...

四. 代理,通知,KVO 各有什么優(yōu)缺點(diǎn)

代理優(yōu)勢(shì):
1.語(yǔ)法嚴(yán)格,將要監(jiān)聽(tīng)的事件必須是delegate協(xié)議中有清晰的定義
2.如果delegate中的一個(gè)方法沒(méi)有實(shí)現(xiàn)那么就會(huì)出現(xiàn)編譯警告/錯(cuò)誤
3.在一個(gè)應(yīng)用中的控制流程是可跟蹤的并且是可識(shí)別的;
4.在一個(gè)控制器中可以定義定義多個(gè)不同的協(xié)議萄金,每個(gè)協(xié)議有不同的delegate
5.沒(méi)有第三方對(duì)象要求保持/監(jiān)視通信過(guò)程蟀悦。
代理缺點(diǎn)
1.需要編寫(xiě)很多代碼.

  1. 定義delegate屬性時(shí),需要注意strong\weak的問(wèn)題.
    3.一般用于父子關(guān)系,層級(jí)結(jié)構(gòu)不能太復(fù)雜.

通知優(yōu)點(diǎn)
1.不需要編寫(xiě)太多代碼,實(shí)現(xiàn)比較簡(jiǎn)單.
2.對(duì)于一個(gè)發(fā)出的通知媚朦,多個(gè)對(duì)象能夠做出反應(yīng),即1對(duì)多的方式實(shí)現(xiàn)簡(jiǎn)單.
3.controller能夠傳遞context對(duì)象(dictionary)日戈,context對(duì)象攜帶了關(guān)于發(fā)送通知的自定義的信息
4.層級(jí)結(jié)構(gòu)比較深的時(shí)候用.
通知缺點(diǎn)
1.在編譯期不會(huì)檢查通知是否能夠被觀察者正確的處理询张;
2.在釋放注冊(cè)的對(duì)象時(shí),需要在通知中心取消注冊(cè)涎拉;
3.在調(diào)試的時(shí)候應(yīng)用的工作以及控制過(guò)程難跟蹤瑞侮;
4.觀察者需要提前知道通知名稱(chēng).
5.通知發(fā)出后,controller不能從觀察者獲得任何的反饋信息鼓拧。

KVO優(yōu)點(diǎn)
1.能夠提供一種簡(jiǎn)單的方法實(shí)現(xiàn)兩個(gè)對(duì)象間的同步半火。
2.能夠?qū)Ψ俏覀儎?chuàng)建的對(duì)象,即內(nèi)部對(duì)象的狀態(tài)改變作出響應(yīng).
KVO缺點(diǎn)
1.我們觀察的屬性必須使用strings來(lái)定義季俩。因此在編譯器不會(huì)出現(xiàn)警告以及檢查钮糖;
2.它只能用來(lái)對(duì)屬性作出反應(yīng),而不會(huì)用來(lái)對(duì)方法或者動(dòng)作作出反應(yīng).
3.需要手動(dòng)移除觀察者酌住。

五. 怎么實(shí)現(xiàn)在一個(gè)線程中同時(shí)執(zhí)行兩個(gè)任務(wù)店归?

怎么都做不到

六. BASE64的用法?

BASE64是網(wǎng)絡(luò)傳輸中最常用的編碼格式 - 用來(lái)將二進(jìn)制的數(shù)據(jù)編碼成字符串的編碼方式.
1> 能夠編碼,能夠解碼.
2> 被很多的加密算法作為基礎(chǔ)算法.

七. 什么是消息推送

可以繞過(guò)運(yùn)營(yíng)商,通過(guò)標(biāo)準(zhǔn)TCP/IP網(wǎng)絡(luò)直接向這些手機(jī)發(fā)送消息.這些消息就稱(chēng)為推送消息.推送消息是通過(guò)Apple和Google掌控的互聯(lián)網(wǎng)服務(wù)器發(fā)送的.推送消息從根本上就是設(shè)計(jì)用于與應(yīng)用程序通信的.它們可以發(fā)送文本,多媒體文件和特定于應(yīng)用程序的數(shù)據(jù),例如警告聲音和顯示在應(yīng)用程序圖標(biāo)上的標(biāo)記等.

八. 使用coredata有哪幾種持久化存儲(chǔ)機(jī)制

  • 屬性列表
  • 對(duì)象歸檔
  • 數(shù)據(jù)庫(kù)存儲(chǔ)

九. 協(xié)議是什么 有什么作用

一系列方法的聲明,某個(gè)類(lèi)遵守了某個(gè)協(xié)議就擁有了該協(xié)議的所有方法的聲明.就必須實(shí)現(xiàn)協(xié)議中規(guī)定的@require的方法.

十.類(lèi)變量的@protected, @private,@public, @package聲明各有什么含義

  • @public本類(lèi)\子類(lèi)\在其他類(lèi)中都能訪問(wèn)
  • @protected本類(lèi)\子類(lèi)中訪問(wèn)
  • @private 私有的,只有本類(lèi)中能訪問(wèn)
  • @package 本包內(nèi)使用,跨包不可以.

純手動(dòng) 有地方是個(gè)人理解 有誤的地方希望大家能給指出 謝謝
大家面試中遇到的問(wèn)題 也可以留言分享
如果您喜歡 或者對(duì)您有點(diǎn)幫助 希望點(diǎn)一下喜歡 謝謝了~~

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末酪我,一起剝皮案震驚了整個(gè)濱河市消痛,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌都哭,老刑警劉巖秩伞,帶你破解...
    沈念sama閱讀 211,743評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異欺矫,居然都是意外死亡纱新,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,296評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門(mén)穆趴,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)脸爱,“玉大人,你說(shuō)我怎么就攤上這事未妹〔痉希” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 157,285評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵络它,是天一觀的道長(zhǎng)族檬。 經(jīng)常有香客問(wèn)我,道長(zhǎng)酪耕,這世上最難降的妖魔是什么导梆? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,485評(píng)論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上看尼,老公的妹妹穿的比我還像新娘递鹉。我一直安慰自己,他們只是感情好藏斩,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,581評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布躏结。 她就那樣靜靜地躺著,像睡著了一般狰域。 火紅的嫁衣襯著肌膚如雪媳拴。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 49,821評(píng)論 1 290
  • 那天兆览,我揣著相機(jī)與錄音屈溉,去河邊找鬼。 笑死抬探,一個(gè)胖子當(dāng)著我的面吹牛子巾,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播小压,決...
    沈念sama閱讀 38,960評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼线梗,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了怠益?” 一聲冷哼從身側(cè)響起仪搔,我...
    開(kāi)封第一講書(shū)人閱讀 37,719評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎蜻牢,沒(méi)想到半個(gè)月后烤咧,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,186評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡孩饼,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,516評(píng)論 2 327
  • 正文 我和宋清朗相戀三年髓削,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了竹挡。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片镀娶。...
    茶點(diǎn)故事閱讀 38,650評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖揪罕,靈堂內(nèi)的尸體忽然破棺而出梯码,到底是詐尸還是另有隱情,我是刑警寧澤好啰,帶...
    沈念sama閱讀 34,329評(píng)論 4 330
  • 正文 年R本政府宣布轩娶,位于F島的核電站,受9級(jí)特大地震影響框往,放射性物質(zhì)發(fā)生泄漏鳄抒。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,936評(píng)論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望许溅。 院中可真熱鬧瓤鼻,春花似錦、人聲如沸贤重。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,757評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)并蝗。三九已至祭犯,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間滚停,已是汗流浹背沃粗。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,991評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留键畴,地道東北人陪每。 一個(gè)月前我還...
    沈念sama閱讀 46,370評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像镰吵,于是被迫代替她去往敵國(guó)和親檩禾。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,527評(píng)論 2 349

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

  • *面試心聲:其實(shí)這些題本人都沒(méi)怎么背,但是在上海 兩周半 面了大約10家 收到差不多3個(gè)offer,總結(jié)起來(lái)就是把...
    Dove_iOS閱讀 27,131評(píng)論 30 470
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語(yǔ)法疤祭,類(lèi)相關(guān)的語(yǔ)法盼产,內(nèi)部類(lèi)的語(yǔ)法,繼承相關(guān)的語(yǔ)法勺馆,異常的語(yǔ)法戏售,線程的語(yǔ)...
    子非魚(yú)_t_閱讀 31,598評(píng)論 18 399
  • iOS面試小貼士 ———————————————回答好下面的足夠了------------------------...
    不言不愛(ài)閱讀 1,966評(píng)論 0 7
  • 多線程、特別是NSOperation 和 GCD 的內(nèi)部原理草穆。運(yùn)行時(shí)機(jī)制的原理和運(yùn)用場(chǎng)景灌灾。SDWebImage的原...
    LZM輪回閱讀 2,004評(píng)論 0 12
  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn)悲柱,斷路器锋喜,智...
    卡卡羅2017閱讀 134,633評(píng)論 18 139