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

前端笔试题(一)

1.vue如何实现数据的双向绑定

  • 利用v-model来实现双向数据绑定

  • 通过Object.defineProperty()来劫持各个属性的setter,getter,在数据变动时发布消息给订阅者,触发相应的监听回调来渲染视图

2.使用vue渲染大量数据时,如何进行优化(思路)

  • 分页:将数据分成多个页面,每次只加载当前页面的数据,减少一次性加载大量数据的压力(可以使用分页组件或者手动分页)

  • 虚拟滚动:只渲染可见区域的数据,而不是全部数据。通过监听滚动事件,动态计算可见区域的数据,并只渲染这部分数据,可以大大提高渲染的性能(可以使用第三方库实现虚拟滚动,例如:vue-virtual-scroller)

  • 懒加载:只在需要时加载数据。例如,当用户滚动到某个位置时,再加载该位置附近的数据。可以结合虚拟滚动实现懒加载。

  • 虚拟DOM:Vue 的虚拟 DOM 会对整个数据集进行比对,找出差异并更新 DOM。对于超大数据集,可以考虑使用差异化算法,只对变化的部分进行更新,减少渲染的时间

  • 监听和计算属性

  • nextTick:将渲染任务放到事件循环的下一个tick中执行

  • 异步组件:async和await

  • 缓存组件:keep-alive。当在组件之间切换的时候,有时会想保持这些组件的状态,以避免复重渲染导致的性能等问题,使用<keep-alive>包裹动态组件时,会缓存不活动的组件实例,而不是销毁它们。

  • v-for:使用 Vue 的列表组件(如 v-for)进行渲染,而不是手动操作 DOM。Vue 的列表组件在渲染大量数据时有优化措施,可以提高性能。

  • v-show和v-if:但是需要注意,一个页面当中不能大量使用v-if,要不然也会造成性能问题

3.分别写出jQuery、vue、小程序、uniapp中本地存储数据和接收数据是什么

  • jQuery和vue

    • 本地存储的三种方式:cookie、localstorage、sessionstorage

    • 通过Ajax来从服务器接收数据

  • 小程序

    • wx.setStorageSync(key,data):其中key时数据的键,data时要存储的数据

    • 可以通过发送网络请求来接收服务器端的数据。使用wx.request方法发送请求,并使用回调函数处理返回的数据.

  • uniapp

    • uni.setStorageSync(key,data)

    • 和小程序类似,在uni-app中也可以通过发送网络请求来接收服务器端的数据。使用uni.request方法发送请求,并使用回调函数处理返回的数据。

4.数组去重有哪些方式,请写出1-2种你觉得最优的方案(前两个最优)

  • set(最优)

    • 一大特性:不允许有重复值的存在

    • 这种方法简洁明了,利用Set的特性确保了数组中的元素唯一性

    • 弊端:他无法去重引用类型的数据

      const arr = [1,1,2,2,3,3,4,4,5,5];
      const setData = Array.from(newSet(arr));
      console.log(setData);

  • 双重for循环

    • 如果需要支持旧版本的 JavaScript 引擎,或者对数组元素的顺序有特殊要求,可以选择使用遍历+判断的方式

    const res1 = [1, 2, 2, 3, 1, 5, 2]
    for (let i = 0; i < res1.length; i++) {for (let j = i + 1; j < res1.length; j++) {if (res1[i] === res1[j]) {res1.splice(j, 1)j--}}
    }
    console.log(res1)

  • indexof

    • 在ES5及以下的环境中,可以使用indexOf或includes方法进行数组去重

      function uniqueArray(arr) {var result = [];for (var i = 0; i < arr.length; i++) {if (result.indexOf(arr[i]) === -1) {result.push(arr[i]);}}return result;
      }

  • includes

    • includes的判断方法:循环数组的每一样,用新数组检测当前数组中是否包含数组项,如果不包含,则追加该元素

      function uniqueArray(arr) {var result = [];for (var i = 0; i < arr.length; i++) {if (!result.includes(arr[i])) {result.push(arr[i]);}}return result;
      }

5.var、let、const的区别

  • var:

    • 声明的变量存在变量提升

    • 声明的是全局变量

    • 可以重复声明相同的变量名

  • let

    • 声明的变量不存在变量提升

    • 声明的是局部变量(块级作用域)

    • 不可以重复声明相同的变量名

    • 可以重新进行赋值

  • const

    • 声明的常量不存在常量提升

    • 声明的是局部常量(块级作用域)

    • 不可以重复声明相同的常量名

    • 如果是基本数据类型的话,不允许重新进行赋值;如果是引用数据类型的话,可以重新赋值

