2023前端面试题

1.样式优先级的规则是什么?

!important>行内样式>嵌入样式>外链样式>id选择器>类选择器>标签选择器>复合选择器>通配符>继承样式

2.谈谈你对vue生命周期的理解

生命周期是什么?Vue实例有一个完整的生命周期,也就是从 开始创建、初始化数据、编译模板、挂载DOM–>渲染、更新–>渲染、卸载等一系列过程,我们称这是Vue的生命周期。

3.vue 组件间通信方式

  • 1.prop方式

  • 2.自定义事件( on)

  • 3.全局事件总线(this.$bus)

  • 4.pubsub.js (发布与订阅,一般用在react)

  • 5.vueX

  • 6.插槽

4.对SPA单页面的理解,它的优缺点分别是什么

SPA(Single Page Application)是一种技术,它能够在一个页面上提供完整的应用体验,通过AJAX和JavaScript技术来实现。

优点:
  1. 更快的加载时间:因为数据是在客户端而不是服务器端加载,因此SPA可以更快地加载页面;

  1. 更好的用户体验:SPA可以提供更好的用户体验,因为它可以更快地加载页面,并且可以更好地处理用户的交互;

  1. 更少的服务器负载:SPA可以减少服务器的负载,因为它可以把大部分的加载和处理工作都放在客户端;

  1. 更低的维护成本:SPA可以减少维护成本,因为所有的代码都在客户端,所以不需要每次更新都要发布新的版本。

缺点:
  1. 搜索引擎不友好:由于SPA是一个单页面应用,因此搜索引擎无法正确抓取,这可能会影响网站的SEO;

  1. 浏览器兼容性问题:由于SPA应用程序依赖于JavaScript,因此如果用户的浏览器不支持JavaScript,就无法正常使用SPA应用程序;

  1. 安全性问题:由于SPA应用程序的代码都在客户端,因此它更容易受到攻击;

  1. 测试困难:由于SPA应用程序的代码都在客户端,因此测试起来比较困难。

5.v-if和v-show有什么区别?

v-if 是条件渲染,它会根据表达式的值的真假来决定是否渲染,如果为假,则什么都不做;如果为真,则会渲染出元素,但是它会确保条件块在切换当中不会有任何的性能损失。

v-show 是条件展示,它不管表达式的值是什么,都会渲染出元素,只是根据表达式的值来确定是显示还是隐藏。它的优势在于,切换的时候比 v-if 要快,因为它不需要销毁再创建节点,只需要改变 CSS 属性,但是它的缺点也很明显,因为它渲染出来的元素在 DOM 中依然存在,所以它会对性能有一定的影响。

6.computed和watch的区别?

computed

computed是基于它们的依赖进行缓存的可计算属性,只有在其依赖值发生改变时才会重新计算。

watch

watch选项用于监听某个值的变化,当值发生改变时,会触发回调函数。它可以接收四个参数:新值、旧值、触发的表达式和 watch 实例本身。

7.vue-router路由模式有几种

  • 哈希模式(Hash Mode):使用URL的hash部分(即#及其后面的内容)来模拟一个完整的URL,当URL改变时,页面不会重新加载,只有hash值发生变化时,才会触发对应的路由函数。

  • 历史模式(History Mode):使用HTML5 History API,当URL改变时,页面会重新加载,每次跳转都会向服务器发送一个请求,这种模式可以让搜索引擎更好的抓取页面,但是会增加服务器的压力。

8.如何解决vuex页面刷新数据丢失问题

1、使用vuex的persistedState插件,可以将vuex的状态持久化到本地存储中,当页面刷新时,从本地存储中读取vuex的状态,从而解决页面刷新数据丢失问题。

2、使用localStorage或者sessionStorage,将vuex的状态存储在本地,当页面刷新时,从本地存储中读取vuex的状态,从而解决页面刷新数据丢失问题。

3、使用vuex的plugin插件,在页面刷新时,从服务器端读取v

9.Vue中key是用来做什么的?为什么不推荐使用index作为key?

Vue中key是用来标识Vue中的元素和组件的唯一标识符,当Vue要处理元素和组件时,它会用key来追踪和区分它们。

不推荐使用index作为key的原因是:当Vue要重新排列元素和组件时,它会根据key来重新排列,如果使用index作为key,Vue会认为这些元素和组件都是新的,导致它们不能正确的重新排列。

10.JS基本数据类型,JS有几种方法判断变量的类型

JS基本数据类型有:

Number(数字)、String(字符串)、Boolean(布尔值)、Undefined(未定义)、Null(空)、Symbol(符号)。

JS有以下几种方法可以判断变量的类型:
  1. typeof操作符:typeof操作符可以返回一个表示变量类型的字符串,比如:typeof 123 // “number” 。

  1. instanceof操作符:instanceof操作符可以用来判断一个变量是否是某个对象的实例,比如:var a = new String("abc"); a instanceof String // true。

  1. Object.prototype.toString():Object.prototype.toString()可以返回一个表示变量类型的字符串,比如:Object.prototype.toString.call(123) // "[object Number]"。

  1. constructor属性:变量的constructor属性可以指向变量的构造函数,比如:var a = new String("abc"); a.constructor == String // true。

11.罗列数组哪些操作方法1、会改变原数组,2、不改变原数组,3、数组去重

1、会改变原数组:

1) push():向数组的末尾添加一个或多个元素,并返回新的长度。

