【每日前端面经】2024-03-01

题目来源: 牛客

MVVM怎么实现

MVVM分别指View、Model、ViewModel,View通过View-Model的DOM监听器将事件绑定到Model上,而Model则通过Data Bindings来管理View中的数据,View-Model从中起到一个连接的作用

  • 响应式: vue如何监听data的属性变化
  • 模板解析: vue的模板是如何被解析
  • 渲染: vue的模板是如何被渲染成HTML

发布订阅模式

发布订阅模式是一种对象间一对多的依赖关系,当一个对象的状态发送改变时,所有依赖于它的对象都将得到状态改变的通知。订阅者把自己想订阅的事件注册到调度中心,当发布者发布该事件到调度中心,由调度中心统一调度订阅者注册到调度中心的回调函数

  • 创建一个对象
  • 在该对象上创建一个缓存列表
  • on 方法用来把函数fn都加到缓存列表中
  • emit 方法用来取到arguments里第一个当作event,根据event值去执行对应缓存列表中的函数
  • off 方法可以根据event值取消订阅
  • once 方法只监听一次,调用完毕后删除缓存函数

观察者模式和发布订阅模式的区别

  • 观察者模式是软件设计模式中的一种,但发布订阅模式是软件架构模式的一种消息范式
  • 观察者模式需要观察者和被观察者,发布订阅模式需要发布者、订阅者和发布订阅中心
  • 观察者模式一般是一对多的关系,通过被观察者主动建立,需要至少三个方法:添加观察者|移除观察者|通知观察者;发布订阅者是基于一个中心来建立整个体系,其中发布者和订阅者不直接进行通信,而是发布者把要发布的消息交给中心管理,订阅者也是根据自己的情况按需订阅消息

Vue单向数据流

所有的prop都使得其父子prop之间形成了一个单向下行绑定:父级prop的更新会向下流动到子组件中,但是反过来则不行。这样能防止子组件意外改变父组件的状态,从而导致应用的数据流向难以理解

原生JS监听鼠标

  • click: 单击鼠标左键
  • dblclick: 单机鼠标右键
  • mousedown: 单机任意一个鼠标按钮
  • mouseout: 鼠标指针位于某个元素啊上且将要移除元素的边界
  • mouseover: 鼠标指针移出某个元素到另一个元素上
  • mouseup: 松开任意一个鼠标按钮时发生
  • mousemove: 鼠标在某个元素上持续发生

cookie|localstorage|sessionstorage

三者都是开发中用到的临时存储客户端会话信息或者数据的方法

  • 有效期不同: cookie有效期可以设置,默认时浏览器关闭后失效;sessionStorage默认是当前页面关闭后失效;localStorage默认是永久有效,需要手动删除
  • 存储大小不同: cookie在4kb左右;localStorage和sessionStorage的容量在5Mb
  • 服务端通信: cookie会参与到服务端通信中,一般会携带在http请求的头部中;localStorage和sessionStorage不参与服务端通信
  • 读写操作: cookie操作起来较为繁琐,部分数据不可读取操作;sessionStorage和localStorage操作起来较为简便
  • 支持程度: cookie出现时间更早,浏览器支持程度更高

盒子模型

盒子分为margin、border、padding、content,其中width=content

怪异盒模型

盒子分为margin、border、padding、content,其中width=content + padding * 2 + border * 2

ref|reactive|toRef|toRefs

  • ref: 用于为数据添加响应式状态,获取数据值需要.value
  • reactive: 用于为对象添加响应式状态,不需要.value
  • toRef: 用于为源响应式对象上的属性新建一个ref,从而保持对其源对象的响应式连接,返回一个ref数据
  • toRefs: 用于将响应式对象转化成结果对象,其中结果对象的每个属性都是指向原始对象相应属性的ref,可以在对象解构时赋予响应式

JS数据类型

  • Number
  • Boolean
  • Null
  • Undefined
  • Object
  • String
  • Symbol
  • BigInt

v-model

