iOS面試知識(shí)點(diǎn)(一)

現(xiàn)在進(jìn)入本篇的正題。本篇的面試題是我認(rèn)為比較好的iOS開(kāi)發(fā)基礎(chǔ)知識(shí)點(diǎn)薇正,希望大家看過(guò)這后在理解的基礎(chǔ)上掌握而不是死記硬背片酝。死記硬背很快也會(huì)忘記的。


1 iOS基礎(chǔ)

1.1 父類實(shí)現(xiàn)深拷貝時(shí)挖腰,子類如何實(shí)現(xiàn)深度拷貝钠怯。父類沒(méi)有實(shí)現(xiàn)深拷貝時(shí),子類如何實(shí)現(xiàn)深度拷貝曙聂。

  • 1 深拷貝和淺拷貝的區(qū)別:淺拷貝是指針的拷貝晦炊,對(duì)一個(gè)對(duì)象的淺拷貝,相當(dāng)于對(duì)一個(gè)指針的復(fù)制宁脊,即兩個(gè)指針同時(shí)指向一個(gè)內(nèi)存地址,對(duì)象銷毀后兩個(gè)指針應(yīng)該同時(shí)滯空断国。深拷貝是對(duì)一個(gè)對(duì)象進(jìn)行拷貝,相當(dāng)于對(duì)對(duì)象進(jìn)行復(fù)制榆苞,產(chǎn)生一個(gè)新的對(duì)象稳衬,那么就有兩個(gè)指針?lè)謩e指向兩個(gè)對(duì)象。當(dāng)一個(gè)對(duì)象改變或者被銷毀后拷貝出來(lái)的新的對(duì)象不受影響坐漏。
  • 2 實(shí)現(xiàn)深拷貝需要實(shí)現(xiàn)NSCoying協(xié)議薄疚,實(shí)現(xiàn)- (id)copyWithZone:(NSZone *)zone 方法碧信。當(dāng)對(duì)一個(gè)property屬性含有copy修飾符的時(shí)候,在進(jìn)行賦值操作的時(shí)候?qū)嶋H上就是調(diào)用這個(gè)方法街夭。父類實(shí)現(xiàn)深拷貝之后砰碴,子類只要重寫(xiě)copyWithZone方法,在方法內(nèi)部調(diào)用父類的copyWithZone方法板丽,之后實(shí)現(xiàn)自己的屬性的處理呈枉。父類沒(méi)有實(shí)現(xiàn)深拷貝,子類除了需要對(duì)自己的屬性進(jìn)行處理埃碱,還要對(duì)父類的屬性進(jìn)行處理猖辫。
    1.2 KVO,NSNotification砚殿,delegate及block區(qū)別
  • 1 KVO就是cocoa框架實(shí)現(xiàn)的觀察者模式啃憎,一般同KVC搭配使用,通過(guò)KVO可以監(jiān)測(cè)一個(gè)值的變化似炎,比如View的高度變化荧飞。是一對(duì)多的關(guān)系,一個(gè)值的變化會(huì)通知所有的觀察者名党。
  • 2 NSNotification是通知,也是一對(duì)多的使用場(chǎng)景挠轴。在某些情況下传睹,KVO和NSNotification是一樣的,都是狀態(tài)變化之后告知對(duì)方岸晦。NSNotification的特點(diǎn)欧啤,就是需要被觀察者先主動(dòng)發(fā)出通知,然后觀察者注冊(cè)監(jiān)聽(tīng)后再來(lái)進(jìn)行響應(yīng)启上,比KVO多了發(fā)送通知的一步邢隧,但是其優(yōu)點(diǎn)是監(jiān)聽(tīng)不局限于屬性的變化,還可以對(duì)多種多樣的狀態(tài)變化進(jìn)行監(jiān)聽(tīng)冈在,監(jiān)聽(tīng)范圍廣倒慧,使用也更靈活。
  • 3 delegate 是代理包券,就是我不想做的事情交給別人做纫谅。比如狗需要吃飯,就通過(guò)delegate通知主人溅固,主人就會(huì)給他做飯付秕、盛飯、倒水侍郭,這些操作询吴,這些狗都不需要關(guān)心掠河,只需要調(diào)用delegate(代理人)就可以了,由其他類完成所需要的操作猛计。所以delegate是一對(duì)一關(guān)系唠摹。
  • 4 block是delegate的另一種形式,是函數(shù)式編程的一種形式有滑。使用場(chǎng)景跟delegate一樣跃闹,相比delegate更靈活,而且代理的實(shí)現(xiàn)更直觀毛好。
    KVO一般的使用場(chǎng)景是數(shù)據(jù)望艺,需求是數(shù)據(jù)變化,比如股票價(jià)格變化肌访,我們一般使用KVO(觀察者模式)找默。delegate一般的使用場(chǎng)景是行為,需求是需要?jiǎng)e人幫我做一件事情吼驶,比如買賣股票惩激,我們一般使用delegate。
    Notification一般是進(jìn)行全局通知蟹演,比如利好消息一出风钻,通知大家去買入。delegate是強(qiáng)關(guān)聯(lián)酒请,就是委托和代理雙方互相知道骡技,你委托別人買股票你就需要知道經(jīng)紀(jì)人,經(jīng)紀(jì)人也不要知道自己的顧客羞反。Notification是弱關(guān)聯(lián)布朦,利好消息發(fā)出,你不需要知道是誰(shuí)發(fā)的也可以做出相應(yīng)的反應(yīng)昼窗,同理發(fā)消息的人也不需要知道接收的人也可以正常發(fā)出消息是趴。
    1.3 將一個(gè)函數(shù)在主線程執(zhí)行的4種方法
    EB9B160A-713A-40DC-917E-74AFAF3DA160.png

    1.4 如何讓計(jì)時(shí)器調(diào)用一個(gè)類方法
    計(jì)時(shí)器只能調(diào)用實(shí)例方法,但是可以在這個(gè)實(shí)例方法里面調(diào)用靜態(tài)方法澄惊。
    使用計(jì)時(shí)器需要注意唆途,計(jì)時(shí)器一定要加入RunLoop中,并且選好model才能運(yùn)行掸驱。scheduledTimerWithTimeInterval方法創(chuàng)建一個(gè)計(jì)時(shí)器并加入到RunLoop中所以可以直接使用窘哈。
    如果計(jì)時(shí)器的repeats選擇YES說(shuō)明這個(gè)計(jì)時(shí)器會(huì)重復(fù)執(zhí)行,一定要在合適的時(shí)機(jī)調(diào)用計(jì)時(shí)器的invalid亭敢。不能在dealloc中調(diào)用滚婉,因?yàn)橐坏┰O(shè)置為repeats 為yes,計(jì)時(shí)器會(huì)強(qiáng)持有self帅刀,導(dǎo)致dealloc永遠(yuǎn)不會(huì)被調(diào)用让腹,這個(gè)類就永遠(yuǎn)無(wú)法被釋放远剩。比如可以在viewDidDisappear中調(diào)用,這樣當(dāng)類需要被回收的時(shí)候就可以正常進(jìn)入dealloc中了骇窍。
    1.5 如何重寫(xiě)類方法
  • 1 在子類中實(shí)現(xiàn)一個(gè)同基類名字一樣的靜態(tài)方法
  • 2 在調(diào)用的時(shí)候不要使用類名調(diào)用瓜晤,而是使用[self class]的方式調(diào)用。原理腹纳,用類名調(diào)用是早綁定痢掠,在編譯期綁定,用[self class]是晚綁定嘲恍,在運(yùn)行時(shí)決定調(diào)用哪個(gè)方法足画。
    1.6、多線程在實(shí)際現(xiàn)實(shí)中有哪些應(yīng)用佃牛?(網(wǎng)絡(luò)操作和大量圖片處理不算)
  • 1 通常耗時(shí)的操作都會(huì)放在子線程里處理淹辞,然后再回到主線程來(lái)顯示。下面舉幾個(gè)例子:
  • 2 我們要從數(shù)據(jù)庫(kù)提取數(shù)據(jù)還要將數(shù)據(jù)分組后顯示俘侠,那么就會(huì)開(kāi)個(gè)子線程來(lái)處理象缀,處理完成后才去刷新UI顯示。
  • 3 拍照后爷速,會(huì)在子線程處理圖片央星,完成后才回到主線程來(lái)顯示圖片。拍照出來(lái)的圖片太大了惫东,因此要做處理莉给。
  • 4 音頻、視頻處理會(huì)在子線程來(lái)操作
  • 5 文件較大時(shí)凿蒜,文件操作會(huì)在子線程中處理
  • 6 做客戶端與服務(wù)端數(shù)據(jù)同步時(shí),會(huì)在后臺(tái)閑時(shí)自動(dòng)同步
    **1.7readwrite胁黑,readonly废封,assign,retain丧蘸,copy漂洋,nonatomic屬性的作用 **
    @property是一個(gè)屬性訪問(wèn)聲明,擴(kuò)號(hào)內(nèi)支持以下幾個(gè)屬性:
  • 1 getter=getterName力喷,setter=setterName刽漂,設(shè)置setter與getter的方法名
  • 2 readwrite,readonly,設(shè)置可供訪問(wèn)級(jí)別
  • 3 assign弟孟,setter方法直接賦值贝咙,不進(jìn)行任何retain操作,為了解決原類型與環(huán)循引用問(wèn)題
  • 4 retain拂募,setter方法對(duì)參數(shù)進(jìn)行release舊值再retain新值庭猩,所有實(shí)現(xiàn)都是這個(gè)順序
  • 5 copy窟她,setter方法進(jìn)行Copy操作,與retain處理流程一樣蔼水,先舊值release震糖,再Copy出新的對(duì)象,retainCount為1趴腋。這是為了減少對(duì)上下文的依賴而引入的機(jī)制吊说。
    copy是在你不希望a和b共享一塊內(nèi)存時(shí)會(huì)使用到。a和b各自有自己的內(nèi)存.
    1.7优炬、什么是UDP和TCP的區(qū)別是什么颁井?
    TCP 的全稱是傳輸控制協(xié)議,這種協(xié)議可以提供面向連接的穿剖、可靠的蚤蔓、點(diǎn)到點(diǎn)的通信。
    UDP 的全稱是用戶數(shù)據(jù)包協(xié)議糊余。他可以提供非連接的不可靠的點(diǎn)懂啊多點(diǎn)的通信秀又,是osi參考模型中一種無(wú)連接的傳輸層協(xié)議,提供面向事務(wù)的簡(jiǎn)單的不可靠信息傳輸贬芥,_IETF RFC 768 是UDP 的正式規(guī)范吐辙;
    選擇何種協(xié)議,看程序注重那個(gè)方面蘸劈,可靠抑或快速昏苏。
    TCP/IP 建立連接的過(guò)程?
    在TCP/IP 協(xié)議中威沫,TCP協(xié)議提供可靠的連接服務(wù)贤惯,采用三次握手建立連接;
    第一次握手:建立連接時(shí)棒掠,客戶端發(fā)送連接請(qǐng)求到服務(wù)器孵构,并進(jìn)入SYN_SEND狀態(tài),等待服務(wù)器確認(rèn)烟很;
    第二次握手:服務(wù)器收到客戶端連接請(qǐng)求颈墅,向客戶端發(fā)送允許連接應(yīng)答,此時(shí)服務(wù)器進(jìn)入SYN_RECV狀態(tài)雾袱;
    第三次握手:客戶端收到服務(wù)器的允許連接應(yīng)答恤筛,向服務(wù)器發(fā)送確認(rèn),客戶端和服務(wù)器進(jìn)入通信狀態(tài)芹橡,完成三次握手毒坛。
    (所謂的三次握手,就是要有三次連接信息的發(fā)送林说、接收過(guò)程粘驰。TCP連的建立需要進(jìn)行三次連接信息的發(fā)送屡谐、接收。)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末蝌数,一起剝皮案震驚了整個(gè)濱河市愕掏,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌顶伞,老刑警劉巖饵撑,帶你破解...
    沈念sama閱讀 212,816評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件氮惯,死亡現(xiàn)場(chǎng)離奇詭異镜遣,居然都是意外死亡蜘腌,警方通過(guò)查閱死者的電腦和手機(jī)心铃,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,729評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)训裆,“玉大人抱慌,你說(shuō)我怎么就攤上這事霜威±业叮” “怎么了粹舵?”我有些...
    開(kāi)封第一講書(shū)人閱讀 158,300評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)骂倘。 經(jīng)常有香客問(wèn)我眼滤,道長(zhǎng),這世上最難降的妖魔是什么历涝? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,780評(píng)論 1 285
  • 正文 為了忘掉前任诅需,我火速辦了婚禮,結(jié)果婚禮上荧库,老公的妹妹穿的比我還像新娘堰塌。我一直安慰自己,他們只是感情好分衫,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,890評(píng)論 6 385
  • 文/花漫 我一把揭開(kāi)白布场刑。 她就那樣靜靜地躺著,像睡著了一般丐箩。 火紅的嫁衣襯著肌膚如雪摇邦。 梳的紋絲不亂的頭發(fā)上恤煞,一...
    開(kāi)封第一講書(shū)人閱讀 50,084評(píng)論 1 291
  • 那天屎勘,我揣著相機(jī)與錄音,去河邊找鬼居扒。 笑死概漱,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的喜喂。 我是一名探鬼主播瓤摧,決...
    沈念sama閱讀 39,151評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼竿裂,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了照弥?” 一聲冷哼從身側(cè)響起腻异,我...
    開(kāi)封第一講書(shū)人閱讀 37,912評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎这揣,沒(méi)想到半個(gè)月后悔常,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,355評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡给赞,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,666評(píng)論 2 327
  • 正文 我和宋清朗相戀三年机打,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片片迅。...
    茶點(diǎn)故事閱讀 38,809評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡残邀,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出柑蛇,到底是詐尸還是另有隱情芥挣,我是刑警寧澤,帶...
    沈念sama閱讀 34,504評(píng)論 4 334
  • 正文 年R本政府宣布唯蝶,位于F島的核電站九秀,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏粘我。R本人自食惡果不足惜鼓蜒,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,150評(píng)論 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望征字。 院中可真熱鬧都弹,春花似錦、人聲如沸匙姜。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,882評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)氮昧。三九已至框杜,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間袖肥,已是汗流浹背咪辱。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,121評(píng)論 1 267
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留椎组,地道東北人油狂。 一個(gè)月前我還...
    沈念sama閱讀 46,628評(píng)論 2 362
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親专筷。 傳聞我的和親對(duì)象是個(gè)殘疾皇子弱贼,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,724評(píng)論 2 351

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

  • *面試心聲:其實(shí)這些題本人都沒(méi)怎么背,但是在上海 兩周半 面了大約10家 收到差不多3個(gè)offer,總結(jié)起來(lái)就是把...
    Dove_iOS閱讀 27,135評(píng)論 30 470
  • 1.OC的類可以多重繼承嗎?可以實(shí)現(xiàn)多個(gè)接口嗎磷蛹?要想實(shí)現(xiàn)類似多重繼承如何實(shí)現(xiàn)吮旅?答:OC不可以實(shí)現(xiàn)多重繼承∥犊龋可以實(shí)現(xiàn)...
    歐辰_OSR閱讀 1,977評(píng)論 0 30
  • 父類實(shí)現(xiàn)深拷貝時(shí)鸟辅,子類如何實(shí)現(xiàn)深度拷貝。父類沒(méi)有實(shí)現(xiàn)深拷貝時(shí)莺葫,子類如何實(shí)現(xiàn)深度拷貝匪凉。? 深拷貝同淺拷貝的區(qū)別:淺拷...
    JonesCxy閱讀 995評(píng)論 1 7
  • ? 深拷貝同淺拷貝的區(qū)別:淺拷貝是指針拷貝,對(duì)一個(gè)對(duì)象進(jìn)行淺拷貝捺檬,相當(dāng)于對(duì)指向?qū)ο蟮闹羔樳M(jìn)行復(fù)制再层,產(chǎn)生一個(gè)新的指向...
    WSGNSLog閱讀 1,251評(píng)論 0 1
  • 淀粉攢肉。油堡纬,中溫聂受,辣椒。 雞蛋糕 中高火6分鐘烤镐。微波爐專用的塑料小盒蛋济,蓋蓋漏眼。放點(diǎn)蔥花和鹽炮叶,油碗旅。 疙瘩湯 涼水...
    歷奇閱讀 269評(píng)論 0 0