iOS筆記--基礎(chǔ)面試題 01

問題:

1.淺復(fù)制和深復(fù)制的區(qū)別?

答案:

淺層復(fù)制:只復(fù)制指向?qū)ο蟮闹羔樈惆纾粡?fù)制引用對(duì)象本身组橄。

深層復(fù)制:復(fù)制引用對(duì)象本身。意思就是說我有個(gè)A對(duì)象政己,復(fù)制一份后得到A_copy對(duì)象后酌壕,對(duì)于淺復(fù)

制來說,A和A_copy指向的是同一個(gè)內(nèi)存資源歇由,復(fù)制的只不過是是一個(gè)指針卵牍,對(duì)象本身資源還是只有

一份,那如果我們對(duì)A_copy執(zhí)行了修改操作,那么發(fā)現(xiàn)A引用的對(duì)象同樣被修改沦泌,這其實(shí)違背了我們復(fù)

制拷貝的一個(gè)思想糊昙。深復(fù)制就好理解了,內(nèi)存中存在了兩份獨(dú)立對(duì)象本身。用網(wǎng)上一哥們通俗的話將就

是:淺復(fù)制好比你和你的影子谢谦,你完蛋释牺,你的影子也完蛋深復(fù)制好比你和你的克隆人,你完蛋回挽,你的克

隆人還活著没咙。


問題:

2.類別的作用?繼承和類別在實(shí)現(xiàn)中有何區(qū)別千劈?

答案:

category可以在不獲悉祭刚,不改變?cè)瓉泶a的情況下往里面添加新的方法,只能添加墙牌,不能刪除

修改涡驮。并且如果類別和原來類中的方法產(chǎn)生名稱沖突,則類別將覆蓋原來的方法喜滨,因?yàn)轭悇e具有更高的

優(yōu)先級(jí)鹦马。類別主要有3個(gè)作用:

(1)將類的實(shí)現(xiàn)分散到多個(gè)不同文件或多個(gè)不同框架中练湿。

(2)創(chuàng)建對(duì)私有方法的前向引用叙谨。

(3)向?qū)ο筇砑臃钦絽f(xié)議嚼隘。

繼承可以增加,擴(kuò)展父類方法辜膝,并且可以增加屬性陌凳。


問題:

3.類別和類擴(kuò)展的區(qū)別。

答案:

category和extensions的不同在于后者可以添加屬性内舟。另外后者添加的方法是必須要實(shí)現(xiàn)的。

extensions可以認(rèn)為是一個(gè)私有的Category初橘。


問題:

4.oc中的協(xié)議和java中的接口概念有何不同验游?

答案:

1> OC中的協(xié)議有2層含義充岛,官方定義為formal和informalprotocol。前者和Java接口一樣耕蝉。

informal protocol中的方法屬于設(shè)計(jì)模式考慮范疇崔梗,不是必須實(shí)現(xiàn)的,但是如果有實(shí)現(xiàn)垒在,就會(huì)改變類

的屬性蒜魄。其實(shí)關(guān)于正式協(xié)議,類別和非正式協(xié)議我很早前學(xué)習(xí)的時(shí)候大致看過场躯,也寫在了學(xué)習(xí)教程里

“非正式協(xié)議概念其實(shí)就是類別的另一種表達(dá)方式“這里有一些你可能希望實(shí)現(xiàn)的方法谈为,你可以使用他們

更好的完成工作”。這個(gè)意思是踢关,這些是可選的伞鲫。比如我門要一個(gè)更好的方法,我們就會(huì)申明一個(gè)這樣

的類別去實(shí)現(xiàn)签舞。然后你在后期可以直接使用這些更好的方法秕脓。這么看,總覺得類別這玩意兒有點(diǎn)像協(xié)議

的可選協(xié)議儒搭。"現(xiàn)在來看吠架,其實(shí)protocal已經(jīng)開始對(duì)兩者都統(tǒng)一和規(guī)范起來操作,因?yàn)橘Y料中說“非正式

協(xié)議使用interface修飾“搂鲫,現(xiàn)在我們看到協(xié)議中兩個(gè)修飾詞:“必須實(shí)現(xiàn)(@requied)”和“可選實(shí)現(xiàn)

(@optional)”傍药。

2>OC中的協(xié)議(formalprotocol)與java中的接口概念基本一致,OC中非正式協(xié)議(informal?

protocol)就是類別默穴。在java中如果繼承了接口怔檩,但不實(shí)現(xiàn)其方法,會(huì)得到一個(gè)error(無法編譯)蓄诽;在

OC中的正式協(xié)議薛训,如果不實(shí)現(xiàn),會(huì)得到一個(gè)warning(可編譯執(zhí)行)仑氛,如果想去除waring乙埃,還可以加

關(guān)鍵字(@optional),讓它可選實(shí)現(xiàn)方法锯岖。


問題:

5.What are KVO and KVC?


答案:kvc:鍵-值編碼是一種間接訪問對(duì)象的屬性使用字符串來標(biāo)識(shí)屬性介袜,而不是通過調(diào)用存取方法,

