当前位置: 首页 > article >正文

2025前端面试题

2025前端面试题

  • uniapp
    • uniapp如何打包发版到线上
  • vue
    • keep-alive 有哪几个生命周期
    • vue3构建项目
    • vue如何封装组件
    • vue2的响应式原理
    • vue3的响应式原理
    • vue3和2的区别
    • Vuex中的重要核心属性有哪些?
    • Vue-router有哪几种路由守卫
  • es6
    • 数组去重的方法
    • slice与splice的区别
    • 数组有哪些常用方法
    • ES6的新特性
    • Promise
    • async/await
    • 防抖和节流,应用场景
    • 闭包
    • 原型和原型链
    • 0.1+0.2 等于0.3吗?
  • 安全
    • 跨域CORS

uniapp

uniapp如何打包发版到线上

准备工作

代码测试:确保应用功能完整,没有明显 Bug。

配置调整:根据目标平台调整 manifest.json 和页面配置。

版本号更新:更新应用的版本号(通常在 manifest.json 中配置)。

API 环境切换:将开发环境的 API 地址切换为生产环境
准备工作
代码测试:确保应用功能完整,没有明显的Bug
配置参数:根据目标平台调整manifest.json和页面配置,更新版本号,API 地址切换为生产环境
打包发版
1.发布到H5
配置:在manifest.json的web节点,配置router模式(hash或history)并设置publicPath的路径
打包:点击发行->网站pcweb或手机H5 或者npm run build:h5 在\unpackage\dist\build\web生成静态部署:配置 Nginx,部署到服务器
访问:域名或hash #
2.发布到小程序
配置:在 manifest.json 中,找到 mp-weixin 节点,配置小程序的 AppID 和其他设置
打包:点击发行->小程序微信,在\unpackage\dist\build\mp-weixin生成静态文件
上传:在微信开发工具中,点击上传:填写版本号和备注,提交审核
发布:登录微信公众平台,在“版本管理”中提交审核,审核通过后即可发布。
3.发布到APP
配置:在 manifest.json 中,配置 App 的基本信息,如应用名称、图标、启动图等
打包:点发行->app 云打包 会生成 Android 的 .apk 文件或 iOS 的 .ipa 文件
发布:发布到应用商店
andriod配置签名 上传到google应用商店
ios使用 Xcode 打开生成的 iOS 项目,配置证书和描述文件。将应用上传到 App Store。

vue

keep-alive 有哪几个生命周期

keep-alive是Vue.js中的一个内置组件,用于缓存动态组件或路由组件,以避免重复渲染和销毁
activated 和deactivated
原理,keep-alive内部维护了一个缓存对象,存储被缓存的组件实例 健是name和key 值是组件的 VNode(虚拟 DOM 节点)缓存策略:当组件首次渲染时,keep-alive 会将其 VNode 和 DOM 节点缓存起来。当组件再次渲染时,keep-alive 会从缓存中直接取出 VNode 和 DOM 节点,而不新创

vue3构建项目

vue如何封装组件

首先要明确组件的功能和应用场景
再者要规划好组件的api与外部交互的接口 props接收的外部参数 slot插槽 event触发的事件
并进一步细化props参数,包括类型,默认值,必要的参数做好校验
最后就是实现组件的逻辑和样式

vue2的响应式原理

Vue2通过Object.defineProperty对data中的属性进行劫持,当属性值发生变化时,会触发对应的更新函数,从而更新视图。
Vue2通过Watcher来实现数据与视图的双向绑定,当数据发生变化时,Watcher会通知对应的视图进行更新。
·Vue2的响应式原理存在一些缺陷,例如无法监听数组的变化,需要通过特殊的方法来实现

vue3的响应式原理

Vue3使用Proxy代替了Object.defineProperty,Proxy可以监听到对象的所有属性,包括新增和删除操作。
Vue3使用了WeakMap来存储依赖关系,避免了Vue2中Watcher的内存泄漏问题
Vue3支持了多个根节点的组件,可以更方便地进行组件的复用和组合。

vue3和2的区别

