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

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 技术&#xff1a; 1.1 h5 行内元素和块级元素 行内元素不会独占一行&#xff0c;高度和宽度由内容决定&#xff0c;不能单独设置宽高&#xff0c; 不能设置上下的margin和padding&#xff0c;只能设置左右的margin和padding&#xff1b; …...

Android Studio 六大基本布局详解

Android应用开发中&#xff0c;布局是至关重要的一部分&#xff0c;而Android Studio作为主流的开发工具&#xff0c;提供了多种布局方式来灵活适应不同的界面需求。在本文中&#xff0c;我们将深入探讨Android Studio中的六大基本布局&#xff0c;旨在帮助开发者更好地理解和运…...

如何应对IT服务交付中的问题?

如何应对IT服务交付中的问题&#xff1f; 按需交付服务的挑战IT服务体系的复杂性恶性循环的形成学会洞察的重要性书籍简介参与方式 按需交付服务的挑战 一致性、可靠性、安全性、隐私性和成本效益的平衡&#xff1a;成功的按需交付服务需要满足这些要求&#xff0c;这需要服务…...

[Python] 缓存实用工具

cachetools 是一个 Python 库&#xff0c;提供了用于缓存的实用工具&#xff0c;包括各种缓存算法和数据结构&#xff0c;如 LRU&#xff08;最近最少使用&#xff09;缓存、TTL&#xff08;时间到期&#xff09;缓存等。使用 cachetools 可以轻松地在 Python 应用程序中实现缓…...

php反序列化字符逃逸

php反序列化和序列化 PHP序列化&#xff1a;serialize() 序列化是将变量或对象转换成字符串的过程&#xff0c;用于存储或传递 PHP 的值的过程中&#xff0c;同时不丢失其类型和结构。“序列化”是一种把对象的状态转化成字节流的机制 类似于这样的结构&#xff1a; O:4:&quo…...

延迟加载(Lazy Initialization)的单例模式

延迟加载&#xff08;Lazy Initialization&#xff09;的单例模式是一种在对象第一次被请求时才创建单例实例的设计模式。这种方法可以减少程序启动时的负载和启动时间&#xff0c;特别是当单例对象的创建开销较大或者在启动时不一定需要该对象时。 下面是实现延迟加载单例模式…...

C++三级专项 流感传染

时间限制&#xff1a;1000 内存限制&#xff1a;65536 有一批易感人群住在网格状的宿舍区内&#xff0c;宿舍区为n*n的矩阵&#xff0c;每个格点为一个房间&#xff0c;房间里可能住人&#xff0c;也可能空着。在第一天&#xff0c;有些房间里的人得了流感&#xff0c;以后每…...

如何用Elementor创建WordPress会员网站

在下面的文章中&#xff0c;我们将向您展示如何使用Elementor和MemberPress在WordPress中轻松构建会员网站。这篇文章将涵盖WordPress会员网站设置过程、会员资格和受保护内容创建、重要页面和登录表单设计、电子邮件通知管理、报告等。 目录 什么是WordPress会员网站&#x…...

【脑切片图像分割】MATLAB 图像处理 源码

1. 简单图像处理 加载图像 Brain.jpg&#xff0c;使用直方图和颜色分割成区域这些区域有不同的颜色。 这是一个更高级的问题&#xff0c;有多个解决它的方法。 例如&#xff0c;您可以计算具有特定数字的图像的直方图&#xff08;例如 16 - 32&#xff09;&#xff0c;找到直方…...

深度学习系列61:在CPU上运行大模型

1. 快速版 1.1 llamafile https://github.com/Mozilla-Ocho/llamafile 直接下载就可以用&#xff0c;链接为&#xff1a;https://huggingface.co/jartine/llava-v1.5-7B-GGUF/resolve/main/llava-v1.5-7b-q4.llamafile?downloadtrue 启动&#xff1a;./llava-v1.5-7b-q4.lla…...

IO接口 2月5日学习笔记

1.fgetc 用于从文件中读取一个字符&#xff0c;fgetc 函数每次调用将会返回当前文件指针所指向的字符&#xff0c;并将文件指针指向下一个字符。 int fgetc(FILE *stream); 功能: 从流中读取下一个字符 参数: stream:文件流指针 返回值: …...

Android Studio开发(一) 构建项目

1、项目创建测试 1.1 前言 Android Studio 是由 Google 推出的官方集成开发环境&#xff08;IDE&#xff09;&#xff0c;专门用于开发 Android 应用程序。 基于 IntelliJ IDEA: Android Studio 是基于 JetBrains 的 IntelliJ IDEA 开发的&#xff0c;提供了丰富的功能和插件…...

stm32flash模拟eeprom

stm32f103CB的flash是128k&#xff08;起始地址是 0x08000000 到 0x0801FFFF&#xff09; falsh的末地址是0x801FFFF&#xff0c;即倒数一页是0x801FBFF&#xff08;1页按照1kB1024B来算&#xff09; 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、手机打开开发者模式&#xff0c;打开usb调试&#xff0c;连接电脑4、运行代码 1、qt安装android组件 qtcreater–工具-QTMaintenaceTool-startMaintenaceTool—登陆—添加或修改组件—找到android&#xff0c;安装 若是…...

Windows C++ SecurityImpersonation级别:线程临时采用另一个用户(客户端)的身份进行操作的能力

SecurityImpersonation 是 Windows 操作系统中安全模型的一个级别&#xff0c;用于描述一个线程临时采用另一个用户&#xff08;客户端&#xff09;的身份进行操作的能力。这是Windows安全性的一个核心概念&#xff0c;允许服务或进程在执行特定任务时拥有与请求该服务的用户相…...

重学SpringBoot3-yaml文件配置

