说明:仅用于记录,供自己翻看,很多引用了别人的回答。想设置私密的,但是掘金没有私密选项,无所谓了......
当然,空着的题目要是有大佬帮小弟补上正式的回答就更好了,回答有偏差的也请指正,十分感谢~
一、面试遇到的题目
1、var、let、const的区别
2、px em rem

3、类class 继承类extends 关键字super
super作为函数调用时,代表父类的构造函数,super()只能用在子类的构造函数之中,用在其他地方就会报错。
super作为对象时,在普通方法中,指向父类的原型对象;在静态方法中,指向父类。
使用super的时候,必须显式指定是作为方法还是作为对象使用,否则会报错。
相关地址:jsrun.net/t/SZKKp
4、服务端渲染怎么实现 有什么好处
5、v-for中key的作用


6、媒体查询
@media mediaType and (mediaFeature ) and (mediaFeature ) {
选择器 {
属性名:属性值
}
}
例如:@media screen and (min-width: 768px) and (max-width: 992px){} blog.csdn.net/qq_40146789…
7、position 定位
8、鼠标移入按钮发生的一连串事件hover focus active

9、接口请求响应拦错误处理
10、vue3与vue2的对比

11、vue2响应式原理 双向数据绑定
响应式原理: v2.cn.vuejs.org/v2/guide/re…

双向数据绑定:

相关地址: 不要再搞混Vue的响应式原理和双向数据绑定了 - 掘金 (juejin.cn)
12、怎么鉴权 后端返回的是什么
13、nuxt.js框架的选型原因
14、页面自适应 rem
15、uniapp 条件编译 视频播放预处理
16、前端性能优化

相关地址:baijiahao.baidu.com/s?id=176208…
17、webpack

18、js ==(隐式类型转换)
19、什么是浅拷贝和深拷贝

20、原生实现深拷贝函数
20-2 JSON.stringify和JSON.parse实现深拷贝有什么弊端
21、WebSocket协议(及与http的区别)






22、怎么避免js中的内存泄漏
23、强缓存和协商缓存



相关地址:blog.csdn.net/weixin_4255…
24、uniapp页面生命周期
vue2页面及组件生命周期流程图:
vue3页面及组件生命周期流程图:

25、v-if和v-show的区别

26、vue自定义指令
cn.vuejs.org/guide/reusa…
juejin.cn/post/736365…
27、css scoped的作用和原理
28、css选择器及优先级

29、计算属性和函数的区别


30、函数声明式和函数表达式的区别

31、普通函数和箭头函数的区别

32、apply、call、bind

33、防抖 节流
34、伪元素 伪类

35、跨域问题
由于浏览器的同源策略,当页面源和目标源异源的时候,会出现跨域问题。
解决方案:CORS、JSONP、代理






36、什么是正向代理和反向代理
37、Promise


38、async await

39、事件循环机制


40、闭包

41、浏览器缓存有哪些以及特点、应用场景
42、常用的httpCode以及含义




http请求方法:

43、盒模型 box-sizing属性
标准盒模型:box-sizing: content-box;(默认) 怪异盒模型:box-sizing: border-box;

44、computed、watch 的区别 watch深度监听
当需要监听一个对象的变化时,普通的watch方法无法监听到对象内部属性的变化,可以设置深度监听 deep: true。immediate设置为 true,页面进来就会立即执行监听。

44.2 vue3中watch、watchEffect的区别
45、页面监听路由变化
全局前置守卫
路由独享的守卫

组件内的守卫

完整的导航解析流程

46、router-link和a标签的区别

47、Vuex mutations actions 怎么修改数据
mutation里面修改state里面定义的状态,提交(commit)mutation;在actions里面提交(commit)mutation,分发(dispatch)action。
action 提交的是 mutation,而不是直接变更状态。 action 可以包含任意异步操作。
mutation 必须是同步函数。

