美文网首页
iOS面试总结

iOS面试总结

作者: 拉链扣 | 来源:发表于2020-07-20 23:35 被阅读0次

    最近要开始面试了,写个随便做一些记录,方便日后总结使用,话不多说直接进去主题

    一、WKWebview相关的问题问的还是比较多的,针对问过的问题,做一个小的整理。

    1、webview的加载流程是怎样的?

    初始化 ——— 建立连接、服务器处理 ——— 页面框架渲染 ——— JS加载 ——— JS解析、编译、执行 ——— 数据呈现

    webview展示流程

    美团的技术团队对webview的说明真的不错,请参考

    2、复杂URL页面加载 如何优化

    其实优化的问题是基于webview的加载流程去操作的,webview的加载方式相较于native,在交互上体验是差一点的,优化可以在加载过程中的每一步都去做。复杂的页面在我看来侧重点应该是在第二三个阶段的区别。具体如下,

    · 预先下载离线包,达到立即展示的效果 ,但是需要主要安全性的问题(经过加密和校验,防止运营商和第三方对其劫持篡改)

    · 客户端代替请求 但是有个问题:WKWebView 无法使用 NSURLProtocol 拦截 http 请求。不过网上有相应的方法,这个我理解有限。

    这个问题我觉得是考察你解决问题的能力,以上的回答虽然比较笼统,但是至少能体验出思考问题的能力和对webview相关知识有最基本的了解。

    3、与JS的交互 

    这个的话就比较基础了

    · OC调用JS方法

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

    · JS调用OC

    需要的类 WKUserContentController 协议 WKScriptMessageHandler ,双方约定好方法名,调用之后走的代理  -(void)userContentController:(WKUserContentController*)userContentController didReceiveScriptMessage:(WKScriptMessage*)message

    需要注意的事WKUserContentController 需要 释放add和remove成对出现避免内存泄露WKUserContentController*userCC=config.userContentController;                                              [userCC addScriptMessageHandler:selfname:@"showMobile"];                                                [userCC removeScriptMessageHandlerForName:@"showMobile"];

    参考链接

    二、runtime相关知识

    runtime是OC精华的部分,当然也是面试必不能少的,网上对runtime的总结感觉已经很到位了,但是给我的感觉的就是这部分内容会让你抽象,对一部分开发者来说理解起来确实有难度,包括我自己也觉得了解的也不是很深入,好在我们可以肆无忌惮的汲取前辈们的结论。

    相关文章

      网友评论

          本文标题:iOS面试总结

          本文链接:https://www.haomeiwen.com/subject/tjrukktx.html