網(wǎng)易

一、代碼重構(gòu)基本思想

1.工作分塊細(xì)化?

2.小功能注意封裝竞思,大功能注意模塊化

3.項目文件結(jié)構(gòu)分層要明晰

4.命名可讀化


重構(gòu)


3.iCloud同步特性

?

概念:iCloud是蘋果提供的云端服務(wù)娘荡,用戶可以將通訊錄、備忘錄魁袜、郵件桩撮、照片、音樂慌核、視頻等備份到云服務(wù)器并在各個蘋果設(shè)備間直接進(jìn)行共享而無需關(guān)心數(shù)據(jù)同步問題距境,甚至即使你的設(shè)備丟失后在一臺新的設(shè)備上也可以通過Apple ID登錄同步。

蘋果已經(jīng)將云端存儲功能開放給開發(fā)者垮卓,可以存儲兩類數(shù)據(jù):

1.key-value data: 分享小量的非關(guān)鍵配置數(shù)據(jù)到應(yīng)用的多個實例垫桂,使用類似于NSUserDefault.

2.document:?存儲用戶文檔和應(yīng)用數(shù)據(jù)到用戶的iCloud賬戶

Cloud Kit :更像是一個數(shù)據(jù)庫,蘋果會提供一個dashboard作為云存儲的管理端。

Cloud Kit 基礎(chǔ)cloud kit一共有7個基礎(chǔ)類?

1.CKContainer:類似于應(yīng)用運行時的沙盒粟按,一個應(yīng)用只能訪問自己的沙盒诬滩,同樣的,一個應(yīng)用也只能訪問自己的Container灭将。

2.CKDatabase:很明顯就是數(shù)據(jù)庫疼鸟,他擁有私有數(shù)據(jù)庫公有數(shù)據(jù)庫兩種類型。用戶只能訪問自己的私有數(shù)據(jù)庫庙曙,一些不敏感的數(shù)據(jù)也可以存儲在公有數(shù)據(jù)庫中空镜。

3.CKRecord:就是數(shù)據(jù)庫中的一條數(shù)據(jù)記錄,他通過key-value的方式來存儲和獲取數(shù)據(jù)。

4.CKRecordZone:是用來保存Record的吴攒。所有的Record都是保存在這里张抄,應(yīng)用有一個默認(rèn)的zone,也可以自定義zone洼怔。

5.CKRecordIdentifier:是Record的唯一標(biāo)示署惯,用來確定Record在數(shù)據(jù)庫中的位置。

6.CKReference:是一種引用關(guān)系镣隶。

7.CKAsset:?為資源文件极谊,比如之前提到的照片就是用這種方式存儲的。

4.OC是動態(tài)語言安岂,主要體現(xiàn)在哪里轻猖?

OC常見的動態(tài)特性分為:動態(tài)類型(Dynamic typing),動態(tài)綁定(Dynamic binding),動態(tài)加載(Dynamic loading)

所謂運行時特性即只有在運行時才會進(jìn)行具體準(zhǔn)確識別的特性

動態(tài)類型:運行(時)后再決定對象的真正類型.

動態(tài)綁定:即在實例對象所真正歸屬類確定之后,將該類下某些屬性和相應(yīng)的方法綁定到真正的類的實例對象上域那。屬性和方法既包括類中實現(xiàn)的實現(xiàn)方法也包括非類中實現(xiàn)方法

動態(tài)綁定基于動態(tài)類型的,在某個實例對象被確定后,其類型便被確定了蜕依。其確定類型下對應(yīng)的屬性和響應(yīng)的消息(消息的響應(yīng))也完全確定。傳統(tǒng)函數(shù)一般在編譯時就已經(jīng)把參數(shù)信息和函數(shù)的實現(xiàn)打包到編譯后的源碼二進(jìn)制文件中,OC中并沒有將方法名與方法參數(shù)信息編譯進(jìn)入二進(jìn)制文件中,運行時oc中使用消息機制調(diào)用實例方法即向該實例指針發(fā)送消息琉雳,實例指針在收到消息后,從自身的實現(xiàn)文件中尋找響應(yīng)消息的方法友瘤。

動態(tài)加載:根據(jù)對資源的實際需求進(jìn)而加載相應(yīng)的資源 ,可實現(xiàn)內(nèi)存的優(yōu)化.(不同機型適配加載@2x圖片翠肘,@1x原圖)


5.OC的消息轉(zhuǎn)發(fā)機制是什么樣的?

本質(zhì)使用runtime進(jìn)行的方法替換辫秧,代碼編譯完之后束倍,都會轉(zhuǎn)化成C語言的代碼在運行時系統(tǒng)上運行;

