前端JS常见面试题
数据双向绑定



Bug解决
集成工作涉及
版本node
依赖包报错
版本问题!!!ElementUI、Cesium、ant-design
配置、代码和其他

混入
在Vue中,混入(Mixins)是一种非常有用的功能,它允许你创建可复用的功能。混入对象可以包含任意组件选项。当组件使用混入对象时,所有混入对象的选项将被“混入”该组件本身的选项。
混入的基本使用
- 定义混入:首先,你需要定义一个混入对象。这个对象可以包含任何组件选项。
// 定义一个混入对象
const myMixin = { created() { this.hello(); }, methods: { hello() { console.log('hello from mixin!'); } }
}
- 使用混入:然后,你可以在组件中通过
mixins选项来使用这个混入。
// 定义一个使用混入的组件
Vue.component('my-component', { mixins: [myMixin], created() { console.log('component created!'); }
})
在这个例子中,当my-component组件被创建时,它首先会调用myMixin中的created钩子,然后调用它自己的created钩子。同时,my-component也继承了myMixin中的hello方法,可以在组件的其它部分调用这个方法。
注意事项
-
选项合并:当组件和混入对象含有同名选项时,这些选项将以一定方式被合并。对于生命周期钩子,混入对象的钩子将在组件自身的钩子之前调用。对于值为对象的选项,如
methods、components和directives,混入对象的选项将被合并到组件的选项中,如果两个对象有相同的键名,则组件的选项会覆盖混入对象的选项。 -
全局混入:Vue.mixin() 允许你注册一个混入,影响之后创建的每一个Vue实例。请谨慎使用全局混入,因为它会影响每一个之后创建的组件实例(包括第三方组件库)。
-
合并策略:Vue为不同类型的选项定义了不同的合并策略。例如,
data选项在合并时会进行递归合并,而methods、components和directives等选项则是简单地合并到一个对象中。 -
使用场景:混入非常适合为Vue组件添加跨组件逻辑。然而,滥用混入可能会导致组件间的依赖关系变得难以追踪,特别是在大型项目中。因此,建议仅在确实需要跨组件共享逻辑时使用混入。

