【面试题】前端面试十五问
前端面试题库 (面试必备) 推荐:★★★★★
地址:前端面试题库
数组去重
- 遍历旧数组,然后拿着旧数组元素去查询新数组,如果该元素在新数组里面没有出现过,我们就添加,否则不添加
- 先封装一个函数,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的区别
共同点
- 都是循环遍历数组中的每一项
- 每一次执行匿名函数都支持三个参数,数组中的当前项item,当前项的索引index,原始数组input
- 匿名函数中的this都是指window
- 只能遍历数组
- 能用forEach()做到循环的,map()同样也可以做到循环。
不同点
- forEach()方法不会返回执行结果,而是undefined。forEach() 被调用时,不会改变原数组,也就是调用它的数组(尽管 callback 函数在被调用时可能会改变原数组)。
- 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
- 清除组件中的定时器
- 当页面有未关闭的窗口,或未保存的内容时,阻止页面跳转
- 保存相关内容到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等
路由传参和取参
- 通过 params 传递参数,如果我们想获取 id 的参数值,可以通过
this.$route.params.id。 - 路由属性配置传参 用
this.$route.params.id来获取到 id 的值。 - 通过 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操作完成后才调用。
前端面试题库 (面试必备) 推荐:★★★★★
地址:前端面试题库
相关文章:
【面试题】前端面试十五问
前端面试题库 (面试必备) 推荐:★★★★★ 地址:前端面试题库 数组去重 遍历旧数组,然后拿着旧数组元素去查询新数组,如果该元素在新数组里面没有出现过,我们就添加,否…...
09-1_Qt 5.9 C++开发指南_Qchart概述
Qt Charts 可以很方便地绘制常见的折线图、柱状图、饼图等图表,不用自己耗费时间和精力开发绘图组件或使用第三方组件了。 本章首先介绍 Qt Charts 的基本特点和功能,以画折线图为例详细说明 Qt Charts 各主要部件的操作方法,再介绍各种常用…...
烘焙光照贴图,模型小部分发黑
1.首先确定创建了光照贴图UV,其次确定不是溢色,这个最简单,所有模型材质设置为双面就可以,URP材质球的话这里就是设置双面 在scence界面Texel Validity模式里查看溢色,红色表示有溢色,绿色表示正常 2. 光照…...
gitblit windows部署
1.官网下载 往死慢,我是从百度找的1.9.1,几乎就是最新版 http://www.gitblit.com/ 2.解压 下载下来是一个zip压缩包,直接解压即可 3.配置 3.1.配置资源库路径 找到data文件下的gitblit.properties文件,用Notepad打开 **注意路…...
opencv基础53-图像轮廓06-判断像素点与轮廓的关系(轮廓内,轮廓上,轮廓外)cv2.pointPolygonTest()
点到轮廓的距离 在 OpenCV 中,函数 cv2.pointPolygonTest()被用来计算点到多边形(轮廓)的最短距离(也 就是垂线距离),这个计算过程又称点和多边形的关系测试。该函数的语法格式为: retval cv2…...
【LeetCode每日一题】——575.分糖果
文章目录 一【题目类别】二【题目难度】三【题目编号】四【题目描述】五【题目示例】六【题目提示】七【解题思路】八【时间频度】九【代码实现】十【提交结果】 一【题目类别】 哈希表 二【题目难度】 简单 三【题目编号】 575.分糖果 四【题目描述】 Alice 有 n 枚糖&…...
添加水印图片的java代码
文章目录 添加依赖java代码demo 添加依赖 <dependency><groupId>com.github.jai-imageio</groupId><artifactId>jai-imageio-core</artifactId><version>1.4.0</version></dependency>java代码demo package com.zkj.report.c…...
uniapp创建项目入门【详细】
大家在学习vue和微信小程序之后,就可以开始来学习uniapp了,在uniapp中,一套代码可以跨越所有的平台,可以很方便的维护。接下来我们先来学习如何创建uinapp的项目 一、uniapp的创建需求 大家只要会vue和微信小程序的基础来学习unia…...
pytest功能特性介绍
前言 学pytest就不得不说fixture,fixture是pytest的精髓所在,就像unittest中的setup和teardown一样,如果不学fixture那么使用pytest和使用unittest是没什么区别的(个人理解)。 fixture用途 1.做测试前后的初始化设置,如测试数据…...
UIE在实体识别和关系抽取上的实践
近期有做信息抽取的需求,UIE在信息抽取方面效果不错。 模型准备 huggingface上下载UIE模型:PaddlePaddle/uie-base Hugging Face 点击“Clone Repository”,确定git clone的链接 其中包含大文件,需要在windows安装git-lfs,在https://git-lfs.com/下载git-lfs,安装。…...
Baklib: 逆袭语雀的在线帮助中心,知识库管理工具
1. 介绍 在现代的技术发展中,知识管理变得越来越重要。特别是对于企业来说,拥有一个高效的知识库管理工具可以极大地提高工作效率和团队合作。Baklib就是这样一款在线帮助中心和知识库管理工具,它可以帮助企业集中管理和共享知识,…...
web 3d场景构建+three.js+室内围墙,仓库,楼梯,货架模型等,第一人称进入场景案例
翻到了之前的一个案例,基于three.js做的仓库布局模拟,地图元素除了大模型外,其他都是通过JSON数据解析动态生成的,例如墙体,柱子门口,地标等,集成了第一人称的插件可以第一人称进入场景有需要的…...
EditPlus取消自动.bak备份
Tools->Preferences->File 将√取消...
LLM - Transformer LLaMA2 结构分析与 LoRA 详解
目录 一.引言 二.图说 LLM 1.Transformer 结构 ◆ Input、Output Embedding ◆ PositionEmbedding ◆ Multi-Head-Attention ◆ ADD & Norm ◆ Feed Forward ◆ Linear & Softmax 2.不同 LLM 结构 ◆ Encoder-Only ◆ Encoder-Decoder ◆ Decoder-Only …...
前端技术搭建五子棋游戏(内含源码)
The sand accumulates to form a pagoda ✨ 写在前面✨ 功能介绍✨ 页面搭建✨ 样式设置✨ 逻辑部分 ✨ 写在前面 上周我们实通过前端基础实现了拼图游戏,今天还是继续按照我们原定的节奏来带领大家完成一个五子棋游戏,功能也比较简单简单,也…...
AST入门与实战(三):if节点转switch节点(瑞数5)
原文地址:https://zhuoyue360.com/jsnx/110.html 1. 期望 这是一个瑞数5代解混淆的案例,我们本章节需要做的是把if节点的内容转换成switch-case内容.以此来熟悉AST对JS混淆的对抗. 原始代码: function whileState() {while (1) {aV cA[wU];if (aV < 4) {if (…...
小白到运维工程师自学之路 第七十一集 (kubernetes网络设置)
一、概述 Master 节点NotReady 的原因就是因为没有使用任何的网络插件,此时Node 和Master的连接还不正常。目前最流行的Kubernetes 网络插件有Flannel、Calico、Canal、Weave 这里选择使用flannel。 二、安装flannel 1、master下载kube-flannel.yml,所…...
day17 enum abstract interface 枚举 抽象 接口
一、枚举 enum 枚举本来的面目 创建Season类, 所有类都默认继承Object,写不写都一样 声明属性 :季节的名字、 季节的描述, 因为枚举的对象是看的见的客观事物, 想让它的属性不可修改 使用 final修饰表示最终的 &am…...
c刷题(二)
目录 加减混合运算 计算n的k次方 计算非负整数各位之和 字符串逆序 双指针 递归 矩阵计算 矩阵转置 加减混合运算 题目:计算1 / 1 - 1 / 2 1 / 3 - 1 / 4 1 / 5 …… 1 / 99 - 1 / 100 的值,打印出结果。 一般情况我们可以写个循环然后在用条…...
【leetcode】15. 三数之和(medium)
给你一个整数数组 nums ,判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i ! j、i ! k 且 j ! k ,同时还满足 nums[i] nums[j] nums[k] 0 。请 你返回所有和为 0 且不重复的三元组。 注意:答案中不可以包含重复的三元组。 这题真…...
政府如何实现区域科技资源的高效整合与共享?
观点作者:科易网-国家科技成果转化(厦门)示范基地 现状概述:成效与短板 近年来,我国区域科技创新体系建设取得显著成效,各地政府陆续建设了一批科技平台,覆盖了政策发布、项目申报、成果展示等…...
【AI】cursor使用小技巧
一、核心框架:6 段式 Prompt 结构 Cursor 的 Agent 对结构化指令的解析远优于段落式描述。官方推荐的 Prompt 遵循以下 6 段式模板 :模块作用示例写法Goal一句话定义产出,可衡量Goal: 为 /invoices API 添加分页,保留现有筛选和排…...
如何在3分钟内免费激活Windows和Office:KMS_VL_ALL_AIO智能激活全攻略
如何在3分钟内免费激活Windows和Office:KMS_VL_ALL_AIO智能激活全攻略 【免费下载链接】KMS_VL_ALL_AIO Smart Activation Script 项目地址: https://gitcode.com/gh_mirrors/km/KMS_VL_ALL_AIO 还在为Windows系统激活弹窗烦恼吗?或者Office提示&…...
无类比域间路由选择(CIDR)
无类别域间路由选择,即CIDR,它的核心思想就一句话:彻底废除传统A、B、C类的固定边界,用灵活的网络前缀取代预定义长度。一、它解决了什么问题?(历史背景)在CIDR之前,是“有类”IP时代…...
终极明日方舟自动化助手:5分钟快速上手MAA完整指南
终极明日方舟自动化助手:5分钟快速上手MAA完整指南 【免费下载链接】MaaAssistantArknights 《明日方舟》小助手,全日常一键长草!| A one-click tool for the daily tasks of Arknights, supporting all clients. 项目地址: https://gitcod…...
C 语言控制流完全指南
在 C 语言编程中,控制流是程序的核心骨架,决定了代码的执行顺序与逻辑分支。本文将系统讲解 C 语言中的分支、循环、跳转语句,帮你彻底掌握程序控制的核心技巧。一、二路分支:if 与 if-else逻辑:程序中某段代码需要在满…...
Akagi智能麻将助手完全教程:AI实时分析提升雀魂水平
Akagi智能麻将助手完全教程:AI实时分析提升雀魂水平 【免费下载链接】Akagi 支持雀魂、天鳳、麻雀一番街、天月麻將,能夠使用自定義的AI模型實時分析對局並給出建議,內建Mortal AI作為示例。 Supports Majsoul, Tenhou, Riichi City, Amatsuk…...
CoCo框架:代码驱动的文本到图像生成技术解析
1. 项目概述CoCo(Code-as-CoT)是一种创新的文本到图像(T2I)生成框架,它将传统的自然语言链式思考(CoT)推理过程转化为可执行代码,从而实现对生成图像结构化布局的精确控制。该框架由…...
2026 年 3 月一周内三巨头齐推交互式可视化技术,AI 从文字机器迈向表达工具!
三巨头齐推交互式可视化技术 3 月 12 日,Anthropic 官宣:Claude 现在可以在对话中直接生成交互式图表、流程图和可视化内容。若问它关于元素周期表的问题,它能画可点击的周期表,每个元素点进去都有详细信息。有意思的是࿰…...
第95篇:3D模型与场景的AI生成实战——为元宇宙、游戏和电商创造资产(操作教程)
文章目录前言环境与工具准备分步操作实战第一步:文本生成基础模型第二步:在Blender中清理与优化第三步:使用Meshy进行贴图生成与重绘第四步:场景生成与组合完整流程代码示例(以Blender Python脚本为例)踩坑…...
