經(jīng)典面試

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

Objecitve-C的重要特性是Runtime(運(yùn)行時(shí)),在#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);
代碼交換兩個(gè)方法,在寫unit test時(shí)使用到成翩。

2觅捆、 對(duì)于Objective-C,你認(rèn)為它最大的優(yōu)點(diǎn)和最大的不足是什么捕传?對(duì)于不足之處惠拭,現(xiàn)在有沒有可用的方法繞過這些不足來實(shí)現(xiàn)需求。如果可以的話庸论,你有沒有考慮或者實(shí)踐過重新實(shí)現(xiàn)OC的一些功能职辅,如果有,具體會(huì)如何做聂示?

最大的優(yōu)點(diǎn)是它的運(yùn)行時(shí)特性域携,不足是沒有命名空間,對(duì)于命名沖突鱼喉,可以使用長命名法或特殊前綴解決秀鞭,如果是引入的第三方庫之間的命名沖突趋观,可以使用link命令及flag解決沖突。

3锋边、 你用過NSOperationQueue么皱坛?如果用過或者了解的話,你為什么要使用NSOperationQueue豆巨,實(shí)現(xiàn)了什么剩辟?請描述它和GCD的區(qū)別和類似的地方(提示:可以從兩者的實(shí)現(xiàn)機(jī)制和適用范圍來描述)。

使用NSOperationQueue用來管理子類化的NSOperation對(duì)象往扔,控制其線程并發(fā)數(shù)目贩猎。GCD和NSOperation都可以實(shí)現(xiàn)對(duì)線程的管理,區(qū)別是NSOperation和NSOperationQueue是多線程的面向?qū)ο蟪橄笃继拧m?xiàng)目中使用NSOperation的優(yōu)點(diǎn)是NSOperation是對(duì)線程的高度抽象吭服,在項(xiàng)目中使用它,會(huì)使項(xiàng)目的程序結(jié)構(gòu)更好蝗罗,子類化NSOperation的設(shè)計(jì)思路艇棕,是具有面向?qū)ο蟮膬?yōu)點(diǎn)(復(fù)用、封裝)绿饵,使得實(shí)現(xiàn)是多線程支持欠肾,而接口簡單瓶颠,建議在復(fù)雜項(xiàng)目中使用拟赊。
項(xiàng)目中使用GCD的優(yōu)點(diǎn)是GCD本身非常簡單、易用粹淋,對(duì)于不復(fù)雜的多線程操作吸祟,會(huì)節(jié)省代碼量,而Block參數(shù)的使用桃移,會(huì)是代碼更為易讀屋匕,建議在簡單項(xiàng)目中使用。
更詳細(xì)的答案見我的這篇文章

4借杰、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)面爛了…)

NSNotification是通知模式在iOS的實(shí)現(xiàn)杰刽,KVO的全稱是鍵值觀察(Key-value
observing),其是基于KVC(key-value coding)的菠发,KVC是一個(gè)通過屬性名訪問屬性變量的機(jī)制。例如將Module層的變化贺嫂,通知到多個(gè)Controller對(duì)象時(shí)滓鸠,可以使用NSNotification;如果是只需要觀察某個(gè)對(duì)象的某個(gè)屬性第喳,可以使用KVO哥力。
對(duì)于委托模式,在設(shè)計(jì)模式中是對(duì)象適配器模式墩弯,其是delegate是指向某個(gè)對(duì)象的吩跋,這是一對(duì)一的關(guān)系,而在通知模式中渔工,往往是一對(duì)多的關(guān)系锌钮。委托模式,從技術(shù)上可以現(xiàn)在改變delegate指向的對(duì)象引矩,但不建議這樣做梁丘,會(huì)讓人迷惑,如果一個(gè)delegate對(duì)象不斷改變旺韭,指向不同的對(duì)象氛谜。

5、如何把一張大圖縮小為1/4大小的縮略圖区端?
let data = UIImageJPEGRepresentation(image, 0.25)