keep-alive与动态组件(缓存组件)
在Vue.js中,<keep-alive> 是一个内置的抽象组件,用于缓存不活动的组件实例,而不是销毁它们。这样做可以保留组件状态或避免重新渲染,从而提高性能,尤其是在处理动态组件或组件频繁切换的场景下。Vue 2 和 Vue 3 都支持 <keep-alive>,但它们在细节和性能优化上有所不同。
Vue 2 中的 <keep-alive>
在Vue 2中,<keep-alive> 通常包裹在动态组件 <component> 或 <router-view> 周围,以便缓存这些组件。你可以通过 include 和 exclude 属性来指定哪些组件需要被缓存。
<keep-alive :include="['ComponentA', 'ComponentB']"> <component :is="currentView"></component>
</keep-alive> <!-- 或者用于路由视图 -->
<keep-alive> <router-view></router-view>
</keep-alive>
Vue 2 的 <keep-alive> 还支持一个 max 属性,用于指定缓存组件的最大数量,一旦这个数量被超过,最老的组件实例将被销毁。
包裹动态组件
<template> <keep-alive :include="['ComponentA', 'ComponentB']"> <component :is="currentComponent"></component> </keep-alive>
</template> <script>
import ComponentA from './ComponentA.vue';
import ComponentB from './ComponentB.vue'; export default { components: { ComponentA, ComponentB, // 如果currentComponent不是直接引入的组件,需要注册在components中 }, data() { return { currentComponent: 'ComponentA', }; },
};
</script>
包裹路由视图
<template> <keep-alive> <router-view></router-view> </keep-alive>
</template> <script>
// 无需特别脚本,Vue Router会处理路由的切换
</script>
使用include和exclude属性
<template> <keep-alive :include="['ComponentA', 'ComponentC']"> <component :is="currentComponent"></component> </keep-alive>
</template> <script>
// 假设你有ComponentA, ComponentB, ComponentC等组件
// 这里只缓存ComponentA和ComponentC
</script>
Vue 3 中的 <keep-alive>
Vue 3 保留了 <keep-alive> 的基本用法和功能,但做了一些改进和性能优化。与Vue 2相比,Vue 3的 <keep-alive> 在处理组件缓存时更加高效,尤其是在组件树重建时。
Vue 3 的 <keep-alive> 同样支持 include、exclude 和 max 属性,用法与Vue 2相同。但是,Vue 3的响应式系统和组合式API(Composition API)为 <keep-alive> 提供了更多的灵活性和控制力。
例如,在Vue 3中,你可以结合使用 <keep-alive> 和 <teleport> 来将缓存的组件移动到DOM的不同位置,或者利用Composition API中的响应式状态来控制缓存的行为。
性能优化
Vue 3 在多个方面对 <keep-alive> 进行了性能优化,包括更快的组件实例化、更好的内存管理和更智能的缓存策略。这些优化使得在Vue 3中使用 <keep-alive> 时,能够更高效地处理大量组件的缓存和复用。



Vuex与Pinia
Vue的状态管理——Vuex3&4&Pinia-CSDN博客
防止恶意登录
SQL注入、XSS攻击
XSS攻击-CSDN博客


WebSocket
聊天室,应用
轮询

Set与Map
Set
Set 对象允许你存储任何类型的唯一值,无论是原始值或者是对象引用。它有以下特点:
- 唯一性:
Set中的元素是唯一的,不会出现重复的值。 - 无序性:
Set中的元素没有特定的顺序,你无法通过索引来访问Set中的元素。
使用场景
-
去重:这是
Set最直接和常用的功能。你可以通过将一个数组转换为Set来快速去除其中的重复元素。
const array = [1, 2, 2, 3, 4, 4, 5];
const uniqueArray = [...new Set(array)];
console.log(uniqueArray); // [1, 2, 3, 4, 5]
-
对象集合:当需要存储不重复的对象时,
Set可以作为一个有效的集合来使用。不过需要注意的是,即使对象的内容相同,但如果它们是不同的对象实例,也会被Set视为不同的元素。 -
交集、并集、差集操作:利用
Set提供的add、delete、has等方法,可以方便地进行集合操作。
Map
Map 对象保存键值对,并且能够记住键的原始插入顺序。任何值(对象或者原始值)都可以作为一个键或一个值。
- 键值对:
Map中的每个元素都是一个键值对。 - 有序性:
Map记住了元素的插入顺序,因此你可以通过迭代来按顺序访问其中的元素。 - 键的唯一性:
Map中的键是唯一的。
使用场景
-
需要记住元素插入顺序的场景:当你想根据元素的插入顺序来访问它们时,
Map是一个很好的选择。 -
键是复杂数据类型的场景:与对象不同,
Map的键可以是任何数据类型,包括函数、对象或任何原始值。这意味着,如果键是对象,则只要两个键对象引用的是同一个对象,Map就会将它们视为相同的键。 -
性能敏感的场景:在一些情况下,当你需要频繁地访问数据并且性能是关键考虑因素时,
Map可能比对象更高效,特别是在涉及到复杂键时。 -
数据映射:当你想实现数据之间的映射关系时,
Map提供了一个直观且方便的方式来存储和访问这些数据。


JS多线程
Web Workers 是 JavaScript 的一种机制,它允许你在与主线程(通常是UI线程)分离的后台线程中运行脚本。这样做的好处是,你可以执行耗时的计算或操作而不会阻塞用户界面。这对于需要处理大量数据或复杂计算的Web应用尤其有用。
基本概念
- 主线程:负责执行脚本、处理事件、渲染UI等。
- Worker 线程:运行在后台的脚本,不会干扰主线程的UI渲染。
- 消息传递:主线程和 Worker 线程之间通过传递消息来通信,而不是直接共享内存。
如何使用 Web Workers
1. 创建一个 Worker
首先,你需要创建一个指向 Worker 脚本的 URL。这个脚本会在 Worker 线程中运行。
const myWorker = new Worker('worker.js');
2. 监听 Worker 的消息
你可以在主线程中监听来自 Worker 的消息。
myWorker.onmessage = function(e) {
console.log('Received message from worker:', e.data);
};
3. 向 Worker 发送消息
你可以使用 postMessage() 方法向 Worker 发送消息。
myWorker.postMessage('Hello Worker!');
4. Worker 脚本
在 worker.js 文件中,你可以使用 self(等同于 Worker 线程的全局对象)来接收消息并发送响应。
self.onmessage = function(e) { console.log('Message received from main script', e.data); // 处理数据 const result = e.data.toUpperCase(); // 将结果发送回主线程 self.postMessage(result);
};
5. 错误处理
监听 Worker 线程中的错误。
myWorker.onerror = function(error) { console.error('Worker error:', error);
};
6. 终止 Worker
当不再需要 Worker 时,你可以调用 terminate() 方法来停止它。
myWorker.terminate();
进阶使用
- 多个 Worker:你可以创建多个 Worker 来并行处理任务。
- 数据共享:虽然 Worker 之间不能直接共享内存,但可以使用
postMessage()传递数据,或使用SharedArrayBuffer和Atomics(在支持的环境下)来在 Worker 之间共享和同步数据。 - Worker 之间的通信:Worker 之间不能直接通信,但可以通过主线程作为中介来间接通信。
- 模块化 Worker:在 Worker 脚本中使用 ES6 模块,可以更好地组织代码和重用功能。
注意事项
- 同源策略:Worker 脚本必须与创建它的脚本同源(协议、端口和主机名必须相同)。
- 性能考虑:虽然 Worker 可以提高应用的响应性,但它们也会消耗额外的内存和CPU资源。
- 浏览器兼容性:虽然大多数现代浏览器都支持 Web Workers,但在使用之前最好检查目标浏览器的兼容性。
通过合理使用 Web Workers,你可以显著提升 Web 应用的性能和用户体验。
webworker需要后端支持





浏览器网络与安全
计算机网络面试常见题目(一)-CSDN博客
计算机网络速成(二)-CSDN博客
计算机网络速成(三)-CSDN博客
计算机网络系统速成-CSDN博客
相关文章:
前端JS常见面试题
数据双向绑定 Bug解决 集成工作涉及 版本node 依赖包报错 版本问题!!!ElementUI、Cesium、ant-design 配置、代码和其他 混入 在Vue中,混入(Mixins)是一种非常有用的功能,它允许你创建可复…...
利用深度学习实现验证码识别-4-ResNet18+imagecaptcha
在当今的数字化世界中,验证码(CAPTCHA)是保护网站免受自动化攻击的重要工具。然而,对于用户来说,验证码有时可能会成为一种烦恼。为了解决这个问题,我们可以利用深度学习技术来自动识别验证码,从…...
IDC基础学习笔记
一、数据中心介绍 1、数据中心级别划分: 2、数据中心结构: 3、IT系统组成 二、数据中心硬件知识 1、服务器组件 服务器的正面接口: 服务器的反面接口: (1)CPU CPU定义:中央处理器(…...
Mysql基础练习题 1527.患某种疾病的患者 (力扣)
查询患有 I 类糖尿病的患者 ID (patient_id)、患者姓名(patient_name)以及其患有的所有疾病代码(conditions)。I 类糖尿病的代码总是包含前缀 DIAB1 。 题目链接: https://leetcode.cn/proble…...
Mysql链接异常 | [08001] Public Key Retrieval is not allowed
Datagrid报错 [08001] Public Key Retrieval is not allowed 这个错误通常是由于 MySQL 8.0 中的新特性导致的。默认情况下,MySQL 8.0 使用 caching_sha2_password 作为认证插件,而你需要在连接 URL 中明确允许公钥检索或者使用老版本的认证方式 mysql…...
vue3项目中如何动态循环设置ref并获取使用
前言:vue2可通过ref来获取当前的dom,但是vue3有个问题,就是必须定义ref的变量名,才能使用;倘若有多个ref,一个个去定义未免过于繁琐,还有一种情况就是dom是使用v-for循环出来的,那么…...
stm32之SPI通信协议
文章目录 前言一、SPI通信协议1.1 SPI简介1.2 SPI通信特点1.3 SPI与I2C对比 二、SPI硬件电路三、SPI通信原理四、SPI时序单元4.1 起始和终止条件4.2 交换一个字节(模式1)4.3 交换一个字节(模式0)4.4 交换一个字节(模式2和3) 五、SPI时序5.1 发送指令5.2 指定地址写5.3 指定地址…...
Unity 摄像机(Camera)详解
文章目录 0.前言1.相机属性介绍2.Unity 中多个相机画面堆叠显示2.1 3D 摄像机2.2 UI 摄像机2.3 摄像机的Culling Mask设置 0.前言 本文介绍的是使用Unity默认的内置渲染管线下的Camera组件,使用URP或HDRP则不同。 1.相机属性介绍 Clear Flags: 清除标记…...
数学基础 -- 线性代数之LU分解
LU分解 LU分解(LU Decomposition)是线性代数中非常重要的一种矩阵分解方法。它将一个方阵分解为一个下三角矩阵(L矩阵)和一个上三角矩阵(U矩阵)的乘积。在数值线性代数中,LU分解广泛用于求解线…...
高职人工智能训练师边缘计算实训室解决方案
一、引言 随着物联网(IoT)、大数据、人工智能(AI)等技术的飞速发展,计算需求日益复杂和多样化。传统的云计算模式虽在一定程度上满足了这些需求,但在处理海量数据、保障实时性与安全性、提升计算效率等方面…...
【Java】SpringCloud中使用set方法报错空指针
前言:今天在交流群中看见了一个空指针报错,想着哪里为空点过去看看为什么赋不上值就行,没想到啪啪打脸了,今天总结一下。 以下是他的RedisTempate注入和方法 可以看到,89行报错空指针。先分析一下, ①赋值…...
芯片杂谈 -- 常聊的内核包含哪些模块
目录 1. R52内核速览 2. 处理器模块详解 3.内核的功能安全测什么? 4.小结 最开始接触到汽车MCU大都来自NXP、Infineon、Renesas,例如MPC5748、TC275、RH850 P1X等等; 而各大OEM、供应商等等发布的JD通常都会要求熟悉AURIX、PowerPC、G3K…...
运维问题0002:SAP多模块问题-SAP系统程序在执行时,跳出“加急快件”窗口,提示:快件文档“更新已终止”从作者***收到
1、问题描述 近期收到2起业务报障,均反馈在SAP执行程序时,弹出“加急快件”窗口,导致操作的业务实际没有更新完成。 1)业务场景一:设备管理部门在操作事务代码:AS02进行资产信息变更时,保存正常…...
深度解析RAG:你必须要了解的RAG优化方法
RAG(Retrieval-Augmented Generation)是一种结合检索和生成能力的技术框架,旨在通过从外部知识库中检索相关信息来增强生成模型的输出。其基本思想是利用大型语言模型(LLM)的生成能力,同时通过检索机制获取…...
深度学习驱动下的字符识别:挑战与创新
一、引言 1.1 研究背景 深度学习在字符识别领域具有至关重要的地位。随着信息技术的飞速发展,对字符识别的准确性和效率要求越来越高。字符识别作为计算机视觉领域的一个重要研究方向,其主要目的是将各种形式的字符转换成计算机可识别的文本信息。近年…...
使用 JAXB 将内嵌的JAVA对象转换为 xml文件
使用 JAXB 将内嵌的JAVA对象转换为 xml文件 1. 需求2. 实现(1)FileDesc类(2)MetaFileXml类(3)生成对应的xml文件 1. 需求 获取一个目录下所有文件的元数据信息(文件名、大小、后缀等࿰…...
若依项目后台启动报错: [网关异常处理]、503
拉取代码启动项目,网关控制台报错: 21:31:59.981 [boundedElastic-7] WARN o.s.c.l.c.RoundRobinLoadBalancer - [getInstanceResponse,98] - No servers available for service: ruoyi-system 21:31:59.981 [boundedElastic-7] ERROR c.r.g.h.Gateway…...
【C++ Qt day10】
2、 完善对话框,点击登录对话框,如果账号和密码匹配,则弹出信息对话框,给出提示”登录成功“,提供一个Ok按钮,用户点击Ok后,关闭登录界面,跳转到其他界面 如果账号和密码不匹配&am…...
GO HTTP库使用
Go的 net/http 包是一个强大且易于使用的库,用于构建HTTP服务器和客户端。通过它,你可以轻松实现HTTP请求的处理、路由、静态文件服务等功能。下面重点以及一个简单的Demo示例。 文章目录 1. **基础HTTP服务器**2. **处理请求与响应**3. **路由与处理器*…...
数据结构 - 顺序表
0.线性表 1.定义 线性表就是零个或多个相同数据元素的有限序列。 2.线性表的存储结构 ①.顺序结构 ②.链式结构 3.线性表的表示方法 例如: 一.线性表的基本运算 二.线性表的复杂运算 1.线性表的合并运算 2.线性表的去重运算 三.顺序表 1.定义 顺序表,就…...
MPNet:旋转机械轻量化故障诊断模型详解python代码复现
目录 一、问题背景与挑战 二、MPNet核心架构 2.1 多分支特征融合模块(MBFM) 2.2 残差注意力金字塔模块(RAPM) 2.2.1 空间金字塔注意力(SPA) 2.2.2 金字塔残差块(PRBlock) 2.3 分类器设计 三、关键技术突破 3.1 多尺度特征融合 3.2 轻量化设计策略 3.3 抗噪声…...
VB.net复制Ntag213卡写入UID
本示例使用的发卡器:https://item.taobao.com/item.htm?ftt&id615391857885 一、读取旧Ntag卡的UID和数据 Private Sub Button15_Click(sender As Object, e As EventArgs) Handles Button15.Click轻松读卡技术支持:网站:Dim i, j As IntegerDim cardidhex, …...
服务器硬防的应用场景都有哪些?
服务器硬防是指一种通过硬件设备层面的安全措施来防御服务器系统受到网络攻击的方式,避免服务器受到各种恶意攻击和网络威胁,那么,服务器硬防通常都会应用在哪些场景当中呢? 硬防服务器中一般会配备入侵检测系统和预防系统&#x…...
《用户共鸣指数(E)驱动品牌大模型种草:如何抢占大模型搜索结果情感高地》
在注意力分散、内容高度同质化的时代,情感连接已成为品牌破圈的关键通道。我们在服务大量品牌客户的过程中发现,消费者对内容的“有感”程度,正日益成为影响品牌传播效率与转化率的核心变量。在生成式AI驱动的内容生成与推荐环境中࿰…...
ServerTrust 并非唯一
NSURLAuthenticationMethodServerTrust 只是 authenticationMethod 的冰山一角 要理解 NSURLAuthenticationMethodServerTrust, 首先要明白它只是 authenticationMethod 的选项之一, 并非唯一 1 先厘清概念 点说明authenticationMethodURLAuthenticationChallenge.protectionS…...
鱼香ros docker配置镜像报错:https://registry-1.docker.io/v2/
使用鱼香ros一件安装docker时的https://registry-1.docker.io/v2/问题 一键安装指令 wget http://fishros.com/install -O fishros && . fishros出现问题:docker pull 失败 网络不同,需要使用镜像源 按照如下步骤操作 sudo vi /etc/docker/dae…...
高防服务器能够抵御哪些网络攻击呢?
高防服务器作为一种有着高度防御能力的服务器,可以帮助网站应对分布式拒绝服务攻击,有效识别和清理一些恶意的网络流量,为用户提供安全且稳定的网络环境,那么,高防服务器一般都可以抵御哪些网络攻击呢?下面…...
AirSim/Cosys-AirSim 游戏开发(四)外部固定位置监控相机
这个博客介绍了如何通过 settings.json 文件添加一个无人机外的 固定位置监控相机,因为在使用过程中发现 Airsim 对外部监控相机的描述模糊,而 Cosys-Airsim 在官方文档中没有提供外部监控相机设置,最后在源码示例中找到了,所以感…...
Linux系统部署KES
1、安装准备 1.版本说明V008R006C009B0014 V008:是version产品的大版本。 R006:是release产品特性版本。 C009:是通用版 B0014:是build开发过程中的构建版本2.硬件要求 #安全版和企业版 内存:1GB 以上 硬盘…...
Python竞赛环境搭建全攻略
Python环境搭建竞赛技术文章大纲 竞赛背景与意义 竞赛的目的与价值Python在竞赛中的应用场景环境搭建对竞赛效率的影响 竞赛环境需求分析 常见竞赛类型(算法、数据分析、机器学习等)不同竞赛对Python版本及库的要求硬件与操作系统的兼容性问题 Pyth…...
