一面 1小时4分钟 1.自我介绍 2. 原型链和类介绍与区别 3. 箭头函数 4. tS、装饰器介绍 5. 手写深拷贝,增加循环引用、depth和特殊类型处理 6. weakmap、map、obj 介绍与区别 7. vue源码中使用weakmap 和 set 的场景介绍,依赖收集结构变更理由,怎么清除的依赖。 8. compostion 和 options api 介绍与区别 9. 浏览器缓存,部署时文件具体的缓存类型 10. https、rsa 和aes 加密介绍,前端加密和 https加密区别,前端加密具体实现思路与场景 11. 介绍项目某个模块的整体思路与实现 12. 手写并发调度控制器
二面 1小时18分钟
- 自我介绍
- flex介绍
- BFC介绍,盒子宽高相等纯css实现(要求宽度是包含块的百分比) 4.dns介绍,查询流程,根服务器等细节
- udp和tcp介绍与区别,列举三个以上tcp可靠机制并介绍
- 事件循环
- promise输出判断
- curry/反curry介绍,手写通用curry化工厂函数,增加占位符实现
- 岛屿面积最大问题(leetcode原题) 1 后问
三面 59分钟
- 自我介绍
- 前沿前端技术栈了解情况
vite流程: Entry → Rollup bundling → Transform → Optimize → Output 3. 第一段实习工作介绍,问了其中有个地方为什么采用轮询而不是websocket,影响大吗 4. 前端安全(xSS,csrf) 5. vue源码编译流程,简单介绍 vue3 parse 后的 ast 树;编译优化介绍,靶向diff 如何处理 dom结构变化的情况 6. webpack 与 vite 介绍与区别,挑一个讲下他的流水线 7. 性能优化结合项目介绍,lighthouse fcp 的计算方式是什么 8. 手写属性访问函数(访问对象可能含有嵌套数组和对象)
大概是这样:get(obj, 'a[0].b.c[2].d') 实现这样一个函数,输入是一个对象(里面可能有嵌套数组和对象)和一个路径参数(字符串),然后要根据字符串取值返回对应的属性
- 反问