当前位置: 首页 > 面试经验 >

Zoom前端实习一面 60min

优质
小牛编辑
124浏览
2023-03-28

Zoom前端实习一面 60min

总结:面试官很会引导问题,会深挖项目 这次面试学到很多,感觉很多问题都回答不上来,但是还是给过了。

  1. 自我介绍

  2. 聊项目 说了webRtc websokcet 心跳包

  3. 如何维持websocket登录 深入 如何维持websocket登录时间 用户无感知

  4. 微信小程序登录流程

  5. 微信小程序登录方式 cookie token

  6. 登录的安全问题 CSRF攻击 XSS攻击

  7. CSRF攻击中文是什么 ,防范方式有哪些?

  8. 问webpack 的loader有哪些 你对loader的理解

  9. 说到了scss-loader 问scss-loader编译过程 (这个属实不知道)

  10. 模块问题 为什么会出现esmodule

  11. esmodule与commonjs区别

  12. esmodule在客户端js脚本能不能使用

  13. esmodule import 与export的原理

  14. 说跨域是什么

  15. 跨域资源共享的方式

  16. CORS的流程

  17. 复杂请求和简单请求的区别

  18. CORS当服务端的允许访问的源没有该请求的url时,浏览器会报错嘛 (我回答是报错,不知道对不对)

  19. 手写题 深拷贝一个对象 需要考虑function array与object 深入 深拷贝有什么问题(循环引用 解决方案使用set)继续深入使用set会用什么问题 (可能会造成内存泄漏,使用weakSet)

    function deepClone(obj, set = new WeakSet()) {
    if (typeof obj === "function")
    return new Function("return " + obj[key].toString())();
    if (typeof obj !== "object") return obj;
    let res = Object.prototype.toString.call(obj) === "[object Array]" ? [] : {};
    for (let key in obj) {
    let type = Object.prototype.toString.call(obj[key]);
    let sb = obj[key];
    if (type === "[object Array]" || "[object Object]") {
    if (!set.has(sb)) {
    set.add(sb);
    obj[key] = deepClone(sb, set);
    }
    } else if (type === "[object Function]") {
    res[key] = new Function("return " + sb.toString())();
    } else {
    res[key] = sb;
    }
    }

    return res;
    }
  20. 场景题:如果有这么一个搜索功能,需要将一个文本中的匹配的词高亮如何实现 (我就想到把匹配的文本用span标签包裹,然后设置样式) 深入 那如果我输入一段js代码呢? 会造成xss攻击 如何解决 (我就说了个转义 回答不上来)

#前端实习#
 类似资料: