8月16日 兴业数金前端一面面经
1、因为项目中用到了防抖,所以面试官问我防抖的原理
2、然后面试官接着防抖问说,防抖里面用到了一个很重要的思想,是什么(当前环境中存在指向父级作用域的引用)
3、用闭包会产生什么后果(就平时代码里面,如果你用了很多闭包会产生什么后果)这我不知道,我就说我平时在写很多异步回调的时候用到闭包,用的太多可能代码不整洁...
4、还是接着防抖问,防抖和节流的区别(防抖:一定时间内只执行一次,如果再次出发则重新计算时间,即执行的都是最后一次触发的函数;节流:虽然也是一定时间只执行一次但它执行的是第一次触发的函数;我又说了防抖节流的应用场景)
5、这个是另一位面试官问的,好像是负责人:为什么学前端、你vue学了多久、vue双向数据绑定的原理、你有看它底层原理吗
6、可能刚面我的面试官有点事,所以那会儿才让另一位面试官问的,现在那个面试官回来了:你刚说到vue双向绑定的原理,2.0和3.0它有什么更新你知道吗(Object.defineProperty只是对对象的属性进行劫持、无法监听新增属性和删除属性、 深层对象的劫持需要一次性递归、劫持数组时需要重写覆盖部分 Array.prototype 原生方法,Proxy:真正的对对象本身进行劫持、可以监听到对象新增删除属性、只在 getter 时才对对象的下一层进行劫持(优化了性能)、能正确监听原生数组方法)
7、简历上写了HTML语义化,说说吧
8、说说定位,哪个会脱离文档流(absolute、fixed)
9、BFC(产生的条件、特点)
10、flex:1是什么(我刚开始只记得是和flex-grow、flex-shrink、flex-basis具体的值我忘了,我就说flex:1就是代表均匀分配元素; 后来找的别人的文章flex: 1 1 auto)
11、接着上面:在一个div中有三个子div,设置flex:1会达到什么效果呢? 我当时说的 高度和宽度会平分,面试官说是宽度,我忘记父元素要设置display:flex了
12、js的数据类型
13、如何判断一个数组是数组呢?instanceof原理?(原型链,用原型链会有一个问题,有个object,我把它的原型链指向数组,那怎么判断呢)
14、数组中forEach和map的区别(forEach没有返回值,不能break、continue;只想起来了这两个)
15、那forEach和for循环有什么区别呢(这我不是很清楚,我回答的和上个问题的答案差不多)
16、forEach和for循环都去使用return会达到什么效果
17、Promise和async的区别
18、浏览器的事件循环机制、宏任务、微任务
19、async、promise、setTimeout执行顺序,如果await后面还是个async 会产生什么问题就执行顺序来说,我说应该是在promise后面执行
20、应该还是接着上面的来问,setTimeout后面的时间是0代表什么意思,那如果setTimeout后面的时间设为6秒那它一定会是6秒之后执行吗?不一定,要考虑宏任务里面的耗时操作
21、简历上写熟悉http协议,http1.0和2.0的区别
22、http和https的区别,浏览器时如何保证CA证书是可靠的
23、浏览器缓存
24、get请求的缓存
24、看到你简历性能优化这里用到了cdn,cdn你了解有多少,cdn后面的两大技术