金山
面试题
-
自我介绍
-
实现 call 函数
-
实现
say.call.call
结果 -
BFC 使用
-
三种隐藏方式差别
visibility:hidden
,display:none
,opacity:0
性能特定? -
编码题
/**
* // 给定一个输入
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',
};
*/ -
自我介绍,项目介绍;
-
项目中为什么要用Pinia不用Vuex;
-
项目中用了Iframe,讲一下CSP(Content-Security-Policy);
-
场景题:一个页面点击任何一个按钮,触发请求。这里考察事件捕获。
-
追问:如果我想取消掉呢?(这里一方面面试官那边信号不好没听清,也没理解是取消请求还是取消点击事件还是取消别的)
-
说一下事件循环,什么是宏任务,什么是微任务;
-
Echarts怎么设置图例,怎么将折线图变为曲线图,怎么修改图的位置;
-
怎么把装饰器转为ES5的写法(之前只了解Python有装饰器,JS这块第一次听到);
-
场景题:一个组件被很多组件复用,怎么设置父子组件、或者祖孙组件通讯?用Vuex会有什么问题?
-
反问:技术栈?有什么需要提升的地方?多久有结果?
-
说下实习做的内容
-
自我介绍
-
实习的收获?
-
有自己感兴趣的方向吗?
-
平时怎么去接触到新技术的?
-
有自己目前在维护的项目吗?
-
做的项目有遇到什么难点吗?
-
国际化做了哪方面的事情?
-
怎么做多行文本溢出隐藏?如果浏览器不支持这个css属性呢?
-
代码高亮是怎么做的?
-
了解过代码高亮原理吗?我直接扯到babel的原理?词法分析,语义分析,ast,转换,生成,差不多就是跟编译原理相关的
-
怎么去提高脚本的加载速度?
-
如果要点击一个按钮去加载语言包,怎么做?我说了import()动态导入,如果浏览器不支持import()呢?讲了下import ()原理,其实就是创建个script脚本插入到页面中
-
你有用过ahooks和自定义hook,说说?
-
你刚才说到了用useLatest处理闭包?了解过怎么实现吗?useRef
-
说说react hook的限制?我还扯了下hooks源码,原理
-
说说了解的react性能优化手段?
-
说下项目中有哪些封装的比较复杂的组件?讲了可滑动的进度条组件和用better-scroll封装的滚动容器。
-
怎么实现一个轮播图?还说下无缝滚动原理
-
你用了虚拟列表,知道实现原理吗? 讲了列表项定高的实现思路:定位,算起始索引、终止索引,滚动事件,requestAnimationFrame,虚拟列表快速滚动会产生白屏,怎么处理?我说了骨架屏,还有其他方案吗?不会了
-
知道不定高的虚拟列表实现原理吗?磕磕巴巴说了一点,然后直接说不会
-
在项目中做过哪些性能优化?
-
怎么去减少回流重绘?批量操作样式,批量操作dom,documentFragment,css硬件加速,will-changes...,还有嘛?不知道了
-
说说分析项目的异常的思路?
-
有去优化或者了解过项目打包相关的吗?
面试流程
- 1 面基础问题
- 2 面项目经验工程化等