v-model负责监听用户的输入事件以更新数据,背后由两个操作:v-bind绑定value属性的值;v-on绑定input事件监听函数

MVVM框架理解及其原理实现
JavaScript 发布-订阅模式
理解【观察者模式】和【发布订阅】的区别
理解vue的单向数据流
JS鼠标事件(非常详细)
cookie、localStorage和sessionStorage三者的区别
CSS详解——盒子模型
全网最详细的v-model讲解
ref、reactive、toRef、toRefs的区别

新手发文,礼貌求关❤️

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

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

相关文章

深入 Starknet 去中心化世界,探秘实用开发利器

Starknet 近期开放空投,面向 130 万地址总量发放超 7 亿枚 Token,让 ECMP 早期贡献者、GitHub 开源开发者、Starknet 用户等各个层面的生态参与者都得以深度参与。 盛宴的背后,是 Starknet 正迎来发展的关键机遇。在今年以太坊坎昆升级的背景…

从别人的开源项目学习并吸收经验,然后逐步搭建自己的Java项目是一个很好的学习方法

从别人的开源项目学习并吸收经验,然后逐步搭建自己的Java项目是一个很好的学习方法。以下是一些建议的步骤,帮助你从0开始搭建并不断完善自己的Java项目,直至达到高可靠、高稳定、高并发、高数据安全,并可以拆分为微服务的大型高质…

【漏洞复现】某厂商上网行为管理系统static_convert命令执行漏洞

Nx01 产品简介 天融信上网行为管理系统是天融信公司凭借多年来的安全产品研发经验,为满足各行各业进行网络行为管理和内容审计的专业产品。 Nx02 漏洞描述 天融信上网行为管理系统老版本static_convert.php接口存在RCE漏洞,攻击者利用此漏洞可以获取服务…

超强预测算法:XGBoost预测模型

目录 往期精彩内容: 多变量特征序列、单序列数据预测实战 前言 1 风速数据预处理与数据集制作 1.1 导入数据 1.2 多变量数据预处理与数据集制作 1.3 单序列数据预处理与数据集制作 2超强模型XGBoost——原理介绍 3 模型评估和对比 3.1 随机森林预测模型 3…

基于NeRF/Gaussian的全新SLAM算法

什么是SLAM? SLAM,即同时定位与地图构建技术,SLAM可以让机器人、无人机和其他自动化系统能够在未知环境中同时进行自我定位和环境映射。 为什么是NeRF-Based SLAM? 传统CG将输入图像重新投影再融合到新的视图摄像机中&#xff0c…

InfiniBand 200Gbps QSFP56 高速线缆/光缆和光模块解决方案

随着数据中心和人工智能迅速发展,对高速、低延迟和低功耗的数据传输需求变得至关重要。飞速(FS)提供针对各种高性能计算场景量身定制的各种InfiniBand线缆和光模块产品。本文旨在概述飞速(FS)200G InfiniBand HDR 光缆…

深圳地铁12号线绿色出行新时代,格力中央空调助力节能飞跃

深圳地铁12号线,作为城市交通的重要组成部分,其运行贯穿着前海、南山、宝安、西乡等多个区域,承载着数以万计的乘客,是深圳市民出行的重要选择。在这条城市动脉上,一项革命性的变革正在悄然发生——绿色出行的新时代正…

MSCKF2讲:JPL四元数与Hamilton四元数

MSCKF2讲:JPL四元数与Hamilton四元数 文章目录 MSCKF2讲:JPL四元数与Hamilton四元数2 JPL四元数2.1 定义与区别2.2 JPL四元数的乘法2.3 反对称矩阵2.4 Ω ( ω ) \Omega(\omega) Ω(ω)矩阵2.5 JPL四元数与旋转矩阵的转换2.6 JPL四元数导数2.7 JPL四元数…

SpringCloud搭建微服务之Consul服务注册与发现