2) pop():删除数组的最后一个元素,并返回删除的元素。

3) shift():删除数组的第一个元素,并返回删除的元素。

4) unshift():向数组的开头添加一个或更多元素,并返回新的长度。

5) reverse():颠倒数组中元素的顺序。

6) sort():对数组的元素进行排序。

7) splice():通过删除或替换现有元素或者原地添加新的元素来修改数组。

2、不改变原数组:

1) concat():连接两个或多个数组,并返回结果。

2) slice():从某个已有的数组返回选定的元素。

3) filter():通过指定函数测试所有元素,并返回符合条件的元素组成的新数组。

4) map():对数组中的每个元素进行操作,并返回操作后的新数组。

5) reduce():接收一个函数作为累加器,对数组中的每个元素(从左到右)应用该函数,最终将其减少为单个值。

6) every():检查数组中的每个元素是否都能通过指定函数的测试。

7) some():检查数组中的每个元素是否至少有一个能通过指定函数的测试。

3、数组去重:

1) Set():Set 对象允许你存储任何类型的唯一值,并且可以使用数组的方法来去重。

2) filter():使用 filter 方法,可以根据数组的某个值是否在新数组中存在,来去重。

3) includes():使用 includes 方法,可以根据数组的某个值是否存在,来去重。

12.如何解决跨域?ajax、axios、jsonp的理解


跨域解决方案有:
  1. JSONP:利用script标签没有跨域限制的特性,通过传递一个callback函数来解决跨域问题。

  1. CORS:服务器端设置Access-Control-Allow-Origin来实现跨域,浏览器会对这个响应头进行处理,从而实现跨域。

  1. 代理服务器:利用代理服务器来转发请求,从而达到跨域的目的。

  1. 修改document.domain:修改document.domain属性来达到跨域的目的。

对ajax、axios、jsonp的理解:

(1)Ajax:Ajax(Asynchronous JavaScript and XML)是一种用于创建快速动态网页的网页开发技术。它使用异步数据传输,可以在不重新加载整个页面的情况下更新部分网页内容。

(2)Axios:Axios是一个基于Promise的HTTP客户端,可用于浏览器和node.js中。它提供了一个简单的API来发出XMLHttpRequests(Ajax请求),并处理响应。

(3)JSONP:JSONP(JSON with Padding)是一种使用<script>标签加载外部资源的技术,用于解决跨域问题。它使用<script>标签加载数据,并将数据封装在一个回调函数中,以便在数据加载完成后调用该函数。

13.http和https的区别? get和post的区别?


http和https的区别?

HTTP(HyperText Transfer Protocol)是一种基于TCP/IP通信协议的应用层协议,它规定了客户端和服务器端之间的通信方式,是一种无状态的、基于请求/响应模式的协议。

HTTPS(HyperText Transfer Protocol Secure)是在HTTP的基础上加入SSL/TLS安全层,以提供传输安全的网络传输协议。它使用证书进行身份认证,使用加密传输数据,可以有效防止数据在传输过程中被窃取和篡改。

HTTP和HTTPS的主要区别有:
  1. 传输协议不同:HTTP采用明文传输,HTTPS采用密文传输;

  1. 安全性不同:HTTP不加密,易受到窃听攻击;HTTPS采用SSL/TLS加密,可以有效防止数据被窃取和篡改;

  1. 端口不同:HTTP使用80端口,HTTPS使用443端口;

  1. 证书不同:HTTP不需要证书,HTTPS需要CA机构颁发的SSL证书;

  1. 性能

get和post的区别:<
  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值