更快的渲染速度:Vue3使用了Proxy代理对象,可以更快地跟踪数据变化,从而提高渲染速度。
更小的体积:Vue3的体积比Vue2更小,同时也支持按需加载,减少了页面加载时间。
更好的TypeScript支持:Vue3对TypeScript的支持更加完善,可以更好地进行类型检查和代码提示。
更好的组件封装:Vue3引入了Composition API,可以更好地封装组件逻辑,使得组件更加可复用和易维护。
响应式系统进行了重构,可以更好地处理嵌套对象和数组的变化,同时也提供了更多的API来处理响应式数据。

Vuex中的重要核心属性有哪些?

Vuex 应用的核心就是 store(仓库)
五大核心:State,Getter,Mutation,Action,Module
state 存放数据
Getter 相当于计算属性
Mutation 同步修改state中的数据
actions 异步修改数据 调用Mutations中的方法
Module 数据过多或复杂时,将数据用模块化分开

Vue-router有哪几种路由守卫

分四种
全局导航守卫 beforeEach,afterEach
路由独享守卫 beforeEnter
组件内的守卫 beforeRouteEnter beforeRouteUpdate beforeRouteLeave
全局解析守卫 beforeResolve

es6

数组去重的方法

set方法[…new Set(arr)]
filter和indexOf方法: arr.filter((item, index) => arr.indexOf(item) === index)

slice与splice的区别

slice():提取数组的一部分,返回新数组,不修改原数组。
splice():删除、替换或插入元素,修改原数组,返回被删除的元素。

数组有哪些常用方法

添加/删除:push()尾插、pop()尾删、unshift()头插、shift()头删
合并/截取:concat()合并返新、slice()截取返新
遍历:forEach()遍历、map()遍历返新、filter()过滤返新、reduce()累加
查找:indexOf()查找返索引无-1、includes()是否包含返布尔值、find()查询返元素、findIndex()查询第一个返索引
排序/反转:sort()排序、reverse()反转
其他:join()拼接成字符串、toString()转成字符类型、some()是否有返布尔、every()是否都满足条件返布尔、flat()、flatMap()
ES6+:Array.from()、Array.of()、fill()、findLast()、findLastIndex()

ES6的新特性