直接或通過實(shí)例變量訪問的機(jī)制出吹。很多情況下可以簡化程序代碼遇伞。apple文檔其實(shí)給了一個(gè)很好的例

子。kvo:鍵值觀察機(jī)制捶牢,他提供了觀察某一屬性變化的方法鸠珠,極大的簡化了代碼巍耗。具體用看到嗯哼用到

過的一個(gè)地方是對(duì)于按鈕點(diǎn)擊變化狀態(tài)的的監(jiān)控。比如我自定義的一個(gè)button

kvc是如何找key

對(duì)于系統(tǒng)是根據(jù)keypath去取的到相應(yīng)的值發(fā)生改變渐排,理論上來說是和kvc機(jī)制的道理是一樣的炬太。對(duì)于

kvc機(jī)制如何通過key尋找到value:“當(dāng)通過KVC調(diào)用對(duì)象時(shí),比如:[selfvalueForKey:@”someKey”]

時(shí)驯耻,程序會(huì)自動(dòng)試圖通過幾種不同的方式解析這個(gè)調(diào)用亲族。首先查找對(duì)象是否帶有someKey這個(gè)方法,

如果沒找到可缚,會(huì)繼續(xù)查找對(duì)象是否帶有someKey這個(gè)實(shí)例變量(iVar)霎迫,如果還沒有找到,程序會(huì)繼

續(xù)試圖調(diào)用-(id)valueForUndefinedKey:這個(gè)方法城看。如果這個(gè)方法還是沒有被實(shí)現(xiàn)的話女气,程序會(huì)拋出

一個(gè)NSUndefinedKeyException異常錯(cuò)誤。自總結(jié):為什么要把字典轉(zhuǎn)模型,因?yàn)榉乐谷≈禃r(shí)@"錯(cuò)誤",

所以轉(zhuǎn)模型取值時(shí)會(huì)有提示有最后機(jī)會(huì)響應(yīng)該請(qǐng)求.



問題:

6.代理的作用测柠?

答案:

代理的目的是改變或傳遞控制鏈炼鞠。允許一個(gè)類在某些特定時(shí)刻通知到其他類,而不需要獲取到那些類的指針轰胁≮酥鳎可以減少框架復(fù)雜度。另外一點(diǎn)赃阀,代理可以理解為java中的回調(diào)監(jiān)聽機(jī)制的一種類似霎肯。


問題:

7.What are mutable and immutable types in Objective C?

oc中可修改和不可以修改類型。


答案:

可修改不可修改的集合類榛斯。這個(gè)我個(gè)人簡單理解就是可動(dòng)態(tài)添加修改和不可動(dòng)態(tài)添加修改一樣观游。比如

NSArray和NSMutableArray。前者在初始化后的內(nèi)存控件就是固定不可變的驮俗,后者可以添加等懂缕,可以

動(dòng)態(tài)申請(qǐng)新的內(nèi)存空間。


問題:

8.When we call objective c is runtime language what does it mean?

我們說的oc是動(dòng)態(tài)運(yùn)行時(shí)語言是什么意思王凑?

答案:

多態(tài)搪柑。主要是將數(shù)據(jù)類型的確定由編譯時(shí),推遲到了運(yùn)行時(shí)索烹。這個(gè)問題其實(shí)淺涉及到兩個(gè)概念工碾,運(yùn)行時(shí)

和多態(tài)。簡單來說百姓,運(yùn)行時(shí)機(jī)制使我們直到運(yùn)行時(shí)才去決定一個(gè)對(duì)象的類別渊额,以及調(diào)用該類別對(duì)象指定

方法。多態(tài):不同對(duì)象以自己的方式響應(yīng)相同的消息的能力叫做多態(tài)。意思就是假設(shè)生物類(life)都

用有一個(gè)相同的方法-eat;那人類屬于生物端圈,豬也屬于生物焦读,都繼承了life后,實(shí)現(xiàn)各自的eat舱权,但是調(diào)

用是我們只需調(diào)用各自的eat方法。也就是不同的對(duì)象以自己的方式響應(yīng)了相同的消息(響應(yīng)了eat這個(gè)

選擇器)仑嗅。


9.what is difference between NSNotification and protocol?

問題:通知和協(xié)議的不同之處宴倍?

答案:協(xié)議有控制鏈(has-a)的關(guān)系,通知沒有仓技。首先我一開始也不太明白鸵贬,什么叫控制鏈(專業(yè)術(shù)語

了~)。但是簡單分析下通知和代理的行為模式脖捻,我們大致可以有自己的理解簡單來說阔逼,通知的話,它

可以一對(duì)多地沮,一條消息可以發(fā)送給多個(gè)消息接受者嗜浮。代理按我們的理解,到不是直接說不能一對(duì)多摩疑,比

如我們知道的明星經(jīng)濟(jì)代理人危融,很多時(shí)候一個(gè)經(jīng)濟(jì)人負(fù)責(zé)好幾個(gè)明星的事務(wù)。只是對(duì)于不同明星間雷袋,代

理的事物對(duì)象都是不一樣的吉殃,一一對(duì)應(yīng),不可能說明天要處理A明星要一個(gè)發(fā)布會(huì)楷怒,代理人發(fā)出處理發(fā)

