iOS面試總結(jié)

最近要開始面試了,寫個隨便做一些記錄,方便日后總結(jié)使用,話不多說直接進去主題

一、WKWebview相關(guān)的問題問的還是比較多的,針對問過的問題,做一個小的整理。

1、webview的加載流程是怎樣的?

初始化 ——— 建立連接、服務(wù)器處理 ——— 頁面框架渲染 ——— JS加載 ——— JS解析、編譯、執(zhí)行 ——— 數(shù)據(jù)呈現(xiàn)

webview展示流程

美團的技術(shù)團隊對webview的說明真的不錯,請參考

2、復(fù)雜URL頁面加載 如何優(yōu)化

其實優(yōu)化的問題是基于webview的加載流程去操作的,webview的加載方式相較于native,在交互上體驗是差一點的,優(yōu)化可以在加載過程中的每一步都去做。復(fù)雜的頁面在我看來側(cè)重點應(yīng)該是在第二三個階段的區(qū)別。具體如下,

· 預(yù)先下載離線包,達到立即展示的效果 ,但是需要主要安全性的問題(經(jīng)過加密和校驗,防止運營商和第三方對其劫持篡改)

·?客戶端代替請求 但是有個問題:WKWebView 無法使用 NSURLProtocol 攔截 http 請求。不過網(wǎng)上有相應(yīng)的方法,這個我理解有限。

這個問題我覺得是考察你解決問題的能力,以上的回答雖然比較籠統(tǒng),但是至少能體驗出思考問題的能力和對webview相關(guān)知識有最基本的了解。

3、與JS的交互?

這個的話就比較基礎(chǔ)了

· OC調(diào)用JS方法

[webView evaluateJavaScript:@"******('abc')"completionHandler:^(id _Nullable data, NSError * _Nullable error) {if(error) { NSLog(@"error:%@",error); } }];

· JS調(diào)用OC

需要的類 WKUserContentController 協(xié)議?WKScriptMessageHandler ,雙方約定好方法名,調(diào)用之后走的代理??-(void)userContentController:(WKUserContentController*)userContentController didReceiveScriptMessage:(WKScriptMessage*)message

需要注意的事WKUserContentController 需要 釋放add和remove成對出現(xiàn)避免內(nèi)存泄露WKUserContentController*userCC=config.userContentController;? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? [userCC addScriptMessageHandler:selfname:@"showMobile"];? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??[userCC removeScriptMessageHandlerForName:@"showMobile"];

參考鏈接

二、runtime相關(guān)知識

runtime是OC精華的部分,當然也是面試必不能少的,網(wǎng)上對runtime的總結(jié)感覺已經(jīng)很到位了,但是給我的感覺的就是這部分內(nèi)容會讓你抽象,對一部分開發(fā)者來說理解起來確實有難度,包括我自己也覺得了解的也不是很深入,好在我們可以肆無忌憚的汲取前輩們的結(jié)論。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容