- 相關推薦
高級ios工程師面試題
ISO高級工程師在求職面試中,想要的到面試官的肯定,那么做好面試準備,了解面試題很有必要。下面陽光網(wǎng)小編已經(jīng)為你們整理了高級ios工程師面試題,希望可以幫到你。
1. 怎么修改只讀(readonly)屬性變量
使用KVC可以修改 kvc就是鍵值編碼(key-value),可以通過指定的key獲得想要的值value,而不是通過調(diào)用 Setter,Getter 方法訪問
2.KVO 除了能觀察屬性外,能不能觀察對象
不能觀察對象
KVO,即 Key-Value Observing, 它提供一種機制,當指定的對象的屬性被修改后,則對象就會接受到通知。簡單的說就是每次指定的被觀察者的對象的屬性被修改后,KVO就會自動通知相應的觀察者了
KVO是一個對象能過觀察另外一個對象的屬性的值,并且能夠發(fā)現(xiàn)值的變化。這是一個對象與另一個對象保持同步的一種方法,即當另一種對象的狀態(tài)發(fā)生改變時,觀察對象馬上做出反應。它只能用來對屬性做出反應,而不會用來對方法或者動作做出反應。
實現(xiàn)原理:當為某個對象屬性注冊監(jiān)聽的時候,該對象的 isa 指針就會指向一個中間類,而不是本來對象真實的類。所以說,對象的 isa 指針可以改變,我們的程序最好不要依賴 isa 指針。
簡言而之就是:
1.當一個 object 有觀察者時沒動態(tài)創(chuàng)建這個 object 的類的子類
2.對于每一個被觀察的 property, 重寫其 set 方法
3.在重寫的 set 方法中調(diào)用- willChangeValueForKey:和- didChangeValueForKey:通知觀察者
4.當一個 property 沒有觀察者時,刪除重寫方法
5.當一個 boserver 觀察任何一個 property 時,刪除動態(tài)創(chuàng)建的子類
3.block里面能不能修改靜態(tài)變量
能 __block 可以 ---> 為什么要用__block
你可以指定引入一個變量為可更改的,即讀-寫的,通過應用__block存儲類型修改修飾符。
局部變量的__block的存儲和register,auto,static等存儲類型相似,但它們之間不兼容。
__block 變量保存在變量共享的作用域范圍內(nèi),所有的 blocks 和 block 副本都聲明或創(chuàng)建在和變量的作用于相同范圍內(nèi)。所以,如果任何 blocks 副本聲明在棧內(nèi)并未超出棧的結束時,該存儲會讓棧幀免于被破壞(比如封裝為以后執(zhí)行)。同一作用域范圍內(nèi)給定的多個 block 可以同時使用一個共享變量作為一種優(yōu)化, block 存儲在棧上面,就像blocks本身一樣。如果使用 Block_copy 拷貝了 block 得一個副本(或者在 objective-C里面給 block 發(fā)送了一條 copy 消息),變量會被拷貝到堆上面。所以一個__ block 變量的地址可以隨時間推移而更改。
使用 __block的變量有兩個限制:
1.它們不能是可變長的數(shù)組
2.它們不能是包含有 C99可變瘡毒的數(shù)組變量的數(shù)據(jù)結構
高級ios工程師面試題(二)
1.你使用過Objective-C的運行時編程(Runtime Programming)么?如果使用過,你用它做了什么?你還能記得你所使用的相關的頭文件或者某些方法的名稱嗎?
2.你實現(xiàn)過多線程的Core Data么?NSPersistentStoreCoordinator,NSManagedObjectContext和NSManagedObject中的哪些需要在線程中創(chuàng)建或者傳遞?你是用什么樣的策略來實現(xiàn)的?
3.Core開頭的系列的內(nèi)容。是否使用過CoreAnimation和CoreGraphics。UI框架和CA,CG框架的聯(lián)系是什么?分別用CA和CG做過些什么動畫或者圖像上的內(nèi)容。(有需要的話還可以涉及Quartz的一些內(nèi)容)
4.是否使用過CoreText或者CoreImage等?如果使用過,請談談你使用CoreText或者CoreImage的體驗。
5.NSNotification和KVO的區(qū)別和用法是什么?什么時候應該使用通知,什么時候應該使用KVO,它們的實現(xiàn)上有什么區(qū)別嗎?如果用protocol和delegate(或者delegate的Array)來實現(xiàn)類似的功能可能嗎?如果可能,會有什么潛在的問題?如果不能,為什么?(雖然protocol和delegate這種東西面試已經(jīng)面爛了…)
6.你用過NSOperationQueue么?如果用過或者了解的話,你為什么要使用NSOperationQueue,實現(xiàn)了什么?請描述它和G.C.D的`區(qū)別和類似的地方(提示:可以從兩者的實現(xiàn)機制和適用范圍來描述)。
7.既然提到G.C.D,那么問一下在使用G.C.D以及block時要注意些什么?它們兩是一回事兒么?block在ARC中和傳統(tǒng)的MRC中的行為和用法有沒有什么區(qū)別,需要注意些什么?
8.您是否做過異步的網(wǎng)絡處理和通訊方面的工作?如果有,能具體介紹一些實現(xiàn)策略么?
9.對于objective-c,你認為它最大的優(yōu)點和最大的不足是什么?對于不足之處,現(xiàn)在有沒有可用的方法繞過這些不足來實現(xiàn)需求。如果可以的話,你有沒有考慮或者實踐過重新實現(xiàn)OC的一些功能,如果有,具體會如何做?
10.你實現(xiàn)過一個框架或者庫以供別人使用么?如果有,請談一談構建框架或者庫時候的經(jīng)驗;如果沒有,請設想和設計框架的public的API,并指出大概需要如何做、需要注意一些什么方面,來使別人容易地使用你的框架。
高級ios工程師面試題(三)
1.寫一下UIButton與UITableView的層級結構
2.Cocoa的Foundation對象與Core Foundation對象通過什么關鍵字進行轉換?這些關鍵字有什么區(qū)別?
3.KVO是什么?內(nèi)部是怎么實現(xiàn)的?
4.是否可以把比較耗時的操作放在NSNotificationCenter中處理?為什么?應該如何處理?
5.利用NSOperation與NSOperationQueue處理多線程時,有3個NSOperation分別為A,B,C,要求A,B執(zhí)行完之后,才執(zhí)行C,如何做?
6.在非ARC中,可以對哪些對象加上autorelease關鍵字,它的作用是什么?被autorelease修飾的.對象什么時候釋放?
7詳細說明一下App啟動過程,從main文件開始說起.main中有什么函數(shù),幾個參數(shù),作用是什么?
8C高級ios工程師面試題nimation是做什么的?寫一下它的層級結構(主要是寫下其各種子類)?
9.iOS7之前,后臺執(zhí)行內(nèi)容有幾種形式,都是什么?
10.一個有序的序列M,判斷其中是否有兩個元素A,B的和為K?如何判斷三個元素的A,B,C的和為K呢?
【高級ios工程師面試題】相關文章:
ios高級面試題及答案04-02
ios面試題及答案201804-29
高級java工程師面試題04-06
.net高級工程師面試題04-08
net高級工程師面試題05-10
php高級工程師面試題05-10
java高級工程師面試題及答案04-05
php高級工程師面試題目05-10
java高級面試題04-06