前端:遇到的面试题

HTML,CSS

mvvm 框架和 mvc 框架的区别

· MVC 框架是模型-视图-控制器的缩写,它是一种通过将代码分为三个部分的方式来组织应用程序的结构,这三个部分分别是模型(Model)、视图(View)和控制器(Controller)。模型表示数据(处理数据),视图表示用户界面,控制器负责管理数据和用户界面之间的交互。
· MVVM 框架是模型-视图-视图模型的缩写,它是一种通过将代码分为三个部分的方式来组织应用程序的结构,这三个部分分别是模型(Model)、视图(View)和视图模型(ViewModel)。模型表示数据,视图表示用户界面,视图模型则是两个部分的连接通道,负责将模型的数据绑定到视图上,使视图和模型之间的交互更加简单。

· 区别:
在 MVC 中,控制器负责处理视图和模型之间的数据传递。而在 MVVM 中,视图模型则负责处理视图和模型之间的数据传递,它通过数据绑定将模型数据和视图进行绑定,使得数据的变化可以自动更新视图。

CSS 选择器的优先级

‌CSS选择器主要包括:元素选择器、类选择器(class)、ID 选择器和通用选择器(通配符)。
① 元素选择器是最基本的选择器,它根据 HTML 元素\标签的类型来选择元素。比如 p 选择器可以选择当前 HTML 里所有<p> 标签的元素。
② 类选择器是通过 HTML 元素的类属性来选择元素,使用 . 符号来表示,后面跟着类名。比如 .my-class 选择器将选择所有类名为 my-class 的元素‌。
③ ID 选择器是通过 HTML 元素的 ID 属性来选择元素。ID 选择器使用 # 符号来表示,后面跟着 ID 名。ID 在HTML文档中是唯一的,所以你可以使用它来为特定的元素设置样式,因此在同一个 HTML 页面不能出现同一个 ID,哪怕它们的元素不是同一个类型。
④ 通用选择器(通配符)是使用 * 符号来选择页面上的所有元素。通配符选择器通常用于清除默认样式或为所有元素设置基础样式,但不推荐频繁使用,因为它可能会影响页面性能‌。

那么这些选择器的优先级为 ID 选择器 > 类选择器 > 元素选择器 > 通用选择器

Vue

如何理解 Vue 的响应式

在 Vue 3 中,响应式系统通过 reactive 和 ref 这两个 API 实现数据的响应式追踪。

  1. ref:将一个基础数据类型单一对象包裹为响应式引用,可以通过 .value 访问数据,例如数字、字符串、数组等。
  2. reactive:将一个对象转为响应式对象,适合用于复杂的嵌套结构。

响应式 API 的 watch 和 computed 都用于监听和响应数据变化,但它们的用法和场景不同:

  1. computed:适用于计算依赖其他响应式数据得出的值。当依赖的数据变化时,computed 会重新计算并返回缓存的结果。此外 computed 具有缓存机制,只有在依赖数据变化时才重新计算,这使其在多次访问时性能更优。
  2. watch:用于监听响应式数据的变化,执行回调函数(如异步操作、API 请求、日志记录等),适合处理异步任务和复杂逻辑。watch 缓存结果,数据变化时总会触发回调。
import { reactive, ref, computed, watch } from 'vue';

const state = reactive({
  count: 0,
  user: {
    name: 'Alice',
    age: 25
  }
});
const count = ref(0);
count.value++; // 更新值时使用 .value

const doubleCount = computed(() => count.value * 2);  // 依赖 count,且只在 count 改变时重新计算
watch(() => state.user.age, (newAge, oldAge) => {  // 回调函数
  console.log(`Age changed from ${oldAge} to ${newAge}`);
});  

Vue 的钩子:created 和 mounted

Vue 的生命周期钩子函数:Vue 组件实例从生成 new 到被销毁 destory 的过程各阶段执行的生命周期函数,比如创建实例,装载模板,渲染模板等,这个就被称为钩子函数(监听函数),每当 Vue 实例处于不同的生命周期时,对应的函数就会被触发调用。
Vue 的八大生命周期钩子函数有:

