前端笔试题(一)

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 --销毁后

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

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

相关文章

Java重写ArrayList方法

前言&#xff1a;ArrayList中有很多方法&#xff0c;我们只有深知这些方法是怎么实现的才能更好的使用&#xff0c;不用死记硬背 我们来一一实现&#xff08;重写&#xff09; 前提准备&#xff1a;我们需要先创建一个类&#xff0c;类中写ArrayList的内部结构组成 public cl…

82. 删除排序链表中的重复元素 II

给定一个已排序的链表的头 head &#xff0c; 删除原始链表中所有重复数字的节点&#xff0c;只留下不同的数字 。返回 已排序的链表 。 示例 1&#xff1a; 输入&#xff1a;head [1,2,3,3,4,4,5] 输出&#xff1a;[1,2,5]示例 2&#xff1a; 输入&#xff1a;head [1,1,1,2…

Linux常用功能

Linux是一个功能强大的操作系统&#xff0c;具有许多常用功能。以下是一些Linux的常用功能&#xff1a; 命令行界面&#xff1a;Linux的命令行界面是用户与操作系统交互的主要方式。用户可以通过输入命令来执行各种操作&#xff0c;例如文件管理、系统管理、软件安装等。包管理…

代码随想录算法训练营第五天|哈希表理论基础,242.有效的字母异位词,349. 两个数组的交集,202. 快乐数,1. 两数之和

系列文章目录 代码随想录算法训练营第一天|数组理论基础&#xff0c;704. 二分查找&#xff0c;27. 移除元素 代码随想录算法训练营第二天|977.有序数组的平方 &#xff0c;209.长度最小的子数组 &#xff0c;59.螺旋矩阵II 代码随想录算法训练营第三天|链表理论基础&#xff…

【Elsevier】中科院分区升至1区TOP,录用率50%, 代表作神刊!

发表说 截图来源&#xff1a;LetPub 01 期刊概况 Computers & Industrial Engineering 【出版社】Elsevier 【ISSN】0360-8352 【检索情况】SCI&EI双检 【WOS收录年份】1976年 【出刊频率】月刊&#xff0c;最新一期Volume 188 &#xff0c;In progress (February…

arcgis javascript api4.x以basetilelayer方式加载arcgis发布的栅格切片服务

需求&#xff1a; 以arcgis js api的basetilelayer加载arcgis发布的栅格切片服务 效果图&#xff1a; 其中和tileinfo和lods&#xff0c;这样获取&#xff1a; https://map.geoq.cn/arcgis/rest/services/ChinaOnlineCommunity/MapServer/?fpjson urltemplate&#xff1a; …

TortoiseGit 2.15.0.0 安装与配置(图文详细教程)

TortoiseGit的安装与配置 TortoiseGit是Tortoise为Git提供的版本可视化工具&#xff0c;简化了记忆Git命令行的过程&#xff0c;将命令行可视化。 确保自己电脑中已经下载好了git 官网下载TortoiseGit Download – TortoiseGit – Windows Shell Interface to Git 选择64-bi…

电商平台api接口对接须知

随着互联网的发展和普及&#xff0c;电商平台已成为人们日常生活中不可或缺的一部分。而为了保证电商平台的正常运行&#xff0c;平台与开发者之间需要进行数据交互&#xff0c;这便涉及到了电商平台API接口对接的问题。本文将详细介绍电商平台API接口对接的须知事项。 一、了…

【Linux】如何检查Linux用户是否具有sudo权限

问题背景或前提知识 在Linux系统中&#xff0c;sudo&#xff08;superuser do&#xff09;是一个重要的命令&#xff0c;它允许普通用户以系统管理员的身份执行命令。了解用户是否拥有sudo权限对于系统管理和安全性来说是非常重要的。 技术名词解释 sudo&#xff1a;一种程序…

springboot摄影跟拍预定管理系统源码和论文

首先,论文一开始便是清楚的论述了系统的研究内容。其次,剖析系统需求分析,弄明白“做什么”,分析包括业务分析和业务流程的分析以及用例分析,更进一步明确系统的需求。然后在明白了系统的需求基础上需要进一步地设计系统,主要包罗软件架构模式、整体功能模块、数据库设计。本项…