6值漫、NSOperation 相比于GCD 有哪些優(yōu)勢?

提供了在GCD 中不那么容易復(fù)制的有用特性织盼。
可以很方便的取消一個(gè)NSOperation的執(zhí)行
可以更容易的添加任務(wù)的依賴關(guān)系
提供了任務(wù)的狀態(tài):isExecuteing, isFinished.

7杨何、SDWebImage具體如何實(shí)現(xiàn)?

其實(shí)就是沙盒緩存機(jī)制沥邻,主要由三塊組成:內(nèi)存圖片緩存危虱,內(nèi)存操作緩存,磁盤沙盒緩存唐全。
①埃跷、利用NSOperationQueue和NSOperation下載圖片,還使用了GCD(解析GIF圖片)邮利。
②弥雹、利用URL作為key,NSOperation作為value.
③近弟、利用URL作為key缅糟,UIImage作為value

8、AFNetWorking實(shí)現(xiàn)原理祷愉。

基于NSURL.采用block的方法處理請求窗宦,直接返回的是json赦颇、XML數(shù)據(jù)。AFN直接操作對(duì)象是AFHTTPClient,是一個(gè)實(shí)現(xiàn)了NSCoding和NSCopying協(xié)議的NSObject子類赴涵。AFGTTPClient是一個(gè)封裝了一系列操作方法的工具類媒怯。AFN默認(rèn)沒有封裝同步請求,如果開發(fā)者需要使用同步請求髓窜,需要重寫相關(guān)的方法(getPath:parameters:failure)扇苞,對(duì)AFHTTPRequestOperation進(jìn)行同步處理。

9寄纵、App需要加載大量數(shù)據(jù)鳖敷,給服務(wù)器發(fā)送請求,但是服務(wù)器卡住了怎么辦程拭?

設(shè)置請求超時(shí)定踱,給用戶提示請求超時(shí),根據(jù)用戶操作再次請求恃鞋。

10崖媚、有些圖片加載比較慢怎么處理?你是怎么優(yōu)化程序的性能的恤浪?

①畅哑、圖片下載放在異步線程。
②水由、圖片下載過程使用占位圖片
③荠呐、如果圖片比較大,可以使用多線程斷點(diǎn)下載绷杜。

11直秆、怎么解決緩存池滿的問題?

iOS中不存在緩存池滿的情況鞭盟,通常在對(duì)象需要?jiǎng)?chuàng)建時(shí)才創(chuàng)建,比如UITableView中一般只會(huì)創(chuàng)建剛開始在屏幕中的cell瑰剃,之后都是從緩存池里取齿诉,不會(huì)再創(chuàng)建新對(duì)象。

12晌姚、控制器View的生命周期及相關(guān)函數(shù)是什么粤剧?你在開發(fā)中是如何使用的?

1挥唠、首先判斷控制器是否有視圖抵恋,如果沒有就調(diào)用loadView方法創(chuàng)建:通過storyBoard或者代碼。
2宝磨、隨后調(diào)用viewDidLoad弧关,可以進(jìn)行下一步的初始化操作盅安,只會(huì)被調(diào)用一次。
3世囊、在視圖顯示之前調(diào)用viewWillAppear,該函數(shù)可以多次調(diào)用别瞭。
4、視圖viewDidAppear
5株憾、在布局變化前后蝙寨,調(diào)用viewWill/DidLayoutSubViews處理相關(guān)信息。

13嗤瞎、是否使用Core Text 或者Core Image 墙歪?