方法的調(diào)用主要是通過objc_msgSend(...)方法簇完成的盟戏;objc_msgSend接收一個消息并調(diào)用的過程:消息的接收者如果本身類結(jié)構(gòu)中存在這個方法绪妹,就會直接被調(diào)用,不存在就在父類中尋找柿究,直到最終成功調(diào)用或者拋出unrecognized selector邮旷;

?


第二輪面試

1.Runloop是什么概念,有什么作用蝇摸?

Runloop:運行循環(huán)婶肩,即死循環(huán)。在應(yīng)用需要的時候跑起來運行貌夕,在用戶沒有操作的時候停下來休息律歼,充分節(jié)省CPU資源,提高程序性能啡专。

一般來說险毁,一個線程一次只能執(zhí)行一個任務(wù),執(zhí)行完成后線程就回退出,但是有時候我們需要線程能夠一直“待命”隨時處理事件而不退出畔况,這就需要一個機制來完成這樣的任務(wù)鲸鹦。

Runloop作用:

1.保持程序持續(xù)運行:例如程序一啟動就會開一個主線程,主線程一開起來就會跑一個主線程對應(yīng)的RunLoop,RunLoop保證主線程不會被銷毀问窃,也就保證了程序的持續(xù)運行亥鬓;

2.處理App中的各種事件(比如:觸摸事件,定時器事件域庇,Selector事件等 )嵌戈;

3.節(jié)省CPU資源,優(yōu)化程序性能:程序運行起來時,當(dāng)什么操作都沒有做的時候听皿,RunLoop就通知系統(tǒng)熟呛,現(xiàn)在沒有事情做,然后進(jìn)行休息待命狀態(tài)尉姨,這時系統(tǒng)就會將其資源釋放出來去做其他的事情庵朝。當(dāng)有事情做,也就是一有響應(yīng)的時候RunLoop就會立馬起來去做事情又厉;

RunLoop九府,最重要的作用,也就是用來管理線程的覆致≈堆可以說,沒有線程煌妈,也就沒有RunLoop的存在必要儡羔。當(dāng)線程的RunLoop一開啟,RunLoop便開始對線程進(jìn)行管理工作:在線程執(zhí)行完任務(wù)后璧诵,線程便會進(jìn)入休眠狀態(tài)汰蜘,并且不會退出,隨時等待新的任務(wù)之宿。

一個 RunLoop 包含若干個 Mode族操,每個 Mode 又包含若干個 Source/Timer/Observer

每次調(diào)用 RunLoop 的主函數(shù)時澈缺,只能指定其中一個 Mode坪创,這個Mode被稱作 CurrentMode。如果需要切換 Mode姐赡,只能退出 Loop莱预,再重新指定一個 Mode 進(jìn)入。這樣做主要是為了分隔開不同組的 Source/Timer/Observer项滑,讓其互不影響依沮。

Runloop五種模式



6.網(wǎng)絡(luò)請求用的是什么協(xié)議,網(wǎng)絡(luò)開源庫用的是哪個,內(nèi)部的原理危喉。

網(wǎng)絡(luò)請求用過HTTP/HTTPS和Socket協(xié)議

AFNetworking:并沒有為每一個請求創(chuàng)建一個線程宋渔,而是將每個請求封裝成一個NSOperation放到一個queue.每當(dāng)該operation執(zhí)行時,它都會在一個單獨的線程中創(chuàng)建NSURLConnection對象辜限,并監(jiān)聽所有的回調(diào)皇拣。由于網(wǎng)絡(luò)請求都是采用NSURLConnection或者NSURLSession的異步API,因此一個單一的處理線程已經(jīng)可以滿足需要薄嫡。

總之:AFNetworking其實是采用了NSOperationQueue+NSURLFoundation的異步API來完成高效的網(wǎng)絡(luò)請求氧急。


7.如何設(shè)置和獲取請求的cookies?

?ios的cookies存取


?8.平時開發(fā)中數(shù)據(jù)庫用的是哪個,如何實現(xiàn)讀寫隔離的毫深?

現(xiàn)在移動端的數(shù)據(jù)庫主要分兩個吩坝,SQLite和Realm,平時用的是SQLite哑蔫;說了一下SQLite通過GCD的一些API如何去實現(xiàn)讀寫隔離钉寝,主要是通過dispatch_barrier_async等隔離操作的API去實現(xiàn);


9.如何保證線程安全

線程安全:基礎(chǔ)

線程安全:進(jìn)階

10.如何進(jìn)行線程間通信


在1個進(jìn)程中闸迷,線程往往不是孤立存在的嵌纲,多個線程之間需要經(jīng)常進(jìn)行通信

