面经记录
记录疫情解封后的一次面试题
· 1 min read
vue 相关 #
mixin相关场景以及利弊,拥有多个属性时的执行顺序,v-model原理,在下拉选择器组件中是怎么实现的filter怎么实现,使用场景- 插槽的实现原理,如何传值
v-for中key的作用,延伸到diff实现,不同位置的比较vnode概念v-if控制dom显隐时,vdom是如何处理的watch监听是的deep: true实现原理nextTick原理computed和watch的区别Vue.use和Vue.installVue中手动extenddata中的属性是定义在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 页面,怎么防止这个情况?
- 路由守卫
- 导航拦截如何实现
- 同一个浏览器,不同标签之间数据传递的方法,简单列举
发散性问题 #
- 职业规划
- 怎么制定技术方案,从哪几个方面考虑