面经记录
目录
vue 相关
mixin
相关场景以及利弊,拥有多个属性时的执行顺序,v-model
原理,在下拉选择器组件中是怎么实现的filter
怎么实现,使用场景- 插槽的实现原理,如何传值
v-for
中key
的作用,延伸到diff
实现,不同位置的比较vnode
概念v-if
控制dom
显隐时,vdom
是如何处理的watch
监听是的deep: true
实现原理nextTick
原理computed
和watch
的区别Vue.use
和Vue.install
Vue
中手动extend
data
中的属性是定义在MVVM
中的哪个环节
css 相关
- 回流和重绘的概念,绝对定位是否会导致回流
flex: 1
的分别代表什么属性以及作用- 伪元素和伪类的区别,分别有哪些
visibility: hidden
和opacity
是否触发点击事件
js 相关
let/const/var
区别,用const
声明对象时,是否可以改变对象的属性值,为什么- 深度优先搜索和广度优先搜索
- 如何证明
js
对象里存在循环引用 - 类型判断的方法,
typeof
对象的类属性 - 实例对象是否是
Function
,instanceof Function
结果 promise
执行顺序,事件循环es5
模拟class
的实现localStorage
如何实现过期时间- 手机号正则
工程化相关
- 介绍
webpack
常用的配置以及功能 webpack
多页面有多个入口时如何配置source-map
分类,如何配置和调试webpack
中怎么隔离css
- 性能优化方案,代码/打包/资源加载方面
- 热更新原理
概念类问题
http/https
区别- 介绍
options
请求的意义 MVVM/MVC
的区别,如何实现一个MVVM
- 简述
XSS
和CSRF
的概念,并列举几种安全防范策略
编程题
- 编写一个函数,大小写字母取反
const fn = (string) => {
let ans = ''
for (let v of string) {
ans += v.toLowerCase() === v ? v.toUpperCase() : v.toLowerCase()
}
return ans
}
- 编写一个函数,输入
int
型,返回整数逆序后的字符串 - 二维数组扁平化,返回一个去重且是升序的一维数组
场景题
- 数据多、加载慢的解决方式
- 缓存
- 懒加载
- 生产环境发布后,发现客户那边并没有更新到最新版,从哪些方面排查?
- 时间戳保持最新
- 强缓存/协商缓存
- 禁止缓存
axios
需要对所有接口进行增加请求头之类的字段时,怎么处理?- 一个按钮含有异步请求,如何防止多次点击重复提交?
- 防抖及其实现,引申节流,描述区别及使用场景
- 增加禁用属性,
loading/disabled
- a 页面跳转到 b 页面然后重定向到 c 页面,可能会在 b 页面做登录逻辑或者记录数据(相当于一个中转页),
但是用户可能直接在地址栏里输入 c 页面,怎么防止这个情况?
- 路由守卫
- 导航拦截如何实现
- 同一个浏览器,不同标签之间数据传递的方法,简单列举
发散性问题
- 职业规划
- 怎么制定技术方案,从哪几个方面考虑