时长1h,项目+八股+算法。最后算法有一点点问题,虽然没有全a出来但是面试官说总体还行,可能会有二面~
复盘一下
1.了解项目
2.flowable的底层原理,流程推演过程
3.vue-router多页面划分怎么实现
4.哈希模式原理
5.哈希模式和历史模式区别
6.登录注册和权限怎么和路由做绑定
7.项目别的亮点
8.localStorage和sessionStorage
9.还知道什么存储方式
10.有比较系统的了解过性能优化吗
11.如何量化页面性能,有哪些指标?如何计算(好像api说错了哈哈)
12.performanceObserver?为什么有了performance还要有performanceObserver?(这个很新鲜啊,面试官大概给我讲了一下,学习了)
performanceObserver是一种发布订阅模式,如果页面要持续监听performance就需要去轮询performance api,但是performanceObserver这种模式不需要这么麻烦。(具体的内容大家下来查查,我也去查查)
13.事件循环
14.事件循环输出题,很综合,见下图
15.面试官解释requestAnimationFrame,很详细
数据量大了,浏览器为什么会卡顿?只要代码执行量大就会卡顿。浏览器的一帧中,主线程会去执行事件循环,比如几毫秒执行宏任务,几毫秒清理微任务,剩下一些时间处理io或者推进新的任务,执行完之后就会执行requestAnimationFrame,这个既不属于宏任务也不属于微任务,只要一帧有空闲时间就可以去执行这个。但是当数据量大的时候,代码执行量比较大,执行比较慢,并且UI渲染也比较慢,因此JS线程阻塞了渲染线程,requestAnimationFrame执行的也比较慢,所以就有卡顿了。因此这个语句的执行可能在下图的setTimeout之前也有可能在后面,具体要看你当时的线程有没有被阻塞(具体内容后面梳理一下)
算法题:
给一个节点数组构成的树结构(不一定是二叉树),删除对应子树,结构举例如下
[{id:1, parent: null},
{id:2, parent: 1},
{id:3, parent: 1},
{id:4, parent: 2}]
#拼多多##25届暑期实习##前端##我的实习求职记录##软件开发2024笔面经#