iOS-面試題整理(一)

  1. 請解釋以下代碼是什么意思:
typedef __attribute__((NSObject)) CGGradientRef GradientObject;
@property (nonatomic, strong) GradientObject storedGradient;

資料1
資料2
資料3


2.NSNtification和KVO的區(qū)別和用法是什么?什么時候該使用通知莺禁,什么時候應(yīng)該使用KVO留量,它們的實現(xiàn)上有什么區(qū)別嗎?如果用protocol和delegate(或者delegate的Array)來實現(xiàn)類似的功能可能嗎哟冬?如果可能楼熄,會有什么潛在的問題?如果不能浩峡,為什么可岂?

NSNotification是通知模式在iOS的實現(xiàn),KVO的全稱是鍵值觀察(Key-value observing),其是基于KVC(key-value coding)的翰灾,KVC是一個通過屬性名訪問屬性變量的機(jī)制缕粹。例如將Model層的變化,通知到多個Controller對象時纸淮,可以使用NSNotification平斩;如果是只需要觀察某個對象的某個屬性,可以使用KVO咽块。
對于委托代理模式绘面,在設(shè)計模式中是對象適配器模式,其是delegate是指向某個對象的,這是一對一的關(guān)系揭璃,而在通知模式中晚凿,往往是一對多的關(guān)系。委托代理模式塘辅,從技術(shù)上可以現(xiàn)在改變delegate指向的對象,但不建議這樣做皆撩,會讓人迷惑扣墩,如果一個delegate對象不斷改變,指向不同的對象扛吞。

資料1


3.應(yīng)用的多線程方式是什么呻惕,能熟練的列舉出以往開發(fā)工作中的多線程處理場景?
資料1


4.iOS開發(fā)過程中的安全機(jī)制有哪些滥比,列舉出亚脆,在項目開發(fā)中用過嗎?用過的話請列舉出來盲泛。
資料1


5.Core開頭的系列的內(nèi)容濒持,是否使用過CoreAnimation和CoreGraphics,UI框架和CA寺滚,CG框架的聯(lián)系是什么柑营?分別用CA和CG做過什么動畫或者圖像上的內(nèi)容。


6.數(shù)據(jù)持久化有哪些操作村视,在你的項目中有沒有應(yīng)用過官套,說一下應(yīng)用場景。


7.使用過Objective-C的運(yùn)行時編程(RunTime Programing)蚁孔?如果使用過奶赔,你用它做了什么?你還能記得你所使用的相關(guān)頭文件或者某些方法的名稱嗎杠氢?

Objecitve-C的重要特性是Runtime(運(yùn)行時),在#import <objc/runtime.h> 下能看到相關(guān)的方法站刑,用過objc_getClass()和class_copyMethodList()獲取過私有API;使用

Method method1 = class_getInstanceMethod(cls, sel1);
Method method2 = class_getInstanceMethod(cls, sel2);
method_exchangeImplementations(method1, method2);  

代碼交換兩個方法,在寫unit test時使用到鼻百。


8.有過運(yùn)動類應(yīng)用的開發(fā)經(jīng)驗嗎笛钝,說一下HealthKit類庫及運(yùn)動協(xié)處理器。


9.應(yīng)對項目中的bug你是怎么處理的愕宋,請簡述下crash日志分析玻靡;


