WEB面试题
1.基础 Web 技术:
1.1 h5
行内元素和块级元素
行内元素不会独占一行,高度和宽度由内容决定,不能单独设置宽高,
不能设置上下的margin和padding,只能设置左右的margin和padding;
行内元素:a、span、sub、sup、br、strong、b、em、i、label
块级元素会独占一行,高度和宽度可以单独设置,可以设置上下左右的margin和padding;
块级元素:div、ul、dl、ol、li、table、h1-h6、p、form、hr
行内块元素: <img />、<input />、<td>
转换为行内元素:display:inline; 转换为行内块元素:display:inline-block; 2.块元素:display:block;
1.2 h5的新特性
新标签:header、footer、section、nav
如何区别HTML和HTML5?
用 DOCTYPE声明新增的结构元素和功能元素来区别它们。
1.3 请描述一下 sessionStorage和 localStorage、 cookie的区别是什么。
sessionStorage用于在本地存储一个会话中的数据,这些数据只有同一个会话中的页面才能访问,当会话结束后,数据也随之销毀。因此 sessionStorage不是一种持久化的本地存储,仅仅是会话级别的存储。
而 localstorage用于持久化本地存储,除非主动删除数据,否则数据是永远不会过期的。
localStorage的概念和cookie相似,区别是 localStorage是为了更大容量的存储设计的。cookie的大小是受限的,并且每次请求一个新页面时, cookie都会被发送过去,这样无形中浪费了带宽。另外, cookie还需要指定作用域,不可以跨域调用。
cookie的作用是与服务器进行交互,并且还是HTP规范的一部分,
而 localStorage仅因为是为了在本地“存储”数据而已,无法跨浏览器使用。
1.4 CSS选择器有哪些?优先级顺序?哪些属性可以继承?
CSS选择器:
id选择器(#myid)、
类选择器(.myclassname)、
标签选择器(div, h1, p)、
相邻选择器(h1 + p)、
子选择器(ul > li)、
后代选择器(li a)、
通配符选择器(*)、
属性选择器(a[rel=“external”])、
伪类选择器(a:hover, li:nth-child)CSS选择器优先级顺序:
-!important > 行内样式(比重1000)> ID 选择器(比重100) > 类选择器(比重10) > 标签(比重1) > 通配符 > 继承 > 浏览器默认属性
1.5 js基本数据类型
Number:表示任何数值,可以是整数、浮点数,还包括特殊值 NaN(Not-a-Number)和正负无穷大。
String:用于表示文本,是由零个或多个16位Unicode字符组成的字符序列。可以用单引号 ' 或双引号 " 来创建字符串。
Boolean只有两个可能的值:true 和 false,代表逻辑真和假。
Undefined:当变量声明但未初始化时,或者访问不存在的对象属性时,其值为 undefined。
Null:表示一个空或无对象的指针,只有一个值 null,它与 undefined 类似,但含义不同,null 是一种明确的空值或无意义值的表示。
Object(引用类型):包括数组 (Array)、函数 (Function)、日期 (Date)、正则表达式 (RegExp) 等在内的所有非基本类型的值都是对象,它们存储的是引用地址而非实际值。
Symbol(ES6新增):一种唯一且不可变的数据类型,用来创建唯一的标识符。
BigInt(ES2020新增):用来表示大于 Number.MAX_SAFE_INTEGER 的整数,用 n 后缀表示,如 9007199254740991n。
1.6简单交互逻辑
if for
1.5DOM 操作的能力
获取元素:document.getElementBy(Id,ClassName,Name,TagName)
操作元素:innerText(只操作获取到的元素内的文字),innerHTML(可以操作html标签),style(修改样式)
onclick、onchange(失去焦点时,判断是否改变,改变触发函数)、oninput(只要改变就会触发函数)onfocus(获取焦点),onblur(失去焦点)
2 jQuery,VUE,UNIAPP,Node.JS
2.1 jQuery
2.1.1 jQuery中常见的几种函数以及他们的含义是什么
在 jQuery中,$ 仅仅是用来简写 jQuery 对象以及 jQuery() 函数。
get():取得所有匹配的DOM元素集合
get(index):取得其中一个匹配的元素.index表示取得第几个匹配的元素
append(content):向每个匹配的元素内部追加内容
after(content):在每个匹配的元素之后插入内容
html()/html(var):取得或设置匹配元素的html内容
find(expr):搜索所有与指定表达式匹配的元素
bind(type,[data],fn):为每个匹配元素的特定事件绑定事件处理函数
empty():删除匹配的元素集合中所有的子节点
hover(over,out):一个模仿悬停事件(鼠标移动到一个对象上面及移出这个对象)的方法
attr(name):取得第一个匹配元素的属性值
addClass(class) 和 removeClass(class) 为指定的元素添加或移除样式
css(name):访问第一个匹配元素的样式属性
ajax([options]):通过HTTP请求加载远程数据
get(url,[data],[callback],[type]):通过远程HTTP GET请求载入信息
post(url,[data],[callback],[type]):通过远程HTTP POST请求载入信息
load(url,[data],[callback]):载入远程HTML文件代码并插入至DOM中
2.1.2body中的onload()函数和jQuery中的document.ready()有什么区别?
onload()和document.ready()的区别有以下两点:
1、我们可以在页面中使用多个document.ready(),但只能使用一次onload()。
2、document.ready()函数在页面DOM元素加载完以后就会被调用,而onload()函数则要在所有的关联资源(包括图像、音频)加载完毕后才会调用。
JavaScript window.onload 事件和 jQuery ready 函数之间的主要区别是,前者除了要等待 DOM 被创建还要等到包括大型图片、音频、视频在内的所有外部资源都完全加载。如果加载图片和媒体内容花费了大量时间,用户就会感受到定义在 window.onload 事件上的代码在执行时有明显的延迟。另一方面,jQuery ready() 函数只需对 DOM 树的等待,而无需对图像或外部资源加载的等待,从而执行起来更快。使用 jQuery $(document).ready() 的另一个优势是你可以在网页里多次使用它,浏览器会按它们在 HTML 页面里出现的顺序执行它们,相反对于 onload 技术而言,只能在单一函数里使用。鉴于这个好处,用 jQuery ready() 函数比用 JavaScript window.onload 事件要更好些。
2.1.3 $(document).ready() 是个什么函数?为什么要用它?
ready() 函数用于在文档进入ready状态时执行代码。当DOM 完全加载(例如HTML被完全解析DOM树构建完成时),jQuery允许你执行代码。使用$(document).ready()的最大好处在于它适用于所有浏览器.
$(this) 和 this 关键字在 jQuery 中有何不同?(答案如下)
$(this) 返回一个 jQuery 对象,你可以对它调用多个 jQuery 方法,比如用 text() 获取文本,用val() 获取值等等。而 this 代表当前元素。
它是 JavaScript 关键词中的一个,表示上下文中的当前 DOM 元素。你不能对它调用 jQuery 方法,直到它被 $() 函数包裹,例如 $(this)
2.1.4jQuery.get() 和 jQuery.ajax() 方法之间的区别是什么?
ajax() 方法更强大,更具可配置性, 让你可以指定等待多久,以及如何处理错误。get() 方法是一个只获取一些数据的专门化方法。
2.2 VUE
2.2.1 生命周期
生命周期:
VUE2:
创建之前==》调用brforeCreate()函数
创建完毕==》调用created()函数
挂载之前==》调用beforeMount()函数
挂在完毕==》调用mounted()函数==================》【重要的钩子】
更新之前==》调用beforeUpdate()函数
更新完毕==》调用updateed()函数
销毁之前==》调用beforeDestory()函数==============》【重要的钩子】
销毁完毕==》调用destoryed()函数
激活之前==》调用activated()函数
失活之前==》调用deactivated()函数
下次更新后执行==》nextTick()
VUE3:与VUE2相同,但是销毁前beforeDestory:销毁后destoryed,
改成卸载前beforeUnmount :卸载后unmounted。
如果在setup()内写就用后面的组合式API,如果不在setup()内写,就写前面的
beforeCreate ===> setup()
created ===> setup()
beforemount ===> onBeforeMount
mounted ===> onMounted
befoerUpdate ===> onBeforeUpdate
updated ===> onUpdated
beforeUnmount ===> onBeforeUnmount
unmounted ===> onUnmounted(1)setup执行时机在beforeCreate之前,且只执行一次,this是undefined。
(2)setup的参数:
(2.1)props:值对象,包含:组件外传递过来的,且组件内部生命接受了的属性。
(2.2)context:上下文对象:
(2.2.1)attrs:值对象,外部传递进来,但props未接收的属性(this.$attrs)。
(2.2.2)slots:收到的插槽内容,相当于this.$slots。(最好用v-slot命名)。
(2.2.3)emit:分发自定义事件的函数(this.$emit)。
2.2.2 数据代理
VUE2:
对象类型:通过Object.defineProperty()对属性的读取,修改进行拦截(数据劫持)。
数组类型:通过重写数组的一系列方法来实现拦截。(对数组的变更方法进行了包裹)
VUE3:
从定义角度相比:
ref:用来定义基本数据类型。
reactive:用来定义对象或数组类型数据。
从原理角度相比:
ref:通过Object.defineProperty()的get和set来实现响应式(数据劫持)。
reactive:通过Proxy来实现响应式(数据劫持),并通过Reflect操作源对象内数据。
从使用角度相比:
ref:操作数据需要用xxx.value,读取时不需要xxx.value。
reactive:操作和读取数据都不用xxx.value
代理:目标对象与代理对象:在创建
Proxy时,会创建一个新的对象作为代理对象,并将其内部的[[Target]]属性指向目标对象。这意味着所有的操作实际上都是对目标对象进行的,只是通过代理对象来间接访问。反射:Reflect 对象的一些方法在执行时会捕获并处理异常。例如,Reflect.get() 和 Reflect.set() 方法会在访问或修改属性时捕获可能发生的错误。
这背后的原理是:这些方法使用了 JavaScript 的内部操作来执行任务,而这些内部操作可能会抛出异常。为了确保这些异常能够被用户代码正确地捕获和处理,Reflect 方法通常会包含一个 try-catch 块来捕获这些异常,并将其作为方法的返回值之一。
解 uni-app 框架,能够独立开发移动端项目。
悉 Node.js 并具有全栈开发能力,处理跨域问题。
r esponse.setHeader("Access-Control-Allow-Origin","*");
response.setHeader ("Access-Control-Allow-Methods","POST");
response.setHeader("Access-Control-Allow-Headers","x-requested-with, content-type");
熟练使用 npm/cnpm 等包管理工具进行依赖安装与版本管理。
熟练配置和使用 Http 请求库 Axios,及Ajax进行数据交互,并掌握请求及响应拦截器的设置方法。
3.样式处理与组件库:
掌握 Sass 或 Less 等 CSS 预处理器的使用,提高代码可维护性。
熟悉 element UI、iviewUI 等常用 UI 组件库的使用和定制化。
理解 Bootstrap 的响应式原理,能够创建基于该框架的响应式网站布局。
4.数据库技术:
具备 MongoDB 数据库的操作能力,使用 Node.js 实现数据的 CRUD 功能。
熟悉 uni-app 中云函数与云数据库的基本操作,实现移动应用的数据存储与访问。
5.开发工具:
熟练使用 Hbuilder、HbuilderX、VSCode、WebStorm 等前端开发工具进行高效开发。
能够使用 Dreamweaver 编辑器编辑和优化网站代码。
6.其他技能与素质:
学习能力强,能够快速掌握新的前端技术和框架,并持续关注行业前沿动态。
能够阅读和解析后端 API 文档,与后端团队协作完成前后端数据接口对接工作。
具备一定的源码阅读能力,通过 debug 工具快速定位和解决问题。
熟练利用浏览器开发者工具中的 Network 面板调试,ApiPost等工具完成前后端对接。
熟练利用AI等工具完成代码纠错及优化,提高开发效率。
熟练运用 Photoshop等设计软件,对设计原则和视觉规范有一定的理解。
相关文章:
WEB面试题
1.基础 Web 技术: 1.1 h5 行内元素和块级元素 行内元素不会独占一行,高度和宽度由内容决定,不能单独设置宽高, 不能设置上下的margin和padding,只能设置左右的margin和padding; …...
Android Studio 六大基本布局详解
Android应用开发中,布局是至关重要的一部分,而Android Studio作为主流的开发工具,提供了多种布局方式来灵活适应不同的界面需求。在本文中,我们将深入探讨Android Studio中的六大基本布局,旨在帮助开发者更好地理解和运…...
如何应对IT服务交付中的问题?
如何应对IT服务交付中的问题? 按需交付服务的挑战IT服务体系的复杂性恶性循环的形成学会洞察的重要性书籍简介参与方式 按需交付服务的挑战 一致性、可靠性、安全性、隐私性和成本效益的平衡:成功的按需交付服务需要满足这些要求,这需要服务…...
[Python] 缓存实用工具
cachetools 是一个 Python 库,提供了用于缓存的实用工具,包括各种缓存算法和数据结构,如 LRU(最近最少使用)缓存、TTL(时间到期)缓存等。使用 cachetools 可以轻松地在 Python 应用程序中实现缓…...
php反序列化字符逃逸
php反序列化和序列化 PHP序列化:serialize() 序列化是将变量或对象转换成字符串的过程,用于存储或传递 PHP 的值的过程中,同时不丢失其类型和结构。“序列化”是一种把对象的状态转化成字节流的机制 类似于这样的结构: O:4:&quo…...
延迟加载(Lazy Initialization)的单例模式
延迟加载(Lazy Initialization)的单例模式是一种在对象第一次被请求时才创建单例实例的设计模式。这种方法可以减少程序启动时的负载和启动时间,特别是当单例对象的创建开销较大或者在启动时不一定需要该对象时。 下面是实现延迟加载单例模式…...
C++三级专项 流感传染
时间限制:1000 内存限制:65536 有一批易感人群住在网格状的宿舍区内,宿舍区为n*n的矩阵,每个格点为一个房间,房间里可能住人,也可能空着。在第一天,有些房间里的人得了流感,以后每…...
如何用Elementor创建WordPress会员网站
在下面的文章中,我们将向您展示如何使用Elementor和MemberPress在WordPress中轻松构建会员网站。这篇文章将涵盖WordPress会员网站设置过程、会员资格和受保护内容创建、重要页面和登录表单设计、电子邮件通知管理、报告等。 目录 什么是WordPress会员网站&#x…...
【脑切片图像分割】MATLAB 图像处理 源码
1. 简单图像处理 加载图像 Brain.jpg,使用直方图和颜色分割成区域这些区域有不同的颜色。 这是一个更高级的问题,有多个解决它的方法。 例如,您可以计算具有特定数字的图像的直方图(例如 16 - 32),找到直方…...
深度学习系列61:在CPU上运行大模型
1. 快速版 1.1 llamafile https://github.com/Mozilla-Ocho/llamafile 直接下载就可以用,链接为:https://huggingface.co/jartine/llava-v1.5-7B-GGUF/resolve/main/llava-v1.5-7b-q4.llamafile?downloadtrue 启动:./llava-v1.5-7b-q4.lla…...
IO接口 2月5日学习笔记
1.fgetc 用于从文件中读取一个字符,fgetc 函数每次调用将会返回当前文件指针所指向的字符,并将文件指针指向下一个字符。 int fgetc(FILE *stream); 功能: 从流中读取下一个字符 参数: stream:文件流指针 返回值: …...
Android Studio开发(一) 构建项目
1、项目创建测试 1.1 前言 Android Studio 是由 Google 推出的官方集成开发环境(IDE),专门用于开发 Android 应用程序。 基于 IntelliJ IDEA: Android Studio 是基于 JetBrains 的 IntelliJ IDEA 开发的,提供了丰富的功能和插件…...
stm32flash模拟eeprom
stm32f103CB的flash是128k(起始地址是 0x08000000 到 0x0801FFFF) falsh的末地址是0x801FFFF,即倒数一页是0x801FBFF(1页按照1kB1024B来算) stm32f103参考手册stm32f103cb.pdf stm32的FLASH分为主存储块和信息块&…...
多模态MLLM都是怎么实现的(2)-DDPM
上一篇的链接:多模态MLLM都是怎么实现的(2) (qq.com) 上上篇的链接:多模态MLLM都是怎么实现的(1) (qq.com) 在第一篇我们简单介绍了一下多模态训练的原理,包括clip,第二篇正好Sora横空出世,也让我就Dit做了一下抛砖引玉,顺便讲了VAE和ViT的部分,上节课我说过, DiT…...
QT----写完的程序打包为APK在自己的手机上运行
目录 1、qt安装android组件2、打开qt配置Android 环境3、手机打开开发者模式,打开usb调试,连接电脑4、运行代码 1、qt安装android组件 qtcreater–工具-QTMaintenaceTool-startMaintenaceTool—登陆—添加或修改组件—找到android,安装 若是…...
Windows C++ SecurityImpersonation级别:线程临时采用另一个用户(客户端)的身份进行操作的能力
SecurityImpersonation 是 Windows 操作系统中安全模型的一个级别,用于描述一个线程临时采用另一个用户(客户端)的身份进行操作的能力。这是Windows安全性的一个核心概念,允许服务或进程在执行特定任务时拥有与请求该服务的用户相…...
重学SpringBoot3-yaml文件配置
重学SpringBoot3-yaml文件配置 引言YAML 基本语法YAML 数据类型YAML 对象YAML 数组复合结构标量引用 YAML 文件结构Spring Boot 中的 YAML 配置注意事项总结参考 引言 YAML(YAML Ain’t Markup Language)是一种常用于配置文件的数据序列化格式ÿ…...
【管理咨询宝藏资料33】某头部咨询公司组织效能提升模型方案
本报告首发于公号“管理咨询宝藏”,如需阅读完整版报告内容,请查阅公号“管理咨询宝藏”。 【管理咨询宝藏资料33】某头部咨询公司组织效能提升模型方案 【关键词】战略规划、组织效能、管理咨询 【文件核心观点】 - 通过长期行业积累和市场洞察&#…...
特征值和特征向量及其在机器学习中的应用
特征值和特征向量是线性代数中的概念,用于分析和理解线性变换,特别是由方阵表示的线性变换。它们被用于许多不同的数学领域,包括机器学习和人工智能。 在机器学习中,特征值和特征向量用于表示数据、对数据执行操作以及训练机器学…...
【Vue3】Ref 和 ShallowRef 的区别
这里写自定义目录标题 什么是 Ref什么是 ShallowRef区别对比示例代码 什么是 Ref Ref 是 Vue 3 中的一个新的基本响应式数据类型,它允许我们包装任意的 JavaScript 值,并且在数据变化时发出通知。Ref 提供了一个 .value 属性来访问其内部的值࿰…...
在 Nginx Stream 层“改写”MQTT ngx_stream_mqtt_filter_module
1、为什么要修改 CONNECT 报文? 多租户隔离:自动为接入设备追加租户前缀,后端按 ClientID 拆分队列。零代码鉴权:将入站用户名替换为 OAuth Access-Token,后端 Broker 统一校验。灰度发布:根据 IP/地理位写…...
大模型多显卡多服务器并行计算方法与实践指南
一、分布式训练概述 大规模语言模型的训练通常需要分布式计算技术,以解决单机资源不足的问题。分布式训练主要分为两种模式: 数据并行:将数据分片到不同设备,每个设备拥有完整的模型副本 模型并行:将模型分割到不同设备,每个设备处理部分模型计算 现代大模型训练通常结合…...
浪潮交换机配置track检测实现高速公路收费网络主备切换NQA
浪潮交换机track配置 项目背景高速网络拓扑网络情况分析通信线路收费网络路由 收费汇聚交换机相应配置收费汇聚track配置 项目背景 在实施省内一条高速公路时遇到的需求,本次涉及的主要是收费汇聚交换机的配置,浪潮网络设备在高速项目很少,通…...
深度学习水论文:mamba+图像增强
🧀当前视觉领域对高效长序列建模需求激增,对Mamba图像增强这方向的研究自然也逐渐火热。原因在于其高效长程建模,以及动态计算优势,在图像质量提升和细节恢复方面有难以替代的作用。 🧀因此短时间内,就有不…...
日常一水C
多态 言简意赅:就是一个对象面对同一事件时做出的不同反应 而之前的继承中说过,当子类和父类的函数名相同时,会隐藏父类的同名函数转而调用子类的同名函数,如果要调用父类的同名函数,那么就需要对父类进行引用&#…...
Ubuntu Cursor升级成v1.0
0. 当前版本低 使用当前 Cursor v0.50时 GitHub Copilot Chat 打不开,快捷键也不好用,当看到 Cursor 升级后,还是蛮高兴的 1. 下载 Cursor 下载地址:https://www.cursor.com/cn/downloads 点击下载 Linux (x64) ,…...
SpringAI实战:ChatModel智能对话全解
一、引言:Spring AI 与 Chat Model 的核心价值 🚀 在 Java 生态中集成大模型能力,Spring AI 提供了高效的解决方案 🤖。其中 Chat Model 作为核心交互组件,通过标准化接口简化了与大语言模型(LLM࿰…...
【Linux】Linux安装并配置RabbitMQ
目录 1. 安装 Erlang 2. 安装 RabbitMQ 2.1.添加 RabbitMQ 仓库 2.2.安装 RabbitMQ 3.配置 3.1.启动和管理服务 4. 访问管理界面 5.安装问题 6.修改密码 7.修改端口 7.1.找到文件 7.2.修改文件 1. 安装 Erlang 由于 RabbitMQ 是用 Erlang 编写的,需要先安…...
Matlab实现任意伪彩色图像可视化显示
Matlab实现任意伪彩色图像可视化显示 1、灰度原始图像2、RGB彩色原始图像 在科研研究中,如何展示好看的实验结果图像非常重要!!! 1、灰度原始图像 灰度图像每个像素点只有一个数值,代表该点的亮度(或…...
2025年低延迟业务DDoS防护全攻略:高可用架构与实战方案
一、延迟敏感行业面临的DDoS攻击新挑战 2025年,金融交易、实时竞技游戏、工业物联网等低延迟业务成为DDoS攻击的首要目标。攻击呈现三大特征: AI驱动的自适应攻击:攻击流量模拟真实用户行为,差异率低至0.5%,传统规则引…...