線程間通信的體現(xiàn)

線程間通信詳解

一:1個線程傳遞數(shù)據(jù)給另1個線程

二:在1個線程中執(zhí)行完特定任務(wù)后,轉(zhuǎn)到另1個線程繼續(xù)執(zhí)行任務(wù)

例1:

回到主線程執(zhí)行腥沽,執(zhí)行self的showImage方法疹瘦,參數(shù)是image

[self performSelectorOnMainThread:@selector(showImage:) withObject:image waitUntilDone:YES];

回到xx線程執(zhí)行aSelector方法,參數(shù)是arg?

- (void)performSelector:(SEL)aSelector onThread:(NSThread *)thr withObject:(id)arg waitUntilDone:(BOOL)wait;

?

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末巡球,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子邓嘹,更是在濱河造成了極大的恐慌酣栈,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,104評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件汹押,死亡現(xiàn)場離奇詭異矿筝,居然都是意外死亡,警方通過查閱死者的電腦和手機棚贾,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,816評論 3 399
  • 文/潘曉璐 我一進(jìn)店門窖维,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人妙痹,你說我怎么就攤上這事铸史。” “怎么了怯伊?”我有些...
    開封第一講書人閱讀 168,697評論 0 360
  • 文/不壞的土叔 我叫張陵琳轿,是天一觀的道長。 經(jīng)常有香客問我,道長崭篡,這世上最難降的妖魔是什么挪哄? 我笑而不...
    開封第一講書人閱讀 59,836評論 1 298
  • 正文 為了忘掉前任,我火速辦了婚禮琉闪,結(jié)果婚禮上迹炼,老公的妹妹穿的比我還像新娘。我一直安慰自己颠毙,他們只是感情好斯入,可當(dāng)我...
    茶點故事閱讀 68,851評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著吟秩,像睡著了一般咱扣。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上涵防,一...
    開封第一講書人閱讀 52,441評論 1 310
  • 那天闹伪,我揣著相機與錄音,去河邊找鬼壮池。 笑死偏瓤,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的椰憋。 我是一名探鬼主播厅克,決...
    沈念sama閱讀 40,992評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼橙依!你這毒婦竟也來了证舟?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,899評論 0 276
  • 序言:老撾萬榮一對情侶失蹤窗骑,失蹤者是張志新(化名)和其女友劉穎女责,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體创译,經(jīng)...
    沈念sama閱讀 46,457評論 1 318
  • 正文 獨居荒郊野嶺守林人離奇死亡抵知,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,529評論 3 341
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了软族。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片刷喜。...
    茶點故事閱讀 40,664評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖立砸,靈堂內(nèi)的尸體忽然破棺而出掖疮,到底是詐尸還是另有隱情,我是刑警寧澤颗祝,帶...
    沈念sama閱讀 36,346評論 5 350
  • 正文 年R本政府宣布氮墨,位于F島的核電站纺蛆,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏规揪。R本人自食惡果不足惜桥氏,卻給世界環(huán)境...
    茶點故事閱讀 42,025評論 3 334
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望猛铅。 院中可真熱鬧字支,春花似錦、人聲如沸奸忽。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,511評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽栗菜。三九已至欠雌,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間疙筹,已是汗流浹背富俄。 一陣腳步聲響...
    開封第一講書人閱讀 33,611評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留而咆,地道東北人霍比。 一個月前我還...
    沈念sama閱讀 49,081評論 3 377
  • 正文 我出身青樓,卻偏偏與公主長得像暴备,于是被迫代替她去往敵國和親悠瞬。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,675評論 2 359

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

  • 1.ios高性能編程 (1).內(nèi)層 最小的內(nèi)層平均值和峰值(2).耗電量 高效的算法和數(shù)據(jù)結(jié)構(gòu)(3).初始化時...
    歐辰_OSR閱讀 29,417評論 8 265
  • OC語言基礎(chǔ) 1.類與對象 類方法 OC的類方法只有2種:靜態(tài)方法和實例方法兩種 在OC中涯捻,只要方法聲明在@int...
    奇異果好補閱讀 4,283評論 0 11
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理浅妆,服務(wù)發(fā)現(xiàn),斷路器障癌,智...
    卡卡羅2017閱讀 134,704評論 18 139
  • I guess it comes down to a simple choice:get busy living ...
    楚晰默閱讀 213評論 0 1
  • 每個Vimer都有自己的一個配置对省,猶如每個劍客都有自己的一把劍(應(yīng)該是吧)蝗拿。(爭取)作為一個傳說中的全棧開發(fā)者蒿涎,換...
    tamlok閱讀 2,304評論 0 12