10.自己封裝過SDK嗎?封裝過的話請說出封裝SDK的類型中贝,封裝原理囤捻。





  1. 是否使用過CoreText或者CoreImage等?如果使用過邻寿,請談?wù)勀闶褂肅oreText或者CoreImage的體驗蝎土。
    CoreText可以解決復(fù)雜文字內(nèi)容排版問題视哑。CoreImage可以處理圖片,為其添加各種效果誊涯。體驗是很強(qiáng)大挡毅,挺復(fù)雜的。
  1. 你用過NSOperationQueue么暴构?如果用過或者了解的話跪呈,你為什么要使用NSOperationQueue,實現(xiàn)了什么取逾?請描述它和GCD的區(qū)別和類似的地方(提示:可以從兩者的實現(xiàn)機(jī)制和適用范圍來描述)耗绿。
    使用NSOperationQueue用來管理子類化的NSOperation對象,控制其線程并發(fā)數(shù)目砾隅。GCD和NSOperation都可以實現(xiàn)對線程的管理误阻,區(qū)別是 NSOperation和NSOperationQueue是多線程的面向?qū)ο蟪橄蟆m椖恐惺褂肗SOperation的優(yōu)點是NSOperation是對線程的高度抽象晴埂,在項目中使用它究反,會使項目的程序結(jié)構(gòu)更好,子類化NSOperation的設(shè)計思路儒洛,是具有面向?qū)ο蟮膬?yōu)點(復(fù)用奴紧、封裝),使得實現(xiàn)是多線程支持晶丘,而接口簡單黍氮,建議在復(fù)雜項目中使用。
    項目中使用GCD的優(yōu)點是GCD本身非常簡單浅浮、易用沫浆,對于不復(fù)雜的多線程操作,會節(jié)省代碼量滚秩,而Block參數(shù)的使用专执,會是代碼更為易讀,建議在簡單項目中使用郁油。
  2. 既然提到GCD本股,那么問一下在使用GCD以及block時要注意些什么当窗?它們兩是一回事兒么夹纫?block在ARC中和傳統(tǒng)的MRC中的行為和用法有沒有什么區(qū)別,需要注意些什么矢渊?如何避免循環(huán)引用案站?
    使用block是要注意躬审,若將block做函數(shù)參數(shù)時,需要把它放到最后,GCD是Grand Central Dispatch承边,是一個對線程開源類庫遭殉,而Block是閉包,是能夠讀取其他函數(shù)內(nèi)部變量的函數(shù)博助。
  3. 您是否做過異步的網(wǎng)絡(luò)處理和通訊方面的工作险污?如果有,能具體介紹一些實現(xiàn)策略么富岳?
    使用NSOperation發(fā)送異步網(wǎng)絡(luò)請求蛔糯,使用NSOperationQueue管理線程數(shù)目及優(yōu)先級,底層是用NSURLConnetion城瞎,詳細(xì)可見開源框架LWConnetion渤闷。
  4. 對于Objective-C疾瓮,你認(rèn)為它最大的優(yōu)點和最大的不足是什么脖镀?對于不足之處,現(xiàn)在有沒有可用的方法繞過這些不足來實現(xiàn)需求狼电。如果可以的話蜒灰,你有沒有考慮或者實踐過重新實現(xiàn)OC的一些功能,如果有肩碟,具體會如何做强窖?
    最大的優(yōu)點是它的運(yùn)行時特性,不足是沒有命名空間削祈,對于命名沖突翅溺,可以使用長命名法或特殊前綴解決,如果是引入的第三方庫之間的命名沖突髓抑,可以使用link命令及flag解決沖突咙崎。
  5. 你實現(xiàn)過一個框架或者庫以供別人使用么?如果有吨拍,請談一談構(gòu)建框架或者庫時候的經(jīng)驗褪猛;如果沒有,請設(shè)想和設(shè)計框架的public的API羹饰,并指出大概需要如何做伊滋、需要注意一些什么方面,來使別人容易地使用你的框架队秩。
    抽象和封裝笑旺,方便使用。首先是對問題有充分的了解馍资,比如構(gòu)建一個文件解壓壓縮框架燥撞,從使用者的角度出發(fā),只需關(guān)注發(fā)送給框架一個解壓請求,框架完成復(fù)雜文件的解壓操作物舒,并且在適當(dāng)?shù)臅r候通知給是哦難過者色洞,如解壓完成、解壓出錯等冠胯。在框架內(nèi)部去構(gòu)建對象的關(guān)系火诸,通過抽象讓其更為健壯、便于更改荠察。其次是API的說明文檔置蜀。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市悉盆,隨后出現(xiàn)的幾起案子盯荤,更是在濱河造成了極大的恐慌,老刑警劉巖焕盟,帶你破解...
    沈念sama閱讀 211,042評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件秋秤,死亡現(xiàn)場離奇詭異,居然都是意外死亡脚翘,警方通過查閱死者的電腦和手機(jī)灼卢,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,996評論 2 384
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來来农,“玉大人鞋真,你說我怎么就攤上這事∥钟冢” “怎么了涩咖?”我有些...
    開封第一講書人閱讀 156,674評論 0 345
  • 文/不壞的土叔 我叫張陵,是天一觀的道長繁莹。 經(jīng)常有香客問我檩互,道長,這世上最難降的妖魔是什么蒋困? 我笑而不...
    開封第一講書人閱讀 56,340評論 1 283
  • 正文 為了忘掉前任盾似,我火速辦了婚禮,結(jié)果婚禮上雪标,老公的妹妹穿的比我還像新娘零院。我一直安慰自己,他們只是感情好村刨,可當(dāng)我...
    茶點故事閱讀 65,404評論 5 384
  • 文/花漫 我一把揭開白布告抄。 她就那樣靜靜地躺著,像睡著了一般嵌牺。 火紅的嫁衣襯著肌膚如雪打洼。 梳的紋絲不亂的頭發(fā)上龄糊,一...
    開封第一講書人閱讀 49,749評論 1 289
  • 那天,我揣著相機(jī)與錄音募疮,去河邊找鬼炫惩。 笑死,一個胖子當(dāng)著我的面吹牛阿浓,可吹牛的內(nèi)容都是我干的他嚷。 我是一名探鬼主播,決...
    沈念sama閱讀 38,902評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼芭毙,長吁一口氣:“原來是場噩夢啊……” “哼筋蓖!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起退敦,我...
    開封第一講書人閱讀 37,662評論 0 266
  • 序言:老撾萬榮一對情侶失蹤粘咖,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后侈百,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體瓮下,經(jīng)...
    沈念sama閱讀 44,110評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,451評論 2 325
  • 正文 我和宋清朗相戀三年设哗,在試婚紗的時候發(fā)現(xiàn)自己被綠了唱捣。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片两蟀。...
    茶點故事閱讀 38,577評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡网梢,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出赂毯,到底是詐尸還是另有隱情战虏,我是刑警寧澤,帶...
    沈念sama閱讀 34,258評論 4 328
  • 正文 年R本政府宣布党涕,位于F島的核電站烦感,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏膛堤。R本人自食惡果不足惜手趣,卻給世界環(huán)境...
    茶點故事閱讀 39,848評論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望肥荔。 院中可真熱鬧绿渣,春花似錦、人聲如沸燕耿。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,726評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽誉帅。三九已至淀散,卻和暖如春右莱,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背档插。 一陣腳步聲響...
    開封第一講書人閱讀 31,952評論 1 264
  • 我被黑心中介騙來泰國打工慢蜓, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人郭膛。 一個月前我還...
    沈念sama閱讀 46,271評論 2 360
  • 正文 我出身青樓胀瞪,卻偏偏與公主長得像,于是被迫代替她去往敵國和親饲鄙。 傳聞我的和親對象是個殘疾皇子凄诞,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,452評論 2 348

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