Core Text
隨意修改文本的樣式
圖文混排(純C語言)
Core Image(濾鏡處理)
能夠調(diào)節(jié)圖片的各種屬性(對(duì)比度、色溫贝奇、色差等)

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

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

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末脑豹,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子衡查,更是在濱河造成了極大的恐慌瘩欺,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,542評(píng)論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件拌牲,死亡現(xiàn)場離奇詭異俱饿,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)塌忽,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,822評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門拍埠,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人土居,你說我怎么就攤上這事枣购。” “怎么了擦耀?”我有些...
    開封第一講書人閱讀 163,912評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵棉圈,是天一觀的道長。 經(jīng)常有香客問我眷蜓,道長分瘾,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,449評(píng)論 1 293
  • 正文 為了忘掉前任吁系,我火速辦了婚禮德召,結(jié)果婚禮上白魂,老公的妹妹穿的比我還像新娘。我一直安慰自己氏捞,他們只是感情好碧聪,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,500評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著液茎,像睡著了一般逞姿。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上捆等,一...
    開封第一講書人閱讀 51,370評(píng)論 1 302
  • 那天滞造,我揣著相機(jī)與錄音,去河邊找鬼栋烤。 笑死谒养,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的明郭。 我是一名探鬼主播买窟,決...
    沈念sama閱讀 40,193評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼薯定!你這毒婦竟也來了始绍?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,074評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤话侄,失蹤者是張志新(化名)和其女友劉穎亏推,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體年堆,經(jīng)...
    沈念sama閱讀 45,505評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡吞杭,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,722評(píng)論 3 335
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了变丧。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片芽狗。...
    茶點(diǎn)故事閱讀 39,841評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖锄贷,靈堂內(nèi)的尸體忽然破棺而出译蒂,到底是詐尸還是另有隱情,我是刑警寧澤谊却,帶...
    沈念sama閱讀 35,569評(píng)論 5 345
  • 正文 年R本政府宣布,位于F島的核電站哑芹,受9級(jí)特大地震影響炎辨,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜聪姿,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,168評(píng)論 3 328
  • 文/蒙蒙 一碴萧、第九天 我趴在偏房一處隱蔽的房頂上張望乙嘀。 院中可真熱鬧,春花似錦破喻、人聲如沸虎谢。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,783評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽婴噩。三九已至,卻和暖如春羽德,著一層夾襖步出監(jiān)牢的瞬間几莽,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,918評(píng)論 1 269
  • 我被黑心中介騙來泰國打工宅静, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留章蚣,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,962評(píng)論 2 370
  • 正文 我出身青樓姨夹,卻偏偏與公主長得像纤垂,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子磷账,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,781評(píng)論 2 354

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

  • *面試心聲:其實(shí)這些題本人都沒怎么背,但是在上海 兩周半 面了大約10家 收到差不多3個(gè)offer,總結(jié)起來就是把...
    Dove_iOS閱讀 27,140評(píng)論 30 470
  • 父類實(shí)現(xiàn)深拷貝時(shí)峭沦,子類如何實(shí)現(xiàn)深度拷貝。父類沒有實(shí)現(xiàn)深拷貝時(shí)够颠,子類如何實(shí)現(xiàn)深度拷貝熙侍。? 深拷貝同淺拷貝的區(qū)別:淺拷...
    JonesCxy閱讀 1,004評(píng)論 1 7
  • ? 深拷貝同淺拷貝的區(qū)別:淺拷貝是指針拷貝,對(duì)一個(gè)對(duì)象進(jìn)行淺拷貝履磨,相當(dāng)于對(duì)指向?qū)ο蟮闹羔樳M(jìn)行復(fù)制蛉抓,產(chǎn)生一個(gè)新的指向...
    WSGNSLog閱讀 1,254評(píng)論 0 1
  • 我有過不少面試和被面試的經(jīng)歷,作為面試官出這份面試題從來就不是為了難倒面試者剃诅,而是為了多角度全面的了解面試者從而建...
    貝勒老爺閱讀 1,848評(píng)論 1 18
  • 原理很簡單,就是通過一個(gè)http請求告訴花生殼服務(wù)器你的ip地址和要綁定的域名: 這里USERNAME PASSW...
    Neucrack閱讀 12,171評(píng)論 0 0