一面
自我介绍
略
八股
20分钟完成六道题目,并在之后需要描述自己的解题过程,同时会针对描述和题目完成额外提问
- 闭包输出题
- 闭包及其的作用
- this输出题(普通函数与箭头函数)
- 异步输出题
- Promise有什么实战场景
- 场景题:如何异步监听图片的请求状态并执行回调(Promise、Image构造函数、onload、onerror监听)
- 插入附加手写题:基于ES6实现的数组去重,并对比性能(我第一个是Set,第二个是遍历+include方法)
- 类似Vue源码的模板语法解析题,即给予数据源对象和一段字符串'a.b.c',读取数据源对象中对应的数据值
- 是否有其他实现方法
- 额外八股题:原型和原型链
- 说说结果和理解
Function.__proto__===Function.prototype
- 根据图片,使用flex布局实现展示效果
- CSS优先级题,给一段样式表,说最终基于层叠计算后的文本样式
实习经历
以下是基于我简历中提供的一些实习时开发的页面链接提问的
- 实习开发中的难点、亮点
- 问分页是如何做的,前端分页和后端分页区别和优缺点
- Tab切换栏如何实现的,是否能更优化
- 开发时拆分组件是怎么考虑的
- 复用和业务逻辑拆分
个人项目
- 看到我写的封装Axios
- Axios源码中拦截器是如何实现的
- 在拦截器方面,你是如何封装的
- 项目中懒加载时如何优化的
- 组件库按需加载
- 图片懒加载
- 两种实现方法(绑定滚动事件,IntersectionObserver),问这两种的优缺点,并最终总结实际开发如何使用(及结合优缺点,统一方案并解决缺陷)
反问环节
略
二面
自我介绍和个人情况了解
略
技术面试
- 个人项目中是如何基于浏览器渲染原理做性能优化的
- Tree-Shaking、丑化、Gzip压缩
- Gzip压缩的两种实现方式,Gzip压缩原理
- HTTP2优化
- 非关键CSS优化
- 个人能力中看到看过很多源码
- 看源码对你有什么影响吗,为什么要去看源码
- 举例:Vue2与Vue3的Diff算法,React和Vue的调度器(React时间分片的思想确实牛啤)
- 问为什么Vue不像React一样使用时间分片呢
- Vuex是如何做到对于异步修改数据的拦截警告的
手写题
- 尝试实现一下简易的VueRouter源码中的路由导航功能
- 简单来说就是next的才会执行下一步
- 如何修改成支持异步、如何实现跳转中断
- 实现一个函数,能够解析URL的信息
- 即解析params和hash等参数
- 估计也是想考察VueRouter的源码是如何实现这一功能的
反问环节
略