48、怎样刷新组件 调用子组件的方法
刷新组件:
1.通过控制组件的v-if来强制销毁和重新创建组件。
2.给组件绑定key值,通过改变key值强制重新渲染组件(利用vue虚拟DOM的diff算法,对比新旧节点时,发现key值改变会重新渲染组件)。
3.使用组件内置 $forceUpdate方法:强制重启组件的render函数,调用该方法后只会触发beforeUpdate、updated 这两个生命周期,而且只会影响当前组件以及其插槽内容。
调用子组件的方法
1.通过 $ref 获取子组件实例,调用子组件的方法
2.通过 $children 可以获取到一个包含所有子组件(不包含孙子组件)的 VueComponent 对象数组,可以直接拿到子组件中所有数据和方法等
49、keep-alive
可以通过路由中的 meta 属性来控制,是否需要缓存。
生命周期函数

50、注册全局组件 注册全局过滤器
// @/components/index.js
// main.js

注册全局过滤器也是类似操作,把Vue.component()换成Vue.filter()
51、页面布局
1、flex布局:www.runoob.com/w3cnote/fle…
flex容器的属性:

flex项目的属性:

2、grid布局:www.runoob.com/css3/css-gr…


52、null和undefined的区别
53、为什么不建议同时使用v-if和v-for

54、new的过程
1、创建一个空对象
2、设置原型链:设置新对象的 __proto__ 属性指向构造函数的 prototype属性
3、将构造函数的this绑定到新对象,并且执行构造函数
4、返回this
JavaScript:new关键字的执行过程_js中new 执行过程是什么?-CSDN博客 javascript - 深入一点 - 用 new 的时候到底发生了什么? - 技术菜鸟挣扎记 - SegmentFault 思否
55、首屏加载优化
56、普通对象和Map的区别
57、Map和WeakMap的区别

58、伪数组

59、图片懒加载
60、js操作dom节点
61、MVVM
62、js操作dom节点转成图片保存

63、组合式函数和mixins
63.2、vue2中,mixins与组件的选项合并
当组件和混入对象含有同名选项时,这些选项将以恰当的方式进行“合并”。
数据对象在内部会进行递归合并,并在发生冲突时以组件数据优先。
同名钩子函数将合并为一个数组,因此都将被调用。另外,混入对象的钩子将在组件自身钩子之前调用。
值为对象的选项,例如 methods、components 和 directives,将被合并为同一个对象。两个对象键名冲突时,取组件对象的键值对。
注意:Vue.extend() 也使用同样的策略进行合并。
64、路由的hash模式和history模式的区别
blog.csdn.net/sunyctf/art… m.php.cn/faq/490021.… blog.csdn.net/qq_20823145…
65、bfc


66、xss攻击
反射型、存储型、dom型 www.bilibili.com/video/BV1rg…
67、数组扁平化
递归遍历数组、arr.flat(Infinity)、toString()搭配split(',') blog.csdn.net/qq_40968685…
68、for in 和 for of 的区别

69、forEach和map的区别
面试官问:forEach() 和 map() 的区别-CSDN博客
70、vue怎样添加一个响应式属性

71、怎么实现系统主题切换
72、this.$nextTick
73、微信小程序登录流程


74、微信扫码登录
75、vue3中ref和reactive的区别
76、Vue3性能提升主要通过哪几方面体现?
77、vue中组件和插件有什么区别
78、typescript的type和interface有什么区别?
79、package-lock文件的作用
80、git merge 和 git rebase的区别
二、其他常见面试题
1、vue组件生命周期



2、组件通信
vue2:
vue3:
3、网页加载过程
相关地址:2023我的前端面试准备 - 掘金 (juejin.cn)
4、diff算法
5、变量提升
6、事件代理(事件委托)



7、$route和$router的区别

8、重绘和重排(回流)
9、面向对象编程
10、二次封装组件如何继承保留原组件的功能
vue2:
vue3:
相关地址: