2020前端面试题集-vue向
2020下半年并不顺利,产品被其他平台诉讼下架,于是公司解散了无收益且吃钱的技术团队。突发事件显然超出了我的预期计划,在边玩边玩边玩边看题了大半月后,开始踏上面试之路。\n这里集合一下本人遇到的全部面试题,题目顺序按照面试流程和出现频率降序,若是有点名气的厂会加名称。
自我介绍#
这环节的面试官一般分为两种情况:
-
已看过简历了解情况后,通过自我介绍看个人总结能力和突出亮点
-
未看简历,想直接获取个人技术栈等情况,选择问题
此时介绍并不建议将简历内容完整复述一遍,没有营养啊。尽量控制介绍时间在 3 分钟以内,我将这环节提炼出以下几点:
-
个人技术栈
-
杰出项目或处理过的最有成就感的问题(挑一二稍微描述下,后续面试官有兴趣会追问)
-
工作中的软实力(促进团队协作、推动团队发展、带人经验、项目架构经验等)
-
日常如何提升自我(可以是技术方面,可以是其他方面,主要看个人的学习能动性和学习方式)
-
拿得出手的开源项目
以上挑 3、4 点介绍基本就 ok 了,尽量简洁,抓重点
基础#
-
无论直接问或者拐弯问,总之基本必问 —— 字节、哈喽
- 宏任务、微任务有哪些
- 宏任务如何处理(每次执行几个)
-
也是必问 —— 字节、美团
- jsonp 原理、优劣
- img 标签 src 能否使用
- cors 如何设置
- jsonp 原理、优劣
-
建议做到手写 —— 携程
- 浅拷贝如何实现(es5, es6)
- 深拷贝如何处理循环引用
-
throttle && debounce
建议手写
- 原理,应用场景,手写
-
- 手动实现,区别
-
css 水平垂直居中布局
也属于基本必考点 —— 字节、美团
-
this 的指向
- 什么是变量提升
- Promise
建议根据 A+原理手写
- 原理实现
- 与 async 区别
- 外部 try catch 能否捕获异常
- 扩展方法的意义(all\race\finally\any)
- Set\Map
- 数据结构
- 应用场景
- 隐式转换如何触发(== + !…)
- 类型转换的规则
-
instanceof 原理
-
重绘重排
框架#
-
必问的,建议多看源码。有些面试官会将其与双向绑定混淆,可以顺带一起说 —— 字节、美团、哈喽
- 直接对 data 中数组的索引修改,是否会变化
- 增删对象属性,是否会变化
- 对数组类型的处理
- 为什么不对数组做依赖收集
-
vue 的 key 有什么作用
- 不加 key 有什么影响
- 就地复用比重新创建性能高,如何选择
-
vue diff 算法如何处理
-
组件通信方式
- 依赖注入的实现
-
nextTick 原理
- 如何实现在 dom 更新后执行(MutationObserver)
- 在事件流中的执行位置
-
computed 与 watch
- 区别、取舍
- computed 的缓存机制
- computed 能否被赋值
-
虚拟 dom
- 原理,与原生 dom 区别
-
keep-alive
- 生命周期
- 原理
-
父子组件渲染顺序
- 生命周期执行顺序
- 通过 props 传递的数据,在父组件哪个阶段请求
-
vue-router
- 常用的 mode,如何实现
- 浏览器回退按钮的事件
- hash 和 history 的优缺点,如何选择
- 如何修改 hash
- vuex
- mutation 与 action 区别
- react
没看这方面的题,所以没让面试官问太多
- react hooks 优缺点
- redux 与其他状态管理框架的比较
网络#
字节对网络方面问的较多
-
导航栏输入内容点击回车后发生的事
-
请求响应头有哪些内容(字段)
-
缓存机制
-
restful 了解
建议从阮一峰的 restful 架构开始看,api 代表表现层状态转换的方式
- 如何设计 restful 规范的 api
- 请求方法如何使用
- options 方法的用途
-
前后端鉴权的方式有哪些
- 如何理解 jwt
- cookie 鉴权的优劣
- 页面对不同角色的处理
-
ssr 服务端渲染
- ssr 与传统的 jsp、php,同样是服务端出页面,有什么区别
- 生命周期
- 如何获取数据
- 应用场景
其他#
-
页面性能优化
-
webpack 优化
-
babel 相关
- 用途、原理
- Object.assign()被 babel 处理后的语法
- Promise 被 babel 处理后的语法
-
webpack 相关
- 由哪些模块构成
- 常用的 webpack 插件有哪些
- loader 的作用、原理
- css-loader 和 style-loader 区别
-
- webp 兼容性如何解决
-
express 与 koa 的区别
- 中间件如何调用
- app.use 执行顺序
- 如何选择
-
小程序
- Taro 原理,遇到的坑点
- 各平台小程序的区别
- 小程序优化方案
-
移动端页面
- 如何解决 1px 问题
- rem 布局与 vw 布局
- click 300ms 延迟问题
- flex 布局
-
html2canvas
- 如何解决生成复杂图片会阻塞主线程问题
-
对于用户输入内容如何过滤
-
如何设计一个完全解耦的组件
-
对一个项目的前端架构思路
-
项目中最困难的点,如何克服
-
最近学习的内容是什么
-
react\vue\express\js 等等的最近动向,更新内容
-
面试官会根据个人做过的项目询问要点,记得提前整理出项目的细节
笔试(包括算法)#
薪资#
说实话,并不会谈,都是根据目标薪资莽着要(很少计算),导致劳资错过了几家 offer