【面试题】前端面试 15 问高频题

news2024/10/6 1:37:04

大厂面试题分享 面试题库

前后端面试题库 (面试必备) 推荐:★★★★★

地址:前端面试题库  web前端面试题库 VS java后端面试题库大全

数组去重

  • 遍历旧数组,然后拿着旧数组元素去查询新数组,如果该元素在新数组里面没有出现过,我们就添加,否则不添加
  • 先封装一个函数,unique
function unique(arr){
var newArr =\[]
for(var i =0; i< arr.length; i++){
if (newArr.indexOf(arr\[i] === -1){
newArr.push(arr\[i])
}
}
return newArr
}
var demo = unique(\[])
console.log(demo)

foreach和map的区别

共同点

  1. 都是循环遍历数组中的每一项
  2. 每一次执行匿名函数都支持三个参数,数组中的当前项item,当前项的索引index,原始数组input
  3. 匿名函数中的this都是指window
  4. 只能遍历数组
  5. 能用forEach()做到循环的,map()同样也可以做到循环。

不同点

  1. forEach()方法不会返回执行结果,而是undefined。forEach() 被调用时,不会改变原数组,也就是调用它的数组(尽管 callback 函数在被调用时可能会改变原数组)。
  2. map()方法会分配内存空间存储新数组并返回,map 不修改调用它的原数组本身(当然可以在 callback 执行时改变原数组)。

es6新增symbol 数据类型

ES6 引入了一种新的原始数据类型Symbol,表示独一无二的值。不是对象,所以不能添加属性。基本上,它是一种类似于字符串的数据类型,不能与其他类型的值进行运算,会报错,它可以作为对象属性名。只有字符串和 symbol 类型才能用作对象属性名。没有两个symbol 的值是相等的。

v-model原理

父组件给子组件标签添加v-model 就是给子组件绑定了value属性,然后子组件内用prop创建value属性可以拿到父组件传递下来的值,名字必须是value,子组件内部更改value的时候通过$emit派发一个input事件并携带最新的值,然后v-model会监听input事件,并把最新的值同步赋值到v-modle绑定的变量上面

vue响应式原理

vue2中使用了ES5里面的Object.defineProperty方法,给对应data中的数据的每个值添加了set和get方法,当值被修改时,就会触发对应的set方法,set方法里会通知对应的watcher,watcher接收后将触发render函数,重新渲染数据。

  • get 值是一个函数,当属性被访问时,会触发 get 函数
  • set 值同样是一个函数,当属性被赋值时,会触发 set 函数

计算属性和监听属性

当我们定义一个计算属性的时候,计算属性是一个函数,最后函数返回的结果就是计算属性得到的结果。 当我们去第一次使用计算属性的时候,会执行计算属性并进行计算,然后将计算的结果缓存起来。 后续当我们再去使用计算属性的时候,如果计算属性中使用到的数据没有发生变化,那么就会直接读取缓存的结果,不会重新计算。 常用于惰性求值

watch主要监听里面的属性,当属性改变时,就调用不同的方法,只会监听数据的值是否发生改变,而不会监听地址的变化

路由的钩子

全局路由钩子

  • beforeEach(全局前置钩子),意思是在每次每一个路由改变的时候都要执行一遍
  • afterEach(全局后置钩子) beforeEach是在页面加载之前的,而afterEach是在页面加载之后的,所以这些钩子是不会接受next函数,也不会改变导航本身

单个路由钩子

beforeEnter 可以直接在路由配置上直接定义beforeEnter,这些守卫与全局前置守卫的方法参数是一样的

组件路由钩子

beforeRouteEnter、beforeRouteUpdate、beforeRouteLeave

  1. 清除组件中的定时器
  2. 当页面有未关闭的窗口,或未保存的内容时,阻止页面跳转
  3. 保存相关内容到Vuex和Session中

vue中的data 为什么是个函数?

  • Object是引用数据类型,如果不用function返回,每个组件的data都是内存的同一个地址,一个数据改变了其他也改变了;
  • data是一个函数时,每个组件实例都有自己的作用域,每个实例相互独立,不会相互影响。
  • 根实例对象data可以是对象也可以是函数(根实例是单例),不会产生数据污染情况
  • 组件实例对象data必须为函数,目的是为了防止多个组件实例对象之间共用一个data,产生数据污染。采用函数的形式,initData时会将其作为工厂函数都会返回全新data对象

Token怎么存

npm i js-cookie //安装
在main.js引用
import cookie from 'js-cookie';\
Vue.prototype.$cookie = cookie; 
var $cookie = this.$cookie;
//赋值
this.$cookie.set('token',$result.data.token)
//调用
headers:{
       Authorization:this.$cookie.get('token')
}
//删除token
this.\$cookie.remove("token")

localStorage.setItem("key\_token",result.data.token); // localStorage方法赋值
localStorage.removeItem('token');  //删除localStorage指定键对应的值
localStorage.clear('token'); // 删除localStorage所有的的值

前端有几种缓存方式?

cookiec

当在客户端的浏览器上设置Cookie时,它可以持续数天,数月甚至数年。这样可以轻松保存用户首选项和访问信息 不需要任何服务器资源,并存储在用户的计算机上,因此不会给服务器带来额外的负担。 确实非常小,它的大小限制为4KB左右,不能储存大数据且不易读取

localStorage

5M大小 只能存储字符串格式的数据,所以最好在每次存储时把数据转换成json格式, 取出的时候再转换回来 生命周期是永久的, 除非主动删除数据,否则数据永远不会消失

sessionStorage

但当页面关闭后,sessionStorage 中的数据就会被清空。 indexdb、 50mb 允许储存大量数据,提供查找接口,支持异步操作,还能建立索引。indexDB缺点是:不支持DO操作;不能跨域。

数据请求方面

  • 重输入url到页面展示经历那些过程
  • 输入url地址
  • 应用层进行DNS解析
  • 应用层生成HTTP请求报文
  • 传输层建立TCP连接
  • 网络层使用IP协议来选择路线
  • 数据链路层实现网络相邻节点间可靠的数据通信
  • 物理层传输数据
  • 服务器处理反向传输
  • 服务器返回一个 HTTP 响应
  • 浏览器渲染

router和route的区别

  • router是VueRouter的一个对象,通过Vue.use(VueRouter)和VueRouter构造函数得到一个router的实例对象,这个对象中是一个全局的对象,包含了所有的路由包含了许多关键的对象和属性。
  • route是一个跳转的路由对象,每一个路由都会有一个route对象,是一个局部的对象,可以获取对应的name,path,params,query

路由传参和取参

  1. 通过 params 传递参数,如果我们想获取 id 的参数值,可以通过 this.$route.params.id
  2. 路由属性配置传参 用 this.$route.params.id 来获取到 id 的值。
  3. 通过 query 传参,如果我们想获取 id 的参数值,可以通过 this.\$route.query.id

路由钩子beforeEach三个参数

1. to: Route: 即将要进入的目标路由对象(to是一个对象,是将要进入的路由对象,可以用to.path调用路由对象中的属性) 2. from: Route: 当前导航正要离开的路由 3. next: Function: 这是一个必须需要调用的方法,执行效果依赖 next 方法的调用参数。

vue等待视图完成更新后进行下一次操作后,这个函数叫什么

Vue.nextTick() 也是vue的深度更新

nextTick 是 Vue 提供的一个全局的API ,由于Vue的异步更新策略导致我们对数据的修改不会立马体现到都没变化上,此时如果想要立即获取更新后的dom的状态,就需要使用这个方法。

  • 原理是,Vue是异步执行dom更新的,一旦观察到数据变化,Vue就会开启一个队列,然后把在同一个事件循环 (event loop) 当中观察到数据变化的 watcher 推送进这个队列。
  • 如果这个watcher被触发多次,只会被推送到队列一次。这种缓冲行为可以有效的去掉重复数据造成的不必要的计算和DOm操作。
  • 而在下一个事件循环时,Vue会清空队列,并进行必要的DOM更新。
  • nextTick方法会在队列中加入一个回调函数,确保该函数在前面的dom操作完成后才调用。

 

大厂面试题分享 面试题库

前后端面试题库 (面试必备) 推荐:★★★★★

地址:前端面试题库  web前端面试题库 VS java后端面试题库大全

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/642496.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux安装mysql8

Linux安装mysql8 第一步&#xff1a;解压mysql安装包&#xff1a;tar -xvf mysql-server-8.0.25.tar.gz 第二步&#xff1a;更新文件夹名&#xff1a;mv mysql-server-8.0.25 mysql 第三步&#xff1a;进入mysql文件夹&#xff1a;cd mysql&#xff0c;创建data文件夹&#x…

OM6621PW蓝牙智能指纹锁(附芯片选型)

随着科技的快速发展&#xff0c;智能家居正逐渐成为现代生活的一部分。在智能家居领域&#xff0c;安全始终是人们关注的焦点。传统的机械锁存在被暴力破解、易被复制钥匙等安全隐患&#xff0c;无法满足当今社会对安全性的需求。因此&#xff0c;越来越多的家庭和商业场所开始…

【vue3】12-Vue 3中的Composition Api(二)

Vue3 - composition Api setup中的函数&#xff08;1&#xff09;computed函数使用&#xff08;2&#xff09;setup获取元素或组件&#xff08;3&#xff09;组件的生命周期函数&#xff08;4&#xff09;provide/inject函数&#xff08;了解&#xff09;&#xff08;5&#xf…

Java实现PPT转MP4文件

环境要求 必须是Windows电脑&#xff0c;已安装微软Office且已激活。 引入Jar 首先在pom中引入jar包 <dependency><groupId>cc.pptshow</groupId><artifactId>pptshow</artifactId><version>1.3</version> </dependency> …

【2023年计划大纲】2023年技术笔记大纲

2023年技术笔记写作计划 按照技术类型&#xff0c;计划写以下三个领域的笔记&#xff1a; &#xff08;1&#xff09;AUTOSAR标准体系的专业知识&#xff0c;T-BOX,BMS,VCU这几个产品的设计和核心开发。包括UDS协议&#xff0c;XCP协议&#xff0c;OS操作系统。 每一个产品和…

测试工程师常见的面试问题及回答建议

说起软件测试近几年的发展&#xff0c;其实已悄无声息地发生了巨大的变化。前几年随着互联网行业的迅猛发展&#xff0c;软件测试人才稀缺&#xff0c;低门槛高薪资促使大批毕业生和转行人员一窝蜂地涌入。而现在&#xff0c;软件测试发展太快&#xff0c;纵观各大招聘网站&…

Prompt是什么_揭秘Prompt:大模型时代的关键技术与实践应用

文章目录 1 Prompt是什么Prompt的定义和基本概念Prompt的工作原理 2 综合案例案例1&#xff1a;根据内容提取数据生成表格百度&#xff1a;文心一言科大讯飞&#xff1a;讯飞星火 案例2&#xff1a;文生图百度&#xff1a;文心一言科大讯飞&#xff1a;讯飞星火 案例3&#xff…

如何建立一个好的待办事项系统并提高工作效率

如果你有一系列的任务需要完成&#xff0c;你会如何记住它们呢&#xff1f; 最简单的方法当然是将它们记在脑中&#xff0c;但如果任务的数量很多&#xff0c;记忆的细节难免模糊。纸和笔也是一个不错的选择&#xff0c;但纸质的任务清单容易遗失或者损坏。让应用来帮忙当然也…

ubuntu iptables开机自启动

一、配置ubuntu路由转发 用在一台电脑有多个网卡的情形下&#xff0c;一个网卡5网段、一个网卡8网段&#xff0c;8网段是网络出口&#xff0c;所以5网段的设备需要入网的话&#xff0c;要路由转发。 sudo iptables -t nat -A POSTROUTING -s 192.168.5.0/24 -j SNAT --to-sou…

对于中小企业,如何管理好仓库?

对于中小企业&#xff0c;如何管理好仓库&#xff1f; 在制造业摸爬滚打的这些年&#xff0c;也拜访了不少客户&#xff0c;帮助不少企业做了数字化方案&#xff0c;正如题主所说&#xff0c;“仓库是每一个经销商的根据地&#xff0c;如果不把仓库管理好&#xff0c;那么整个…

产品经理认证NPDP考试心得

什么是NPDP&#xff1f; 产品经理国际资格认证NPDP&#xff08;New Product Development Professional&#xff09;&#xff0c;由美国产品开发与管理协会&#xff08;PDMA&#xff09;所发起&#xff0c;是国际公认的新产品开发专业认证。 NPDP考试简介 考试方式&#xff1a…

C语言实现顺序表与链表创建

线性表 用于存储若干相同属性元素的有序序列称为线性表。 线性表特征&#xff1a; 存在唯一的第一个元素&#xff1b;存在唯一的最后一个元素&#xff1b;除第一个序列的每一个元素元素都有一个前驱元素&#xff0c;后一个都有一个后继元素。 顺序表 线性表的顺序表示指的…

智慧矿山成行业新趋势,千寻位置助力企业数字化转型

随着政策推动和科技发展&#xff0c;智慧矿山已成为矿业行业的趋势和未来的方向。 智慧矿山就是以矿山数字化、信息化为前提和基础&#xff0c;对矿山生产、人员健康与安全、技术支持与后勤保障等进行主动感知、自动分析、快速处理&#xff0c;最终实现安全矿山、无人矿山、高效…

java设计模式之:访问者模式

前言 关于设计模式&#xff0c;我们得结合生活中的案例来学习&#xff1b;最近我在网上也看了不少文章&#xff0c;今天想跟大家分享一下关于访问者模式的一些知识&#xff0c;先来看一个简单的案例吧。 相信大家都去过医院&#xff0c;看完病&#xff0c;医生都会给我们开一…

Linux重定向和缓冲区理解

本文已收录至《Linux知识与编程》专栏&#xff01; 作者&#xff1a;ARMCSKGT 演示环境&#xff1a;CentOS 7 重定向和缓冲区理解 前言正文文件描述符重定向重定向原理重定向命令重定向函数 缓冲区缓冲区是什么&#xff1f;缓冲区刷新策略内核缓冲区与普通缓冲区 最后 前言 前…

5款超级好用的开发效率工具,建议收藏!

大家好&#xff01;高温天气切莫太累&#xff0c;注意防暑休闲开胃(&#xff5e; o &#xff5e;)~zZ 人口过剩的时代&#xff0c;劳动力也追求高性价比。好的工具&#xff0c;能够帮助我们更高效地完成工作&#xff0c;节省时间&#xff08;摸鱼时间&#xff09;和精力&#…

吐血整理,性能测试方法与步骤详细,进阶测试之路...

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 总体方向&#xf…

HTML5 sessionStorage会话存储

sessionStorage 是HTML5新增的一个会话存储对象&#xff0c;用于临时保存同一窗口(或标签页)的数据&#xff0c;在关闭窗口或标签页之后将会删除这些数据。本篇主要介绍 sessionStorage(会话存储)的使用方式。包括添加、修改、删除等操作。 目录 1. 介绍 1.1 说明 1.2 特点 1…

微信小程序实现一个文字展开收起功能

1.0 需求背景 需求很常见&#xff0c;就是当一行文字过多时&#xff0c;显示省略号&#xff0c;然后显示展开两个字&#xff0c;点击&#xff0c;文字完全展示开&#xff0c;点击收起&#xff0c;回到省略形式&#xff0c;如下图 2.0 需求分析 有了上图&#xff0c;应该能更好…

2023亚马逊云科技中国峰会之Serverless

序言 Amazon Web Services&#xff0c;是Amazon.com推出的一系列云计算服务。 它提供了一系列的基础设施服务、平台服务和软件服务&#xff0c;希望可以帮助我们更轻松地构建和管理基于云的应用程序。 今天来学习一下 Serverless 本文会介绍以下六个模块&#xff1a; 为什么会…