ZZULIOJ 1106: 回文数(函数专题)

题目描述 一个正整数&#xff0c;如果从左向 右读&#xff08;称之为正序数&#xff09;和从右向左读&#xff08;称之为倒序数&#xff09;是一样的&#xff0c;这样的数就叫回文数。输入两个整数m和n&#xff08;m<n)&#xff0c;输出区间[m&#xff0c;n]之间的回文数。…

openssl3.2 - 官方demo学习 - sconnect.c

文章目录 openssl3.2 - 官方demo学习 - sconnect.c概述笔记END openssl3.2 - 官方demo学习 - sconnect.c 概述 TLS客户端 - 使用根证书, 非阻塞, 向服务器要东西. 笔记 开始一个新demo学习时, 要从头配置包含路径, 麻烦. 直接拷贝上一个实现工程, 换掉实现.c方便一些. 换的…

中国泡菜市场供需与投资预测研究报告(2024版)

内容简介&#xff1a; 泡菜主要是靠乳酸菌的发酵生成大量乳酸而不是靠盐的渗透压来抑制腐败微生物的。泡菜使用低浓度的盐水&#xff0c;或用少量食盐来腌渍各种鲜嫩的蔬菜&#xff0c;再经乳酸菌发酵&#xff0c;制成一种带酸味的腌制品&#xff0c;只要乳酸含量达到一定的浓…

LeetCode 2645.构造有效字符串的最少插入数:O(n) + O(1)

【LetMeFly】2645.构造有效字符串的最少插入数&#xff1a;O(n) O(1) 力扣题目链接&#xff1a;https://leetcode.cn/problems/minimum-additions-to-make-valid-string/ 给你一个字符串 word &#xff0c;你可以向其中任何位置插入 "a"、"b" 或 "…

设计模式之多线程分工模式---Worker Thread模式

系列文章目录 设计模式之避免共享的设计模式Immutability&#xff08;不变性&#xff09;模式 设计模式之并发特定场景下的设计模式 Two-phase Termination&#xff08;两阶段终止&#xff09;模式 设计模式之避免共享的设计模式Copy-on-Write模式 设计模式之避免共享的设计模…

Javascript 地狱级的if else / switch case该如何优化?

目录 问题 一、7大策略优化 1.单个if语句优化 2.if/else语句优化 3.多条件判断 4.多个 if else 嵌套优化策略 问题场景 如何优化 1.使用卫语句 2. try catch优化 3. 可选链 optional chaining 5.Map优化 场景实战 6.策略模式优化 7.复杂二维数组策略模式 …

CycleGAN(Cycle-Consistent Generative Adversarial Network)

CycleGAN&#xff08;Cycle-Consistent Generative Adversarial Network&#xff09;是一种用于图像到图像转换的深度学习模型。其主要目标是学习两个域之间的映射&#xff0c;例如将马的图像转换为斑马的图像&#xff0c;而无需配对的训练数据。以下是CycleGAN图像到图像转换的…

简单易用的快速原型软件终于被我找到了!

在产品开发过程中&#xff0c;原型设计是一个非常重要的环节&#xff0c;它不仅有助于团队之间的合作和沟通&#xff0c;而且是产品是否符合用户体验的关键。在本文中&#xff0c;我们将推荐一些有用的原型设计工具 即时设计 即时设计是一种在线原型设计工具。你可以用它在线…

UITextField设置

UITextField设置 //初始化textfield并设置位置及大小UITextField *text [[UITextField alloc]initWithFrame:CGRectMake(20, 20, 130, 30)];//设置边框样式&#xff0c;只有设置了才会显示边框样式 text.borderStyle UITextBorderStyleRoundedRect;typedef enum {UITextBord…

基于云平台技术的XCALL的浅谈

基于云平台技术的XCALL&#xff08;eXpandable Call&#xff09;创新主要体现在以下几个方面&#xff1a; 可扩展性&#xff1a;XCALL利用云平台的可扩展性&#xff0c;能够处理大量并发通话&#xff0c;满足各种规模的业务需求。随着用户数量的增长&#xff0c;云平台可以动态…