6.什么时候需要清除浮动,清除浮动的方式有哪些

什么时候需要清除浮动

  • 父盒子没设高

  • 子盒子使用了浮动

  • 影响到了布局

清除浮动的方式

  • 给父元素加高

  • overflow:hidden

  • 给使用浮动元素后面添加空的块元素,添加clear: both

  • 给使用浮动的父级添加 after 伪类

    /* #father::after{content: ""; display: block; clear: both;} */

7.行内元素、块级元素、空元素有哪些

行内元素

span、a、input、button、img、textarea、label(标签为 input 元素定义标注(标记))、select(单选或多选)

块级元素

div、p、h1-h6、dl、ul、ol、li、table(表格)、td(单元格)

空元素

hr、br、link、template(vue中的)

8.==和===的区别

==:

  • 只判断值是否正确,可能会有隐式类型转换的情况

===:

  • 先会判断值是否相等

  • 类型之间不可以进行隐式转换

  • 判断当前值的数据类型是否相等

  • (三个条件都成立才会达到===)

9.谈一谈你对MVVM模式的理解

是vue的底层原理,是一种设计模式

全称是model-view-ViewModel

model是数据模型,view时UI组件,ViewModel时model层和view层之间的桥梁。view层的数据变化会同步到model中,model的数据更新也会立刻反应到view层上,ViewModel通过双向数据绑定把view层和model层连接起来

10.vue的生命周期有哪些

vue2

beforeCreate --创建前

Created --创建后

beforeMount --挂载前

Mounted --挂载后

beforeUpdate --更新前

Updated --更新后

beforeDestroy --销毁前

Destroyed --销毁后

vue3

setup --创建前后

onBeforeMount --挂载前

onMounted --挂载后

onBeforeUpdate --更新前

onUpdated --更新后

onBeforeUnmount --销毁前

onUnmounted --销毁后

相关文章:

前端笔试题(一)

1.vue如何实现数据的双向绑定 利用v-model来实现双向数据绑定 通过Object.defineProperty()来劫持各个属性的setter&#xff0c;getter&#xff0c;在数据变动时发布消息给订阅者&#xff0c;触发相应的监听回调来渲染视图 2.使用vue渲染大量数据时&#xff0c;如何进行优化…...

Springboot开发的大学生寝室考勤系统刷脸进出宿舍系统技术文档

宿舍出入系统 1.2采集学生人脸信息和宿管人脸信息 前端使用navigator.mediaDevices.getUserMedia&#xff08;考虑个浏览器的内核差异&#xff0c;此处以最新的标准API:navigator.mediaDevices.getUserMedia为例&#xff09;获取用户浏览器的摄像头并开启视频&#xff0c;使用…...

网络共享服务

存储类型&#xff1a;直连式&#xff08;DAS&#xff09;:距离最近&#xff0c;存储设备且直接连接到服务器上 存储区域网络&#xff08;SAN&#xff09;&#xff1a;适用于大型应用或数据库系统&#xff0c;可以使用文件的空间&#xff0c; 以及管理空间…...

资本主义的市场竞争?IBM总监Jerry Chow 谈量子计算的未来

​ 人物介绍&#xff1a;Jerry M.Chow博士在耶鲁大学取得物理博士学位。担任IBM量子系统总监&#xff0c;其研究重点是面向容错量子计算的多量子比特系统。他主要为IBM的量子系统路线图制定战略&#xff0c;与硬件团队领导者一起设定目标研究领域&#xff0c;同时也确保最佳的客…...

什么是残差矢量量化?

一、说明 基于残差矢量量化的神经音频压缩方法正在重塑现代音频编解码器的格局。在本指南中&#xff0c;了解 RVQ 背后的基本思想以及它如何增强神经压缩。 数据压缩在当今的数字世界中发挥着关键作用&#xff0c;促进信息的高效存储和传输。由于当今超过 80% 的互联网流量来自…...

计算机网络(第六版)复习提纲2

二、物理层 2.1 物理层基本概念 物理层协议常常成为物理层规程 物理层的主要任务为确定与传输媒体的接口有关的一些特性&#xff1a; 1.机械特性&#xff1a;指明接口所用接线器的尺寸等&#xff1b; 2.电气特性&#xff1a;指明接口电缆各条线上的电压范围&#xff1b; 3.功能…...

11k+star 开源笔记应用真香 centos部署教程

leanote binary installation on Mac and Linux (En) life edited this page on Jul 21, 2017 10 revisions Pages 26 Home How to develop leanote 如何开发leanote How to install leanote on Ubuntu? How to Upgrade Leanote Install Mongodb leanote api leanote …...

win下安装tensorflow

