跳到主要内容

金山

面试题

  1. 自我介绍

  2. 实现 call 函数

  3. 实现 say.call.call 结果

  4. BFC 使用

  5. 三种隐藏方式差别 visibility:hidden,display:none,opacity:0 性能特定?

  6. 编码题

    /**
    * // 给定一个输入
    const entry = {
    a: {
    b: {
    c: {
    dd: 'abcdd',
    },
    },
    d: {
    xx: 'adxx',
    },
    e: 'ae',
    },
    };

    // 要求输出以下结果
    const output = {
    'a.b.c.dd': 'abcdd',
    'a.d.xx': 'adxx',
    'a.e': 'ae',
    };
    */
  7. 自我介绍,项目介绍;

  8. 项目中为什么要用Pinia不用Vuex;

  9. 项目中用了Iframe,讲一下CSP(Content-Security-Policy);

  10. 场景题:一个页面点击任何一个按钮,触发请求。这里考察事件捕获。

  11. 追问:如果我想取消掉呢?(这里一方面面试官那边信号不好没听清,也没理解是取消请求还是取消点击事件还是取消别的)

  12. 说一下事件循环,什么是宏任务,什么是微任务;

  13. Echarts怎么设置图例,怎么将折线图变为曲线图,怎么修改图的位置;

  14. 怎么把装饰器转为ES5的写法(之前只了解Python有装饰器,JS这块第一次听到);

  15. 场景题:一个组件被很多组件复用,怎么设置父子组件、或者祖孙组件通讯?用Vuex会有什么问题?

  16. 反问:技术栈?有什么需要提升的地方?多久有结果?

  17. 说下实习做的内容

  18. 自我介绍

  19. 实习的收获?

  20. 有自己感兴趣的方向吗?

  21. 平时怎么去接触到新技术的?

  22. 有自己目前在维护的项目吗?

  23. 做的项目有遇到什么难点吗?

  24. 国际化做了哪方面的事情?

  25. 怎么做多行文本溢出隐藏?如果浏览器不支持这个css属性呢?

  26. 代码高亮是怎么做的?

  27. 了解过代码高亮原理吗?我直接扯到babel的原理?词法分析,语义分析,ast,转换,生成,差不多就是跟编译原理相关的

  28. 怎么去提高脚本的加载速度?

  29. 如果要点击一个按钮去加载语言包,怎么做?我说了import()动态导入,如果浏览器不支持import()呢?讲了下import ()原理,其实就是创建个script脚本插入到页面中

  30. 你有用过ahooks和自定义hook,说说?

  31. 你刚才说到了用useLatest处理闭包?了解过怎么实现吗?useRef

  32. 说说react hook的限制?我还扯了下hooks源码,原理

  33. 说说了解的react性能优化手段?

  34. 说下项目中有哪些封装的比较复杂的组件?讲了可滑动的进度条组件和用better-scroll封装的滚动容器。

  35. 怎么实现一个轮播图?还说下无缝滚动原理

  36. 你用了虚拟列表,知道实现原理吗? 讲了列表项定高的实现思路:定位,算起始索引、终止索引,滚动事件,requestAnimationFrame,虚拟列表快速滚动会产生白屏,怎么处理?我说了骨架屏,还有其他方案吗?不会了

  37. 知道不定高的虚拟列表实现原理吗?磕磕巴巴说了一点,然后直接说不会

  38. 在项目中做过哪些性能优化?

  39. 怎么去减少回流重绘?批量操作样式,批量操作dom,documentFragment,css硬件加速,will-changes...,还有嘛?不知道了

  40. 说说分析项目的异常的思路?

  41. 有去优化或者了解过项目打包相关的吗?

面试流程

  1. 1 面基础问题
  2. 2 面项目经验工程化等
22%