函数调用时间作用
beforeCreatevue实例初始化之前调用在组件实例初始化后,数据观测和事件机制等都还未配置完成,无法访问到 data 和 methods 等属性
createdvue实例初始化之后调用组件实例已创建完成,属性、方法等已经可以访问
beforeMount挂载到DOM树之前调用在模板 template 编译、虚拟 DOM 渲染之前,DOM 还没有挂载到页面上
mounted挂载到DOM树之后调用组件模板已经挂载到页面,真实的 DOM 可被访问
beforeUpdate数据更新之前调用组件的响应式数据改变,虚拟 DOM 即将重新渲染之前
updated数据更新之后调用组件完成数据更新,DOM 更新同步完成
beforeDestroyvue实例销毁之前调用组件实例即将被销毁、从页面中移除之前
unmountedvue实例销毁之后调用组件实例被销毁、DOM 已从页面中移除

总体而言,Vue 组件的实例化遵循这个流程:按顺序先处理 JavaScript 逻辑(初始化数据和方法),然后编译模板 template (生成虚拟 DOM 树),最后将其挂载到 DOM(渲染到真实 DOM)。

真实 DOM 和虚拟DOM

· 虚拟 DOM:虚拟 DOM 是 Vue 使用的一种轻量级别的对象树,一个抽象概念,它描述了真实 DOM 的结构。每当数据变化时,渲染函数生成的虚拟 DOM,并与旧的虚拟 DOM 进行差异比较(diff)以确定哪些节点发生了变化(diff 算法),然后将这些差异应用到真实 DOM 上,最终由浏览器进行渲染。

· 真实 DOM:真实 DOM 是浏览器渲染的实际 HTML 结构。它表示页面上所有且真正存在的元素节点。如果直接操作真实 DOM 会触发浏览器的重新渲染,尤其在数据频繁更新的情况下,这种操作开销较大。

· 区别:
效率:虚拟 DOM 是一个内存中的对象树,操作比真实 DOM 快得多,因为它不引起浏览器的渲染重排。
更新方式:虚拟 DOM 利用 diff 算法进行更新,只更改必要的节点;而真实 DOM 更新会触发浏览器渲染,成本较高。

DOM 是文档对象模型
BOM 是浏览器对象模型,BOM 的顶级对象是 window;BOM 比 DOM 更大,它包含 DOM。
window 对象的常见事件:窗口加载事件 window.onload、调整窗口大小事件 window.onresize、定时器 setTimeout() 和 setInterval() 等

网络

get 和 post 的区别

GET 和 POST 是 HTTP 协议中的两种常见请求方法,它们用于从服务器请求数据或将数据发送到服务器。主要区别如下:
用途
GET 主要用于请求数据。它从服务器获取资源,通常用于读取数据而不改变服务器的状态(如访问网页内容)。
POST:主要用于提交数据。它将数据发送到服务器,并可能修改服务器上的资源(如提交表单、创建新数据,多次提交订单会生成多个订单)。
数据传输方式
GET:将数据附加在 URL 中,作为查询字符串的一部分发送。URL 后的查询字符串以 ? 开头,各个参数通过 & 分隔。
POST:将数据放在请求的主体(body)中,因此不会显示在 URL 上。数据可以包含更多的信息量和更复杂的结构。
数据长度
GET:URL 有长度限制(不同浏览器和服务器有不同限制,通常在 2000 字符左右),不适合传输大量数据。
POST:没有长度限制,适合传输大数据量。
安全性
GET:由于参数在 URL 中可见,敏感信息容易暴露,因此不适合发送敏感数据。
POST:相对更安全,因为数据在请求体中,虽然它仍然可以通过网络嗅探工具捕获,但不会直接暴露在 URL 中。搭配 HTTPS 提高安全性。
浏览器缓存
GET:浏览器会缓存 GET 请求,因此重复请求相同 URL 时会直接使用缓存结果。
POST:默认情况下不会缓存 POST 请求,通常每次都发送新的请求。

总结:GET:用于数据请求,数据放在 URL 中,有长度限制,适合读取操作。POST:用于数据提交,数据在请求体中,无长度限制,适合更新操作。