1首先ctrlaltdelete打开任务管理器查看GPU型号 2或者右键我的电脑然后如下方式查看显卡发现没有navida没有GPU...

SpringBoot 入门

1.SpringBoot介绍 1.1.什么是SpringBoot Spring Boot是由Pivotal团队提供的全新框架&#xff0c;其中“Boot”的意思就是“引导”&#xff0c;Spring Boot 并不是对 Spring 功能上的增强&#xff0c;而是提供了一种快速开发 Spring应用的方式。 1.2.Spring Boot 特点 • 嵌…...

使用WebFlux处理WebSocket连接的全生命周期案例

使用WebFlux处理WebSocket连接的全生命周期案例 简介&#xff1a; 在Web应用程序开发中&#xff0c;WebSocket是一种用于实现双向通信的协议。Spring WebFlux提供了对WebSocket的支持&#xff0c;使您能够轻松地处理WebSocket连接和消息。本博客将介绍如何使用WebFlux处理WebS…...

【REST2SQL】10 REST2SQL操作指南

【REST2SQL】01RDB关系型数据库REST初设计 【REST2SQL】02 GO连接Oracle数据库 【REST2SQL】03 GO读取JSON文件 【REST2SQL】04 REST2SQL第一版Oracle版实现 【REST2SQL】05 GO 操作 达梦 数据库 【REST2SQL】06 GO 跨包接口重构代码 【REST2SQL】07 GO 操作 Mysql 数据库 【RE…...

199_二叉树的右视图

描述 给定一个二叉树的 根节点 root&#xff0c;想象自己站在它的右侧&#xff0c;按照从顶部到底部的顺序&#xff0c;返回从右侧所能看到的节点值。 思路 对树进行深度优先搜索&#xff0c;在搜索过程中&#xff0c;我们总是先访问右子树。那么对于每一层来说&#xff0c;…...

第七讲_css浮动

css浮动 1. 设置浮动2. 浮动的特点3. 浮动的影响4. 解决浮动的影响4.1 解决父元素高度塌陷的问题4.2 解决对兄弟元素影响问题 1. 设置浮动 浮动是通过float属性设置&#xff0c;float取值范围&#xff1a; none&#xff1a;不浮动&#xff0c;默认值。left&#xff1a;向左浮…...

2024秋招,顺丰科技测试开发工程师一面

前言 今天回顾一下&#xff0c;一个被捞的全流程面试经历 时间线 9月21日测评 10月26日技术一面&#xff0c;本来是11点半开始&#xff0c;我正做另一个笔试呢&#xff0c;突然给我打电话开面 20分钟结束&#xff0c;一开始以为KPI&#xff0c;结果给过了 10月31日技术二…...

基于apache的http文件服务配置

背景&#xff1a; 公司的产品使用的第三方模组可以OTA&#xff0c;厂家提供的是window开启软件&#xff0c;这样就可以在本机做http下载服务器&#xff0c;然后使用端口映射的方式&#xff0c;公开到外网&#xff0c;这样就可以进行4G网络访问内网服务器了。但这个有个弊端&am…...

连铸工艺和模铸工艺有什么区别。

问题描述&#xff1a;连铸工艺和模铸工艺有什么区别。 问题解答&#xff1a; 连铸工艺和模铸工艺在多个方面存在显著差异&#xff1a; 指代不同&#xff1a; 模铸是成批大量生产锻件的锻造方法。连铸即为连续铸钢的锻造方法。 工艺不同&#xff1a; 模铸在锻压机械的作用…...

pyqt treeWidget树生成

生成treeWidget树与获取treeWidget树节点的数据 # encodingUTF-8 import sys from PyQt5.QtCore import Qt from PyQt5.QtWidgets import QApplication, QTreeWidgetItem, QLineEdit, QSpinBox, QComboBox from PyQt5.QtWidgets import QWidget from release_test import Ui_F…...

DataFunSummit:2023年云原生大数据峰会:核心内容与学习收获(附大会核心PPT下载)

随着数字化转型的深入推进&#xff0c;大数据技术已经成为企业获取竞争优势的关键因素之一。本次峰会汇聚了业界顶尖的大数据专家、企业领袖和技术精英&#xff0c;共同探讨云原生大数据领域的最新技术和趋势。本文将深入分析峰会的核心内容&#xff0c;并探讨参会者从中能学到…...

docker 容器添加指定网络地址

docker 容器添加指定网络地址 在搭建halo博客时&#xff0c;准备让 halo、mysql8.1、nginx 三个容器在同一个网段中&#xff0c;并指定IP。 实现docker内部容器之间网络互通。 查看容器网络信息命令 docker inspect 容器名各容器部署成功后网络效果如下&#xff1a; nginx …...

