国产精品亚洲综合久久系列,一本大道香蕉青青久久,播放高清的播放器,国产在线观看无码不卡

蜜蜂職場(chǎng)文庫 > 面試試題 >

高級(jí)ios工程師面試題_ios高級(jí)工程師面試題

時(shí)間: 小龍 面試試題

  ISO高級(jí)工程師在求職面試中,想要的到面試官的肯定,那么做好面試準(zhǔn)備,了解面試題很有必要。下面小編已經(jīng)為你們整理了高級(jí)ios工程師面試題,希望可以幫到你。

  高級(jí)ios工程師面試題(一)

  1. 怎么修改只讀(readonly)屬性變量

  使用KVC可以修改 kvc就是鍵值編碼(key-value),可以通過指定的key獲得想要的值value,而不是通過調(diào)用 Setter,Getter 方法訪問

  2.KVO 除了能觀察屬性外,能不能觀察對(duì)象

  不能觀察對(duì)象

  KVO,即 Key-Value Observing, 它提供一種機(jī)制,當(dāng)指定的對(duì)象的屬性被修改后,則對(duì)象就會(huì)接受到通知。簡(jiǎn)單的說就是每次指定的被觀察者的對(duì)象的屬性被修改后,KVO就會(huì)自動(dòng)通知相應(yīng)的觀察者了

  KVO是一個(gè)對(duì)象能過觀察另外一個(gè)對(duì)象的屬性的值,并且能夠發(fā)現(xiàn)值的變化。這是一個(gè)對(duì)象與另一個(gè)對(duì)象保持同步的一種方法,即當(dāng)另一種對(duì)象的狀態(tài)發(fā)生改變時(shí),觀察對(duì)象馬上做出反應(yīng)。它只能用來對(duì)屬性做出反應(yīng),而不會(huì)用來對(duì)方法或者動(dòng)作做出反應(yīng)。

  實(shí)現(xiàn)原理:當(dāng)為某個(gè)對(duì)象屬性注冊(cè)監(jiān)聽的時(shí)候,該對(duì)象的 isa 指針就會(huì)指向一個(gè)中間類,而不是本來對(duì)象真實(shí)的類。所以說,對(duì)象的 isa 指針可以改變,我們的程序最好不要依賴 isa 指針。

  簡(jiǎn)言而之就是:

  1.當(dāng)一個(gè) object 有觀察者時(shí)沒動(dòng)態(tài)創(chuàng)建這個(gè) object 的類的子類

  2.對(duì)于每一個(gè)被觀察的 property, 重寫其 set 方法

  3.在重寫的 set 方法中調(diào)用- willChangeValueForKey:和- didChangeValueForKey:通知觀察者

  4.當(dāng)一個(gè) property 沒有觀察者時(shí),刪除重寫方法

  5.當(dāng)一個(gè) boserver 觀察任何一個(gè) property 時(shí),刪除動(dòng)態(tài)創(chuàng)建的子類

  3.block里面能不能修改靜態(tài)變量

  能 __block 可以 ---> 為什么要用__block

  你可以指定引入一個(gè)變量為可更改的,即讀-寫的,通過應(yīng)用__block存儲(chǔ)類型修改修飾符。

  局部變量的__block的存儲(chǔ)和register,auto,static等存儲(chǔ)類型相似,但它們之間不兼容。

  __block 變量保存在變量共享的作用域范圍內(nèi),所有的 blocks 和 block 副本都聲明或創(chuàng)建在和變量的作用于相同范圍內(nèi)。所以,如果任何 blocks 副本聲明在棧內(nèi)并未超出棧的結(jié)束時(shí),該存儲(chǔ)會(huì)讓棧幀免于被破壞(比如封裝為以后執(zhí)行)。同一作用域范圍內(nèi)給定的多個(gè) block 可以同時(shí)使用一個(gè)共享變量作為一種優(yōu)化, block 存儲(chǔ)在棧上面,就像blocks本身一樣。如果使用 Block_copy 拷貝了 block 得一個(gè)副本(或者在 objective-C里面給 block 發(fā)送了一條 copy 消息),變量會(huì)被拷貝到堆上面。所以一個(gè)__ block 變量的地址可以隨時(shí)間推移而更改。

  使用 __block的變量有兩個(gè)限制:

  1.它們不能是可變長(zhǎng)的數(shù)組

  2.它們不能是包含有 C99可變瘡毒的數(shù)組變量的數(shù)據(jù)結(jié)構(gòu)

  高級(jí)ios工程師面試題(二)

  1.你使用過Objective-C的運(yùn)行時(shí)編程(Runtime Programming)么?如果使用過,你用它做了什么?你還能記得你所使用的相關(guān)的頭文件或者某些方法的名稱嗎?

  2.你實(shí)現(xiàn)過多線程的Core Data么?NSPersistentStoreCoordinator,NSManagedObjectContext和NSManagedObject中的哪些需要在線程中創(chuàng)建或者傳遞?你是用什么樣的策略來實(shí)現(xiàn)的?

  3.Core開頭的系列的內(nèi)容。是否使用過CoreAnimation和CoreGraphics。UI框架和CA,CG框架的聯(lián)系是什么?分別用CA和CG做過些什么動(dòng)畫或者圖像上的內(nèi)容。(有需要的話還可以涉及Quartz的一些內(nèi)容)

  4.是否使用過CoreText或者CoreImage等?如果使用過,請(qǐng)談?wù)勀闶褂肅oreText或者CoreImage的體驗(yàn)。

  5.NSNotification和KVO的區(qū)別和用法是什么?什么時(shí)候應(yīng)該使用通知,什么時(shí)候應(yīng)該使用KVO,它們的實(shí)現(xiàn)上有什么區(qū)別嗎?如果用protocol和delegate(或者delegate的Array)來實(shí)現(xiàn)類似的功能可能嗎?如果可能,會(huì)有什么潛在的問題?如果不能,為什么?(雖然protocol和delegate這種東西面試已經(jīng)面爛了…)

  6.你用過NSOperationQueue么?如果用過或者了解的話,你為什么要使用NSOperationQueue,實(shí)現(xiàn)了什么?請(qǐng)描述它和G.C.D的區(qū)別和類似的地方(提示:可以從兩者的實(shí)現(xiàn)機(jī)制和適用范圍來描述)。

  7.既然提到G.C.D,那么問一下在使用G.C.D以及block時(shí)要注意些什么?它們兩是一回事兒么?block在ARC中和傳統(tǒng)的MRC中的行為和用法有沒有什么區(qū)別,需要注意些什么?

  8.您是否做過異步的網(wǎng)絡(luò)處理和通訊方面的工作?如果有,能具體介紹一些實(shí)現(xiàn)策略么?

  9.對(duì)于objective-c,你認(rèn)為它最大的優(yōu)點(diǎn)和最大的不足是什么?對(duì)于不足之處,現(xiàn)在有沒有可用的方法繞過這些不足來實(shí)現(xiàn)需求。如果可以的話,你有沒有考慮或者實(shí)踐過重新實(shí)現(xiàn)OC的一些功能,如果有,具體會(huì)如何做?

  10.你實(shí)現(xiàn)過一個(gè)框架或者庫以供別人使用么?如果有,請(qǐng)談一談構(gòu)建框架或者庫時(shí)候的經(jīng)驗(yàn);如果沒有,請(qǐng)?jiān)O(shè)想和設(shè)計(jì)框架的public的API,并指出大概需要如何做、需要注意一些什么方面,來使別人容易地使用你的框架。

  高級(jí)ios工程師面試題(三)

  1.寫一下UIButton與UITableView的層級(jí)結(jié)構(gòu)

  2.Cocoa的Foundation對(duì)象與Core Foundation對(duì)象通過什么關(guān)鍵字進(jìn)行轉(zhuǎn)換?這些關(guān)鍵字有什么區(qū)別?

  3.KVO是什么?內(nèi)部是怎么實(shí)現(xiàn)的?

  4.是否可以把比較耗時(shí)的操作放在NSNotificationCenter中處理?為什么?應(yīng)該如何處理?

  5.利用NSOperation與NSOperationQueue處理多線程時(shí),有3個(gè)NSOperation分別為A,B,C,要求A,B執(zhí)行完之后,才執(zhí)行C,如何做?

  6.在非ARC中,可以對(duì)哪些對(duì)象加上autorelease關(guān)鍵字,它的作用是什么?被autorelease修飾的對(duì)象什么時(shí)候釋放?

  7詳細(xì)說明一下App啟動(dòng)過程,從main文件開始說起.main中有什么函數(shù),幾個(gè)參數(shù),作用是什么?

  8C高級(jí)ios工程師面試題nimation是做什么的?寫一下它的層級(jí)結(jié)構(gòu)(主要是寫下其各種子類)?

  9.iOS7之前,后臺(tái)執(zhí)行內(nèi)容有幾種形式,都是什么?

  10.一個(gè)有序的序列M,判斷其中是否有兩個(gè)元素A,B的和為K?如何判斷三個(gè)元素的A,B,C的和為K呢?

  
看了“高級(jí)ios工程師面試題”

49571