前端总结

119 阅读6分钟

🌱 勤学如春起之苗,不见其增,日有所长。 —— 陶渊明

1、vue的双向绑定原理是什么?里面的关键点在哪里?vue的数据双向绑定是通过数据劫持和发布-订阅者功能来实现的,vue是通过Object.defineProperty()来实现数据劫持的。

2、实现水平垂直居中的方式?flex,absolute,margin:负值,margin:auto,transform: translate(-50%,-50%)

3、常用伪元素有哪一些?:aflter ::before ,:first-letter

4、移动端如何适配不同屏幕尺寸?rem,媒体查询,em

5、本地存储有哪一些?他们三者有什么区别?localstorage,sessionstorage,cookie,indexDB

6、JS的数据类型?如何判断js的数据类型? 基本类型(字符串(String)、数字(Number)、布尔(Boolean)、对空(Null)、未定义(Undefined)、Symbol)和引用类型(对象(Object)、数组(Array)、函数(Function))

7、说一下ES6的新特性有哪些?

8、Let、const、var三者有什么区别?let const (声明常量不可修改)块级作用域

9、数组去重有哪些办法?ES6新增构造函数set,利用set具有天然去重功能数组迭代

10、说一下深拷贝和浅拷贝,如何自己实现一个深拷贝?浅拷贝(=赋值,)浅拷贝和深拷贝都是对于JS中的引用类型而言的,浅拷贝就只是复制对象的引用(堆和栈的关系,简单类型Undefined,Null,Boolean,Number和String是存入堆,直接引用,object array 则是存入桟中,只用一个指针来引用值),如果拷贝后的对象发生变化,原对象也会发生变化。只有深拷贝才是真正地对对象的拷贝。

11、Vue的生命周期有哪一些?说一下它们每个阶段做什么操作?

12、组件通讯方式有哪一些?

13、Vuex有几个属性及作用?

14、Vue的监听属性和计算属性有什么区别?

15、说一下防抖和节流。怎么实现?

16、Vue的导航守卫有哪一些?

17、你的登录拦截怎么实现的?

18、有用过图表吗?用的多吗?

19、闭包是什么?如何实现?

20、Vue2.0和vue3.0有什么区别?vue3.0( )

  • 为什么要使用Composition API

  • 在Compostion API的这种组织代码方式下可以提高代码的可读性和可维护性

  • Compostion API可以更好的重用逻辑代码

  • 在vue3中使用Compostion API是可选的

  • setup

  • setup函数是Composition API的入口函数,我们的变量,方法都是在该函数中定义的

  • setup是先于beforeCreate和created执行的

  • 由于在执行 setup 时尚未创建组件实例,因此在 setup 选项中没有 this

  • 如何选择ref和reactive

  • 1:基本数据类型(string,number,boolean等)或者单值对象({count:1}这样只有一个属性值的对象)使用ref

  • 2:引用类型的值 (Object,Array)使用reactive

21、Vue常用的指令有哪些?v-once指令、v-show指令、v-if指令、v-else指令、v-else-if指令、v-for指令、v-html指令、v-text指令、v-bind指令、v-on指令、v-model指令等等。

22、v-If和v-show有什么区别?

  • v-show 是通过控制display属性来进行dom的显示与隐藏

  • v-if 是真正意义上的条件渲染,为true是渲染(dom存在),为false时不存在(dom不存在)

23、v-for为什么要加一个key?key是给每一个vnode的唯一id,也是diff的一种优化策略,可以根据key,更准确, 更快的找到对应的vnode节点

24、你是如何封装一个组件的?

  • 如何封装一个组件:

  • 1、使用Vue.extend()创建一个组件

  • 2、使用Vue.component()方法注册组件

  • 3、如果子组件需要数据,可以在props中接收定义

  • 4、子组件修改好数据之后,想把数据传递给父组件,可以用emit()方法

  • data数据结构设计原则:

  • 1、用数据描述所有的内容

  • 2、数据呀结构化,易于程序操作,遍历,查找

  • 3、数据要可扩展,以便增加新的功能

  • 组件设计原则:

  • 1、从功能上拆分层次

  • 2、尽量让组件原子化,一个组件只做一件事情

  • 3、容器组件(只管数据,一般是顶级组件)和展示组件(只管显示视图)

25、有自己从0到1搭建过项目吗?

26、有用过uni-app吗?

27、你会写后台吗?有搞过服务端渲染吗?

28、说一下你项目中遇到的难点,如何解决?

29、Url到浏览器的一个过程有哪些步骤?

30、如何实现小程序的request封装及拦截?

31、在vue的项目应用中,不使用框架,怎么封装?

32、什么是Js原型?原型链是什么?

33、组件通讯方式有哪些?

34、用闭包的原理做过哪些?

35、作用域是什么?

36、操作数组的方式有哪些?

37、0.1 + 0.2 等于 0.3吗?为什么?如何解决?

38、keep-alive是什么?有哪几个生命周期阶段?

39、判断一个变量是否是数组,有哪些办法?

40、判断一个变量是否是对象,有哪些办法?

41、对象/数组常用方法有哪些?

42、创建一个空数组/空对象有哪些方式?

43、哪些遍历方式会改变原数组?

44、Set和Map各是什么?

45、介绍一下promise。

46、Promise通常会解决三种问题(1)链式回调(2)同时发起几个异步请求,谁先有结果就拿谁的(3)发起多个请求,等到所有请求后再做下一步处理这三种方式promise是怎么处理的?

47、如何改变一个函数a的上下文?

48、Call和apply有什么区别?

49、Evenbus是什么东西?

50、Vue中普通的生命周期大概有哪些?

51、父子组件生命周期执行顺序是怎么样的?

52、mixins有几个生命周期阶段?

  • 1、对于data定义属性,组件中定义属性覆盖mixins中同名字段

  • 2、对于created、mounted等生命周期函数,mixins中生命周期函数优先执行(执行顺序按mixins中顺序),再执行组件中生命周期函数

  • 3、对于methods中的同名方法,组件内的方法覆盖mixins中的方法

  • 注:对于相同的computed属性,组件的computed属性覆盖mixins内的computed属性,

  • 而对于相同的watch监听,mixins中的watch监听先执行。

53、弹性布局,一行两列,一列固定宽,如何实现?

54、Flex:1 包含哪三种属性 flex-grow,flex-shrink,flex-basis.

55、前端性能优化有哪些方案?

56、浏览器兼容性处理有哪些?juejin.cn/post/699837…

57、谈一谈typescript juejin.cn/post/684490…

58、implements与extends区别 juejin.cn/post/691421… 类与接口的继承

59、juejin.cn/post/684490… css3的介绍

60、Chrome 中文界面下默认会将小于 12px 的文本强制按照 12px 显示。

  • 解决方式:

  • 可通过加入 CSS 属性 -webkit-text-size-adjust: none; 解决。