后端怎样防止重复提交订单?

参考文章 通常我们可以在前端通过防抖和节流来解决短时间内请求重复提交的问题&#xff0c; 如果因网络问题、Nginx重试机制、微服务Feign重试机制或者用户故意绕过前端防抖和节流设置&#xff0c;直接频繁发起请求&#xff0c;都会导致系统防重请求失败&#xff0c;甚至导致后…...

盘古信息PCB行业解决方案:以全域场景重构,激活智造新未来

一、破局&#xff1a;PCB行业的时代之问 在数字经济蓬勃发展的浪潮中&#xff0c;PCB&#xff08;印制电路板&#xff09;作为 “电子产品之母”&#xff0c;其重要性愈发凸显。随着 5G、人工智能等新兴技术的加速渗透&#xff0c;PCB行业面临着前所未有的挑战与机遇。产品迭代…...

.Net框架,除了EF还有很多很多......

文章目录 1. 引言2. Dapper2.1 概述与设计原理2.2 核心功能与代码示例基本查询多映射查询存储过程调用 2.3 性能优化原理2.4 适用场景 3. NHibernate3.1 概述与架构设计3.2 映射配置示例Fluent映射XML映射 3.3 查询示例HQL查询Criteria APILINQ提供程序 3.4 高级特性3.5 适用场…...

CMake 从 GitHub 下载第三方库并使用

有时我们希望直接使用 GitHub 上的开源库,而不想手动下载、编译和安装。 可以利用 CMake 提供的 FetchContent 模块来实现自动下载、构建和链接第三方库。 FetchContent 命令官方文档✅ 示例代码 我们将以 fmt 这个流行的格式化库为例,演示如何: 使用 FetchContent 从 GitH…...

tree 树组件大数据卡顿问题优化

问题背景 项目中有用到树组件用来做文件目录&#xff0c;但是由于这个树组件的节点越来越多&#xff0c;导致页面在滚动这个树组件的时候浏览器就很容易卡死。这种问题基本上都是因为dom节点太多&#xff0c;导致的浏览器卡顿&#xff0c;这里很明显就需要用到虚拟列表的技术&…...

有限自动机到正规文法转换器v1.0

1 项目简介 这是一个功能强大的有限自动机&#xff08;Finite Automaton, FA&#xff09;到正规文法&#xff08;Regular Grammar&#xff09;转换器&#xff0c;它配备了一个直观且完整的图形用户界面&#xff0c;使用户能够轻松地进行操作和观察。该程序基于编译原理中的经典…...

关键领域软件测试的突围之路:如何破解安全与效率的平衡难题

在数字化浪潮席卷全球的今天&#xff0c;软件系统已成为国家关键领域的核心战斗力。不同于普通商业软件&#xff0c;这些承载着国家安全使命的软件系统面临着前所未有的质量挑战——如何在确保绝对安全的前提下&#xff0c;实现高效测试与快速迭代&#xff1f;这一命题正考验着…...

(一)单例模式

一、前言 单例模式属于六大创建型模式,即在软件设计过程中,主要关注创建对象的结果,并不关心创建对象的过程及细节。创建型设计模式将类对象的实例化过程进行抽象化接口设计,从而隐藏了类对象的实例是如何被创建的,封装了软件系统使用的具体对象类型。 六大创建型模式包括…...

「全栈技术解析」推客小程序系统开发:从架构设计到裂变增长的完整解决方案

在移动互联网营销竞争白热化的当下&#xff0c;推客小程序系统凭借其裂变传播、精准营销等特性&#xff0c;成为企业抢占市场的利器。本文将深度解析推客小程序系统开发的核心技术与实现路径&#xff0c;助力开发者打造具有市场竞争力的营销工具。​ 一、系统核心功能架构&…...

LOOI机器人的技术实现解析:从手势识别到边缘检测

LOOI机器人作为一款创新的AI硬件产品&#xff0c;通过将智能手机转变为具有情感交互能力的桌面机器人&#xff0c;展示了前沿AI技术与传统硬件设计的完美结合。作为AI与玩具领域的专家&#xff0c;我将全面解析LOOI的技术实现架构&#xff0c;特别是其手势识别、物体识别和环境…...

Sklearn 机器学习 缺失值处理 获取填充失值的统计值

💖亲爱的技术爱好者们,热烈欢迎来到 Kant2048 的博客!我是 Thomas Kant,很开心能在CSDN上与你们相遇~💖 本博客的精华专栏: 【自动化测试】 【测试经验】 【人工智能】 【Python】 使用 Scikit-learn 处理缺失值并提取填充统计信息的完整指南 在机器学习项目中,数据清…...