布會(huì)的消息后蛋勺,別稱B的發(fā)布會(huì)了。但是通知就不一樣鸠删,他只關(guān)心發(fā)出通知抱完,而不關(guān)心多少接收到感興

趣要處理。因此控制鏈(has-a從英語單詞大致可以看出冶共,單一擁有和可控制的對(duì)應(yīng)關(guān)系乾蛤。

自總結(jié):只要指定的對(duì)象遵守了協(xié)議,實(shí)現(xiàn)了代理方法,那么該對(duì)象就成為了代理.

通知,只關(guān)心發(fā)出通知,而不關(guān)心多少接收到感興趣的事要處理.



10.What is push notification?

問題:什么是推送消息?


答案:捅僵。iOS中消息推送機(jī)制又叫消息機(jī)制家卖,其包括兩類:一類是本地通知;另一類是推送通知庙楚,也叫

遠(yuǎn)程通知上荡。兩種通知在iOS中的表現(xiàn)一致,可以通過橫幅或者彈出提醒兩種形式告訴用戶,并且點(diǎn)擊通

知可以會(huì)打開應(yīng)用程序酪捡,但是實(shí)現(xiàn)原理卻完全不同:本地通知是由本地應(yīng)用觸發(fā)的叁征,它是基于時(shí)間行為

的一種通知形式;和本地通知不同,推送通知是由應(yīng)用服務(wù)提供商發(fā)起的逛薇,通過蘋果的APNs(Apple?

Push NotificationServer)發(fā)送到應(yīng)用客戶端,如下圖


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末捺疼,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子永罚,更是在濱河造成了極大的恐慌啤呼,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,000評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件呢袱,死亡現(xiàn)場離奇詭異官扣,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)羞福,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,745評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門惕蹄,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人治专,你說我怎么就攤上這事卖陵。” “怎么了看靠?”我有些...
    開封第一講書人閱讀 168,561評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵赶促,是天一觀的道長。 經(jīng)常有香客問我挟炬,道長鸥滨,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,782評(píng)論 1 298
  • 正文 為了忘掉前任谤祖,我火速辦了婚禮婿滓,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘粥喜。我一直安慰自己凸主,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,798評(píng)論 6 397
  • 文/花漫 我一把揭開白布额湘。 她就那樣靜靜地躺著卿吐,像睡著了一般。 火紅的嫁衣襯著肌膚如雪锋华。 梳的紋絲不亂的頭發(fā)上嗡官,一...
    開封第一講書人閱讀 52,394評(píng)論 1 310
  • 那天,我揣著相機(jī)與錄音毯焕,去河邊找鬼衍腥。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的婆咸。 我是一名探鬼主播竹捉,決...
    沈念sama閱讀 40,952評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼尚骄!你這毒婦竟也來了块差?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,852評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤乖仇,失蹤者是張志新(化名)和其女友劉穎憾儒,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體乃沙,經(jīng)...
    沈念sama閱讀 46,409評(píng)論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,483評(píng)論 3 341
  • 正文 我和宋清朗相戀三年诗舰,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了警儒。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,615評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡眶根,死狀恐怖蜀铲,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情属百,我是刑警寧澤记劝,帶...
    沈念sama閱讀 36,303評(píng)論 5 350
  • 正文 年R本政府宣布,位于F島的核電站族扰,受9級(jí)特大地震影響厌丑,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜渔呵,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,979評(píng)論 3 334
  • 文/蒙蒙 一怒竿、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧扩氢,春花似錦耕驰、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,470評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至双饥,卻和暖如春媒抠,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背兢哭。 一陣腳步聲響...
    開封第一講書人閱讀 33,571評(píng)論 1 272
  • 我被黑心中介騙來泰國打工领舰, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 49,041評(píng)論 3 377
  • 正文 我出身青樓冲秽,卻偏偏與公主長得像舍咖,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子锉桑,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,630評(píng)論 2 359

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

  • *面試心聲:其實(shí)這些題本人都沒怎么背,但是在上海 兩周半 面了大約10家 收到差不多3個(gè)offer,總結(jié)起來就是把...
    Dove_iOS閱讀 27,165評(píng)論 30 470
  • C 部分 1.static 關(guān)鍵字的作用? 第一個(gè)作用:隱藏民轴。 當(dāng)我們同時(shí)編譯多個(gè)文件時(shí),所有未加static前綴...
    pingui閱讀 4,402評(píng)論 2 48
  • iOS面試題及答案 1. Object-c的類可以多重繼承么?可以實(shí)現(xiàn)多個(gè)接口么?Category是什么?重寫一...
    iOS_阿輝閱讀 1,915評(píng)論 0 32
  • 多線程攻柠、特別是NSOperation 和 GCD 的內(nèi)部原理。運(yùn)行時(shí)機(jī)制的原理和運(yùn)用場景后裸。SDWebImage的原...
    LZM輪回閱讀 2,009評(píng)論 0 12
  • 史上最全的iOS面試題及答案 iOS面試小貼士———————————————回答好下面的足夠了----------...
    Style_偉閱讀 2,360評(píng)論 0 35