重学SpringBoot3-yaml文件配置 引言YAML 基本语法YAML 数据类型YAML 对象YAML 数组复合结构标量引用 YAML 文件结构Spring Boot 中的 YAML 配置注意事项总结参考 引言 YAML&#xff08;YAML Ain’t Markup Language&#xff09;是一种常用于配置文件的数据序列化格式&#xff…...

【管理咨询宝藏资料33】某头部咨询公司组织效能提升模型方案

本报告首发于公号“管理咨询宝藏”&#xff0c;如需阅读完整版报告内容&#xff0c;请查阅公号“管理咨询宝藏”。 【管理咨询宝藏资料33】某头部咨询公司组织效能提升模型方案 【关键词】战略规划、组织效能、管理咨询 【文件核心观点】 - 通过长期行业积累和市场洞察&#…...

特征值和特征向量及其在机器学习中的应用

特征值和特征向量是线性代数中的概念&#xff0c;用于分析和理解线性变换&#xff0c;特别是由方阵表示的线性变换。它们被用于许多不同的数学领域&#xff0c;包括机器学习和人工智能。 在机器学习中&#xff0c;特征值和特征向量用于表示数据、对数据执行操作以及训练机器学…...

【Vue3】Ref 和 ShallowRef 的区别

这里写自定义目录标题 什么是 Ref什么是 ShallowRef区别对比示例代码 什么是 Ref Ref 是 Vue 3 中的一个新的基本响应式数据类型&#xff0c;它允许我们包装任意的 JavaScript 值&#xff0c;并且在数据变化时发出通知。Ref 提供了一个 .value 属性来访问其内部的值&#xff0…...

CVPR 2025 MIMO: 支持视觉指代和像素grounding 的医学视觉语言模型

CVPR 2025 | MIMO&#xff1a;支持视觉指代和像素对齐的医学视觉语言模型 论文信息 标题&#xff1a;MIMO: A medical vision language model with visual referring multimodal input and pixel grounding multimodal output作者&#xff1a;Yanyuan Chen, Dexuan Xu, Yu Hu…...

R语言AI模型部署方案:精准离线运行详解

R语言AI模型部署方案:精准离线运行详解 一、项目概述 本文将构建一个完整的R语言AI部署解决方案,实现鸢尾花分类模型的训练、保存、离线部署和预测功能。核心特点: 100%离线运行能力自包含环境依赖生产级错误处理跨平台兼容性模型版本管理# 文件结构说明 Iris_AI_Deployme…...

使用分级同态加密防御梯度泄漏

抽象 联邦学习 &#xff08;FL&#xff09; 支持跨分布式客户端进行协作模型训练&#xff0c;而无需共享原始数据&#xff0c;这使其成为在互联和自动驾驶汽车 &#xff08;CAV&#xff09; 等领域保护隐私的机器学习的一种很有前途的方法。然而&#xff0c;最近的研究表明&…...

dedecms 织梦自定义表单留言增加ajax验证码功能

增加ajax功能模块&#xff0c;用户不点击提交按钮&#xff0c;只要输入框失去焦点&#xff0c;就会提前提示验证码是否正确。 一&#xff0c;模板上增加验证码 <input name"vdcode"id"vdcode" placeholder"请输入验证码" type"text&quo…...

解决本地部署 SmolVLM2 大语言模型运行 flash-attn 报错

出现的问题 安装 flash-attn 会一直卡在 build 那一步或者运行报错 解决办法 是因为你安装的 flash-attn 版本没有对应上&#xff0c;所以报错&#xff0c;到 https://github.com/Dao-AILab/flash-attention/releases 下载对应版本&#xff0c;cu、torch、cp 的版本一定要对…...

JUC笔记(上)-复习 涉及死锁 volatile synchronized CAS 原子操作

一、上下文切换 即使单核CPU也可以进行多线程执行代码&#xff0c;CPU会给每个线程分配CPU时间片来实现这个机制。时间片非常短&#xff0c;所以CPU会不断地切换线程执行&#xff0c;从而让我们感觉多个线程是同时执行的。时间片一般是十几毫秒(ms)。通过时间片分配算法执行。…...

(转)什么是DockerCompose?它有什么作用?

一、什么是DockerCompose? DockerCompose可以基于Compose文件帮我们快速的部署分布式应用&#xff0c;而无需手动一个个创建和运行容器。 Compose文件是一个文本文件&#xff0c;通过指令定义集群中的每个容器如何运行。 DockerCompose就是把DockerFile转换成指令去运行。 …...

Android 之 kotlin 语言学习笔记三(Kotlin-Java 互操作)

参考官方文档&#xff1a;https://developer.android.google.cn/kotlin/interop?hlzh-cn 一、Java&#xff08;供 Kotlin 使用&#xff09; 1、不得使用硬关键字 不要使用 Kotlin 的任何硬关键字作为方法的名称 或字段。允许使用 Kotlin 的软关键字、修饰符关键字和特殊标识…...

Pinocchio 库详解及其在足式机器人上的应用

Pinocchio 库详解及其在足式机器人上的应用 Pinocchio (Pinocchio is not only a nose) 是一个开源的 C 库&#xff0c;专门用于快速计算机器人模型的正向运动学、逆向运动学、雅可比矩阵、动力学和动力学导数。它主要关注效率和准确性&#xff0c;并提供了一个通用的框架&…...

JS设计模式(4):观察者模式

JS设计模式(4):观察者模式 一、引入 在开发中&#xff0c;我们经常会遇到这样的场景&#xff1a;一个对象的状态变化需要自动通知其他对象&#xff0c;比如&#xff1a; 电商平台中&#xff0c;商品库存变化时需要通知所有订阅该商品的用户&#xff1b;新闻网站中&#xff0…...