1. Consul介绍 Consul是由HashiCorp公司使用Go语言开发的一款开源工具,主要用于实现分布式系统的服务发现和服务配置,其内置了服务注册与发现框架、分布式一致性协议实现、健康检查、Key-Value存储、多数据中心方案。Consul具有高可移植性,支…

Java多线程系列——Executor

目录 Executor框架概览 核心组件 1. 任务(Task) 2. 线程池(ThreadPool) 3. 任务调度 4. 任务执行与结果检索 使用案例 实际应用场景 总结 Java的多线程编程是Java语言提供的核心特性之一,允许开发者有效地管理…

【数仓】Hadoop软件安装及使用(集群配置)

一、环境准备 1、准备3台虚拟机 Hadoop131:192.168.56.131Hadoop132:192.168.56.132Hadoop133:192.168.56.133 本例系统版本 CentOS-7.8,已安装jdk1.8 2、hosts配置,关闭防火墙 vi /etc/hosts添加如下内容&#x…

ip获取+归属地实现

1.背景 现在的社交平台一般都需要展示用户的归属地,这个功能有下面二个主要功能点,接下来我们来介绍下具体实现。 IP 获取 IP 转归属地 2.ip获取 2.1 Http请求 对于controller的请求,我们只需要写个拦截器,将用户的ip设置进上下文即可,非常方便。 @Override public bo…

生成式AI设计模式:综合指南

原文地址:Generative AI Design Patterns: A Comprehensive Guide 使用大型语言模型 (LLM) 的参考架构模式和心理模型 2024 年 2 月 14 日 对人工智能模式的需求 我们在构建新事物时,都会依赖一些经过验证的方法、途径和模式。对于软件工程师来说&am…

物联网与智慧城市的融合:构建智能化、便捷化、绿色化的城市未来

一、引言 随着科技的飞速发展和城市化的不断推进,物联网技术正逐步渗透到城市的各个领域,成为推动智慧城市建设的核心力量。物联网与智慧城市的融合,不仅为城市治理提供了高效、智能的解决方案,也为市民的生活带来了前所未有的便…

如何在Node.js中使用定时器

在Node.js中使用定时器是一项常见且重要的任务,特别是在需要执行定时任务或者轮询操作的情况下。Node.js提供了多种方式来实现定时器功能,包括setTimeout、setInterval和setImmediate等方法。本篇博客将介绍如何在Node.js中使用这些定时器,并…

(数据结构)二叉树

8.二叉树 8.1概述 二叉树是一种基本的非线性数据结构,它是由n(n>0)个节点构成的有限集合。在二叉树中,每个节点最多有两个子节点,通常被称作左孩子(left child)和右孩子(right c…

把python完全卸载干净

1.winR,输入control回车,点击程序和功能,在搜索框输入python,右键点击卸载 2、找到Python安装路径,把所有文件全部删除。 安装路径可以打开CMD输入:where python 3、强制删除Python.exe 打开cmd&#xff…

科技企业如何做到FTP数据安全保护

在数字化浪潮的推动下,科技企业的数据已成为推动创新、提升效率、增强竞争力的核心资源。数据的重要性不言而喻,它不仅包含了客户信息、市场分析、产品设计等关键信息,更是企业宝贵的资产。然而,随着数据量的激增,数据…

视觉AIGC识别——人脸伪造检测、误差特征 + 不可见水印

视觉AIGC识别——人脸伪造检测、误差特征 不可见水印 前言视觉AIGC识别【误差特征】DIRE for Diffusion-Generated Image Detection方法扩散模型的角色DIRE作为检测指标 实验结果泛化能力和抗扰动 人脸伪造监测(Face Forgery Detection)人脸伪造图生成 …

LabVIEW最佳传输系统设计

LabVIEW最佳传输系统设计 介绍了基于LabVIEW软件开发的最佳基带传输系统和最佳带通传输系统的设计。通过软件仿真实现了脉冲成形滤波器和匹配滤波器的设计,证明了系统在消除码间干扰和抗噪声方面的优异性能。此设计不仅激发了学生的学习兴趣,还有助于提…