Vue router 的传参方式:查询字符串和路径传递参数
查询字符串:/content -> http://localhost:5173/content?id=100&name=Lisa  
路径传递参数:/user/:id/name/:name/:number? -> http://localhost:5173/user/100/name/Lisa 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

国企干部民主测评系统如何选择?

国企干部民主测评系统&#xff0c;亦被广泛称为民主测评系统、民主评议系统或二维码测评/评价系统&#xff0c;是专为各类单位、部门及人员设计的测评工具&#xff0c;旨在替代繁琐的手工操作。该系统能够灵活设置测评指标、指标分值权重、测评对象及测评人员&#xff0c;极大地…

【Qt6聊天室项目】 主界面功能实现

1. 获取当前用户的个人信息 1.1 前后端逻辑分析&#xff08;主界面功能&#xff09; 主界面上所有的前后端交互逻辑相同&#xff0c;分析到加载会话列表后其余功能仅实现。 核心逻辑总结 异步请求-响应模型 客户端发起请求&#xff0c;向服务器发送包含会话ID的请求服务端处…

经纬恒润AUTOSAR成功适配芯钛科技Alioth TTA8车规级芯片

在汽车电子领域&#xff0c;功能安全扮演着守护者的角色&#xff0c;它确保了车辆在复杂多变的情况下保持稳定可靠的运行。随着汽车电子的复杂性增加&#xff0c;市场对产品功能安全的要求也日益提高。基于此背景&#xff0c;经纬恒润AUTOSAR基础软件产品INTEWORK-EAS-CP成功适…

10.22 软考初级网络管理员之局域网

局域网的基本概念&#xff0c;IE802标准 局域网是指将分散在一个局部地理范围的多台计算机通过传输媒体连接起来的通信网络。IEEE802&#xff0c;对应物理层和数据链路层 IE802标准 以太网技术&#xff08;局域网通信协议、数据传输方式&#xff09; 分值占比高 ‌‌以太网是…

计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-10-23

计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-10-23 目录 文章目录 计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-10-23目录1. Advancements in Visual Language Models for Remote Sensing: Datasets, Capabilities, and Enhancement Techniques摘…

高效集成小满OKKICRM与金蝶K3-WISE的成功案例

小满客户>k3wise销售站点&#xff1a;高效数据集成案例分享 在企业信息化建设中&#xff0c;数据的高效流动和准确对接是实现业务流程优化的关键。本文将聚焦于一个具体的系统对接集成案例&#xff1a;如何将小满OKKICRM的数据无缝集成到金蝶K3-WISE系统中&#xff0c;实现…

【十六进制数转十进制数 】

【十六进制数转十进制数 】 C语言版本C 版本Java版本Python版本 &#x1f490;The Begin&#x1f490;点点关注&#xff0c;收藏不迷路&#x1f490; 从键盘接收一个十六进制数&#xff0c;编程实现将其转换成十进制数。 输入 输入一个十六进制数 输出 输出一个十进制数 样…

Xcode 格式化代码快捷键

例如这段代码没有左对齐,看起来很乱 格式化快捷键: 全选需要格式化的代码,Xcode 工具栏--> Editor --> Structure --> Re-indent

Vxe UI vue vxe-table 虚拟树表格的使用,流畅的渲染万级数据树结构表格

Vxe UI vue vxe-table 虚拟树表格的使用&#xff0c;流畅的渲染万级数据树结构表格 代码 普通树表格&#xff0c;一般存数据库里都是平级数据&#xff0c;vxe-table 的树渲染这就非常友好了&#xff0c;只有带有父子id关联的数组&#xff0c;就可以自动渲染树表格。 <te…

面试阿里、字节全都一面挂,被面试官说我的水平还不如应届生

测试员可以先在大厂镀金&#xff0c;以后去中小厂毫无压力&#xff0c;基本不会被卡&#xff0c;事实果真如此吗&#xff1f;但是在我身上却是给了我很大一巴掌... 所谓大厂镀金只是不卡简历而已&#xff0c;如果面试答得稀烂&#xff0c;人家根本不会要你。况且要不是大厂出来…

微调大模型-4-合并基座模型

