介于目前也在找工作,索性把一些公司對(duì)招人要求的技術(shù)型問題一一根據(jù)自己理解解答出來偿枕。
1.熟練掌握Http網(wǎng)絡(luò)請(qǐng)求框架璧瞬。
答: 對(duì)于這個(gè)問題簡(jiǎn)單可以看可以認(rèn)為是對(duì)AFNetworking 的庫(kù)的理解,關(guān)于AFNetWorking 相信網(wǎng)上有很多人都已經(jīng)深度剖析過渐夸,在此不過多闡述嗤锉。簡(jiǎn)單針對(duì)此問題來說就是 封裝使用AF的幾個(gè)方法如get,head,post,put,patch,delete,現(xiàn)在針對(duì)這幾個(gè)方法簡(jiǎn)單描述一下:
get 語(yǔ)意來說是獲取服務(wù)器資源,也就是我們常用的獲取請(qǐng)求資源
post 把數(shù)據(jù)提交給服務(wù)器捺萌,非等冪档冬。可以同時(shí)提交多個(gè)資源
put 也是把數(shù)據(jù)整體提交給數(shù)據(jù)庫(kù)桃纯,等冪酷誓。只針對(duì)一個(gè)資源進(jìn)行提交
head 獲取服務(wù)器支持的請(qǐng)求方法有哪些
patch 局部提交資源和put,put 是整體提交态坦,patch 是局部盐数。
delete 刪除服務(wù)器數(shù)據(jù)。
上面幾個(gè)方法大致解釋也是目前我所理解的伞梯,如有不妥之處玫氢,歡迎指出,相互學(xué)習(xí)谜诫。
這是AF請(qǐng)求方式層面的封裝漾峡,在深入一些會(huì)發(fā)現(xiàn)AF3.0對(duì)urlsession也進(jìn)行封裝,大概的一些方法就是 上傳(upload)喻旷,下載(download)生逸,請(qǐng)求(dataTask)資源。
簡(jiǎn)單解析一下就是 upload 就是把本地的一些如文件且预,數(shù)據(jù)(NSData)槽袄,或者是數(shù)據(jù)流上傳到服務(wù)器,
download 就是下載服務(wù)器數(shù)據(jù)锋谐,對(duì)應(yīng)的就是upload方法傳輸?shù)臄?shù)據(jù)遍尺,數(shù)據(jù)以filePath形式返回。
dataTask 就是我們正常http下載請(qǐng)求的涮拗,數(shù)據(jù)以responseObject形式返回
AF的其他類包含 安全方面乾戏,網(wǎng)絡(luò)監(jiān)聽,Serialization等等就不過多詳述
這就是我對(duì)這道題的剖析回答三热。
2.SQLite操作
SQLite 輕量級(jí)數(shù)據(jù)庫(kù)操作概括來說就是幾個(gè)字:增歧蕉,刪,改康铭,查惯退。數(shù)據(jù)庫(kù)底層最后都是把需要的語(yǔ)句進(jìn)行 executive 執(zhí)行起來操作數(shù)據(jù)庫(kù)。針對(duì)數(shù)據(jù)庫(kù)封裝的思路也是遵循這個(gè)道理从藤,上層API設(shè)計(jì)把這幾個(gè)操作單獨(dú)分開催跪。最后都用操作語(yǔ)句來執(zhí)行锁蠕,取回?cái)?shù)據(jù)庫(kù)數(shù)據(jù)完事!但是查是個(gè)例外懊蒸,因?yàn)椴檎Z(yǔ)句涉及到多條數(shù)據(jù)的情況荣倾,所以和其他三個(gè)語(yǔ)句略有區(qū)別,
3.json解析
比較出名的也是我自己經(jīng)常用的就是MJExtension骑丸,主要思想就是利用運(yùn)行時(shí)獲取model 屬性舌仍,然后把值“塞進(jìn)去”。說起來簡(jiǎn)單其實(shí)自己寫的時(shí)候就會(huì)發(fā)現(xiàn)一堆問題通危,比如model嵌套铸豁,判斷屬性類型等等都是關(guān)鍵點(diǎn)。MJ立馬有一個(gè)專門的類來枚舉出來屬于Foundation的類菊碟,其他的就是我們程序員自定義的類型了节芥。解決這個(gè)痛點(diǎn)就可以簡(jiǎn)單封裝屬于自己的json解析庫(kù)!
題外話:swfit 運(yùn)行時(shí)就失去效果逆害,所有關(guān)于runtime的都不可以用头镊。因?yàn)镾wift 是一門靜態(tài)語(yǔ)言,斷絕了OC消息傳遞方式過程中的一些不可控的bug魄幕。如果強(qiáng)行要在Swift 里面用也可以相艇,把所有的model設(shè)置為OC的model,剛開始學(xué)習(xí)Swift就想找到對(duì)應(yīng)的MJExtension方面的庫(kù)纯陨!可惜沒有完全類似MJ的厂捞。有一個(gè)用的比較好的就是HandyJson。具體底層用的是內(nèi)存地址偏移而非運(yùn)行時(shí)獲取model屬性队丝!可見封裝Handyjson對(duì)C的功底之深!