let const {}[] unicode map set symbol … proxy promise class model
块级作用域 let 和const
箭头函数 ()=> {} 简洁 无this
Promise 异步编程
class和extends继承
模板字符串 使用反引号` 定义字符串,可以嵌入表达式${}
解构赋值:从数组和对象中提取值并赋给变量
默认的参数:函数赋值可以设置默认的参数
扩展运算符:…
模块化:使用 import 和 export 语法导入和导出模块
符号(Symbol):新的数据类型,表示唯一的标识
set 数组元素是唯一,不重复
map 对象,键值对

Promise

ES6引入的异步编程的解决方案,
从语法上说,Promise是一个构造函数,可以实例化对象。封装异步操作,获取成功和失败的结果。
优点:支持链式调用,可以解决回调地狱的问题
缺点:无法取消Promise,一旦新建他就会立即执行,无法中途取消。其次,如果不设置回调函数,Promise内部抛出的错误无法反应到外部。当pending的时候,无法知道进展到了哪一步。
三种状态:pending(进行中)、fullfilled(已成功)、rejected(已失败)。
主要应用在文件读取操作、 数据库操作、AJAX网络请求、定时器

async/await

像写同步代码那样编写异步代码
async 函数返回一个 Promise对象,可以使用 then方法添加回调函数。当函数执行的时候,一旦遇到 await 就会先返回,等到异步操作完成,再接着执行函数体内后面的语句。

防抖和节流,应用场景

防抖和节流都是防止某一时间频繁触发,但是原理却不一样。
防抖是将多次执行变为只执行一次,节流是将多次执行变为每隔一段时间执行
防抖(debounce):
search搜索联想,用户在不断输入值时,用防抖来节约请求资源。
window触发resize的时候,不断的调整浏览器窗口大小会不断的触发这个事件,用防抖来让其只触发一次
节流(throttle):
鼠标不断点击触发,mousedown(单位时间内只触发一次)
监听滚动事件,比如是否滑到底部自动加载更多,用throttle来判断

闭包

定义
闭包通常发生在嵌套函数中,内部函数可以访问外部函数的变量和参数。
主要用途
数据封装:创建私有变量,防止外部的修改
函数柯里化:将多参数函数,变为单参函数
回调函数:
缺点和避免
内存泄漏:因闭包长期存在,不会被垃圾回收机制回收,导致内存泄漏,解决不需要时及时的释放
影响性能:会导致额外的内存开销。避免循环中创建闭包

原型和原型链

原型是一个对象,他包含共享属性和方法
原型链是对象的原型组成的链式结构
继承:通过原型链实现对象之间的继承

0.1+0.2 等于0.3吗?

不等于,这是因为js采用IEEE754浮点数标准,存在精度问题。可以使用toFixed的方法处理

安全

跨域CORS

原因:受同源策略的限制,web浏览器若两个页面的协议、域名、端口三者中任意一个不同,就会产生跨域
解决:
CORS(Cross-Origin Resource Sharing)‌:现代浏览器支持CORS,服务器可以在响应头中设置Access-Control-Allow-Origin来允许或拒绝跨域请求
本地做proxy代理 vue-cli代理跨域:使用devServer进行代理
Jsonp 通过

相关文章:

2025前端面试题

2025前端面试题 uniappuniapp如何打包发版到线上 vuekeep-alive 有哪几个生命周期vue3构建项目vue如何封装组件vue2的响应式原理vue3的响应式原理vue3和2的区别Vuex中的重要核心属性有哪些?Vue-router有哪几种路由守卫 es6数组去重的方法slice与splice的区别数组有哪…...

Win7本地化部署deepseek-r1等大模型详解

参考链接 在Windows 7操作系统,基于llama.cpp本地化部署 deepseek-r1模型的方法 2025-02-08 2G内存Windows7运行deepseek-r1:1.5b 这两个链接写的可能不够详细,有同学私信问实现过程,这里进一步解释一下。 一、准备 需要准备的大模型、工具…...

【ubuntu24.04】 强制重启导致大模型的磁盘挂载出错

挂载NTFS文件系统出错 各种模型放在了这个机械硬盘上,虽然速度慢,但是好在容量大。大模型在工作,但是程序看起来有问题,导致系统卡死了,然后我重启了,然后报错:wrong fs type bad option &…...

Spring Boot(8)深入理解 @Autowired 注解:使用场景与实战示例

搞个引言 在 Spring 框架的开发中,依赖注入(Dependency Injection,简称 DI)是它的一个核心特性,它能够让代码更加模块化、可测试,并且易于维护。而 Autowired 注解作为 Spring 实现依赖注入的关键工具&…...

【linux】在 Linux 服务器上部署 DeepSeek-r1:70b 并通过 Windows 远程可视化使用

【linux】在 Linux 服务器上部署 DeepSeek-r1:70b 并通过 Windows 远程可视化使用 【承接商业广告,如需商业合作请+v17740568442】 文章目录 【linux】在 Linux 服务器上部署 DeepSeek-r1:70b 并通过 Windows 远程可视化使用个人配置详情一、安装ollama二、下载deepseek版本…...

【AI大模型】Ollama部署本地大模型DeepSeek-R1,交互界面Open-WebUI,RagFlow构建私有知识库

文章目录 DeepSeek介绍公司背景核心技术产品与服务应用场景优势与特点访问与体验各个DeepSeek-R系列模型的硬件需求和适用场景 Ollama主要特点优势应用场景安装和使用配置环境变量总结 安装open-webui下载和安装docker desktop配置镜像源安装open-webui运行和使用 RagFlow介绍主…...

Unity 命令行设置运行在指定的显卡上

设置运行在指定的显卡上 -force-device-index...

Visual Studio 使用 “Ctrl + /”键设置注释和取消注释

问题:在默认的Visual Studio中,选择单行代码后,按下Ctrl /键会将代码注释掉,但再次按下Ctrl /键时,会进行双重注释,这不是我们想要的。 实现效果:当按下Ctrl /键会将代码注释掉,…...

共用poetry和conda的方法

起因 基于开源项目继续开发,发现该项目使用poetry管理依赖,但本地开发及调试环境依赖conda且未安装原生python,不支持直接安装poetry,因此需要使用conda安装及使用poetry。操作系统:Ubuntu 什么是poetry 一项依赖于…...

教程:使用 Vue 3 和 arco 实现表格合并

1. 功能概述 本教程将介绍如何使用 Vue 3 和 arco 组件库实现表格合并功能。具体来说,我们会根据表格数据中的某个字段(如 type)对表格的某一列(如入库类型列)进行合并,同时将质检说明列合并为一列。 2. …...

Docker 常用命令基础详解(二)

四、容器操作命令 4.1 运行容器 使用docker run命令可以创建并运行一个容器,它就像是一个神奇的 “启动器”,让镜像中的应用程序在容器中运行起来。其基本语法为: docker run [OPTIONS] IMAGE [COMMAND] [ARG...] 其中,OPTIONS…...

uniapp - iconfont下载本地并且运用至项目上

1、项目中创建一个文件夹放置iconfont相关文件,例如src/assets/iconfont(名称自己定义) 2、在iconfont下载项目至本地 3、解压后把文件复制进1的文件夹中 4、修改src/assets/iconfont - iconfont.css里的font-face的src地址,修…...

【前端】自己从头实现一个gpt聊天页面

预览 最小化功能点 主界面:侧边栏会话历史、聊天窗口发送和断开。侧边栏:展示会话列表,每个会话包含多条聊天记录, 通过localstorage本地储存和恢复,会话需要重命名和删除。聊天框:区分一下发送者和回答者…...

数据结构——二叉树(2025.2.12)

目录 一、树 1.定义 (1)树的构成 (2)度 2.二叉树 (1)定义 (2)二叉树的遍历 (3)遍历特性 二、练习 1.二叉树 (1)创建二叉树…...

Vulhub靶机 ActiveMQ任意 文件写入(CVE-2016-3088)(渗透测试详解)

一、开启vulhub环境 docker-compose up -d 启动 docker ps 查看开放的端口 漏洞版本:ActiveMQ在5.14.0之前的版本(不包括5.14.0) 二、访问靶机IP 8161端口 默认账户密码都是admin 1、利用bp抓包,修改为PUT方法并在fileserver…...

跟着李沐老师学习深度学习(十一)

经典的卷积神经网络 在本次笔记中主要介绍一些经典的卷积神经网络模型,主要包含以下: LeNet:最早发布的卷积神经网络之一,目的是识别图像中的手写数字;AlexNet: 是第一个在大规模视觉竞赛中击败传统计算机…...

【微软- Entra ID】Microsoft Entra ID

Microsoft Entra ID是微软提供的基于云的身份和访问管理服务。Microsoft Entra ID是一个全面的解决方案,用于管理身份、执行访问策略以及在云和本地保护您的应用程序和数据。 目录 一、查看 Microsoft Entra ID 微软Entra租户 微软Entra模式 二、比较Microsoft Entra ID与…...

Halcon相机标定

1,前言。 相机的成像过程实质上是坐标系的转换。首先空间中的点由“世界坐标系”转换到“相机坐标系”,然后再将其投影到成像平面(图像物理坐标系),最后再将成像的平面上的数据转换为图像像素坐标系。但是由于透镜的制…...

Linux 配置 MySQL 定时自动备份到另一台服务器

Linux 配置 MySQL 定时自动备份到另一台服务器 前言1、配置服务器通信1.1:配置过程 2、编写自动备份sh脚本文件3:设置定时自动执行 前言 此方案可使一台服务器上的 MySQL 中的所有数据库每天 0 点自动转储为 .sql 文件,然后将文件同步到另一…...

《安富莱嵌入式周报》第350期:Google开源Pebble智能手表,开源模块化机器人平台,开源万用表,支持10GHz HRTIM的单片机,开源CNC控制器

周报汇总地址:嵌入式周报 - uCOS & uCGUI & emWin & embOS & TouchGFX & ThreadX - 硬汉嵌入式论坛 - Powered by Discuz! 视频版: https://www.bilibili.com/video/BV1YPKEeyEeM/ 《安富莱嵌入式周报》第350期:Google开…...

LabVIEW与小众设备集成

在LabVIEW开发中,当面临控制如布鲁克OPUS红外光谱仪这类小众专业设备的需求,而厂家虽然提供了配套软件,但由于系统中还需要控制其他设备且不能使用厂商的软件时,必须依赖特定方法通过LabVIEW实现设备的控制。开发过程中&#xff0…...

无人机之无线传输技术!

一、Lightbridge和OcuSync图传技术 Lightbridge技术:这是大疆自主研发的一种专用通信链路技术,使用单向图像数据传输,类似于电视广播塔的数据传输形式。它主要采用2.4GHz频段进行传输,并且可以实现几乎“零延时”的720p高清图像传…...

移远通信边缘计算模组成功运行DeepSeek模型,以领先的工程能力加速端侧AI落地

近日,国产大模型DeepSeek凭借其“开源开放、高效推理、端侧友好”的核心优势,迅速风靡全球。移远通信基于边缘计算模组SG885G,已成功实现DeepSeek模型的稳定运行,并完成了针对性微调。 目前,该模型正在多款智能终端上进…...

rust学习一、入门之搭建简单开发环境

1、搭建开发环境(windows11) a.登录官网 一看就明白,此处略。 b.安装rustup 一看就明白,此处略。 c.安装 cargo script 或者 rust-script script cargo install cargo-script 完成后 注意:时间有一点点久。 测试 cargo s…...

FANUC机器人示教器中如何显示或关闭寄存器或IO的注释信息?

FANUC机器人示教器中如何显示或关闭寄存器或IO的注释信息? 如下图所示,我们打开一个子程序,可以看到程序中的寄存器和IO是显示注释信息的, 如果想关闭注释显示的话,怎么设置? 如下图所示,按下下一页的箭头(NEXT键), 如下图所示,点击“编辑”,在弹出的窗口中,选择“…...

在SpringBoot项目中有k8s配置,但报错

如下报错一般是你没有将k8s的config拷贝到项目里,你可以将k8s主节点的config拷贝一下到项目中。 2025-02-13 09:27:21.873 ERROR 1671 --- [.models.V1Pod-1] i.k.c.informer.cache.ReflectorRunnable : class io.kubernetes.client.openapi.models.V1Pod#Reflec…...

在springboot加vue项目中加入图形验证码

后端 首先先要创建一个CaptchaController的类,可以在下面的代码中看到 在getCaptcha的方法里面写好了生成随机的4位小写字母或数字的验证码,然后通过BufferedImage类变为图片,顺便加上了干扰线。之后把图片转为Base64编码方便传给前端 为了…...

23. AI-大语言模型

文章目录 前言一、LLM1. 简介2. 工作原理和结构3. 应用场景4. 最新研究进展5. 比较 二、Transformer架构1. 简介2. 基本原理和结构3. 应用场景4. 最新进展 三、开源1. 开源概念2. 开源模式3. 模型权重 四、再谈DeepSeek 前言 AI‌ 一、LLM LLM(Large Language Mod…...

蓝桥杯备赛笔记(二)

这里的笔记是关于蓝桥杯关键知识点的记录,有别于基础语法,很多内容只要求会用就行,无需深入掌握。 文章目录 前言一、时间复杂度1.1 时间复杂度⭐1.2 空间复杂度1.3 分析技巧 二、枚举2.1 枚举算法介绍2.2 解空间的类型2.3 循环枚举解空间 三…...

MATLAB中的APPdesigner绘制多图问题解析?与逻辑值转成十进制

在matlab APPdesigner中绘图可以用UIAxes组件进行绘图,但是当想多张图时,只能提前绘制图像区域不方便。下面是几种办法: 为了操作可以添加Panl组件,方便操作。 1、当是要求的几个图像大小都是相同时刻采用函数: til…...