合并模型 新建文件夹,默认参数,开始导出,但是发现报错: 报错显示磁盘空间不足,这是由于AutoDL云,当前默认空间用的是系统盘,空间只有30G。 参考:https://blog.csdn.net/lwd19981223/article/details/130740905/ 将合并路径存储到50个G的数据盘,数据库路径是autodl-t…

《Linux系统编程篇》fork函数——基础篇

文章目录 引言fork() 函数概述父子进程 fork函数fork() 的常见问题fork() 的优势与限制 结论 命为志存。 —— 朱熹 引言 《Linux系统编程篇》——基础篇首页传送门 本节我们正式进入Linux的进程代码编写。 fork() 是 Unix 系统中一个重要的系统调用&#xff0c;用于创建一个…

基于KU115+ZU19EG+C6678 的高性能6U VPX 载板

基于KU115ZU19EGC6678 的高性能6U VPX 载板&#xff0c;板载 2 个 HPC 形式的FMC 连接器&#xff08;用于外部信号扩展&#xff09;。板卡选用了 1 片Xilinx 公司的Kintex UltraScale 系列 FPGA 家族中的XCKU115-2FLVA1517I 和 1 片 Zynq UltraScale MPSoC 家族的XCZU19EG-2FFV…

USB Type-C 受电端取电快充协议芯片,支持PD+QC+FCP+SCP+AFC快充协议

前言 随着科技的飞速发展&#xff0c;电子设备对于快速充电的需求日益增加。为了满足这一需求&#xff0c;市场上涌现出了众多快充技术和产品。其中&#xff0c;XSP08Q诱骗取电芯片以其卓越的性能和广泛的应用场景&#xff0c;成为了快充领域的一颗璀璨明星。本文将对XSP08Q P…

Flutter Row组件实战案例

In this section, we’ll continue our exploration by combining the Row and Container widgets to create more complex layouts. Let’s dive in! 在本节中&#xff0c;我们将继续探索&#xff0c;结合“Row”和“Container”小部件来创建更复杂的布局。让我们开始吧! Sc…

CMake 生成器表达式介绍

【写在前面】 生成器表达式在构建系统生成期间进行评估&#xff0c;以生成特定于每个构建配置的信息。它们的形式为 $<...>。例如&#xff1a; target_include_directories(tgt PRIVATE /opt/include/$<CXX_COMPILER_ID>) 这将扩展为 “/opt/include/GNU”、“/opt…

李宇皓现身第十届“文荣奖”,allblack造型帅气绅士引关注

近日&#xff0c;第十届“文荣奖”在众人的期待中拉开帷幕&#xff0c;与众多影视奖项不同&#xff0c;“文荣奖”始终关注年轻群体需求&#xff0c;致力于发掘和扶植影视新人新作&#xff0c;为热爱影视行业的新人提供宝贵机会与激励。今年的文荣奖评委阵容十分强大&#xff0…

深度学习:SGD的缺点

首先看下述函数&#xff1a; 最小值为x0&#xff0c;y0处 先了解下它的梯度特征。了理解其梯度特征&#xff0c;我们需要计算其梯度向量。 梯度向量 ∇f 是函数 f 在每个变量方向上的偏导数组成的向量。具体来说&#xff1a; ∇f(∂f/∂x,∂f∂/y) 首先&#xff0c;我们计算 f …

R语言机器学习算法实战系列(十二)线性判别分析分类算法 (Linear Discriminant Analysis)

禁止商业或二改转载,仅供自学使用,侵权必究,如需截取部分内容请后台联系作者! 文章目录 介绍LDA的原理LDA的步骤教程下载数据加载R包导入数据数据预处理数据描述数据切割构建模型预测测试数据评估模型模型准确性混淆矩阵模型评估指标ROC CurvePRC Curve保存模型总结优点:缺…

如何用猿大师办公助手实现OA系统中Word公文/合同在线编辑及流转?

在OA系统或者合同管理系统中&#xff0c;我们会经常遇到网页在线编辑Word文档形式的公文及合同的情况&#xff0c;并且需要上级对下级的公文进行批注等操作&#xff0c;或者不同部门的人需要签字审核&#xff0c;这就需要用到文档流转功能&#xff0c;如何用猿大师办公助手实现…