当前位置: 首页 > 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…...

HTML 语义化

目录 HTML 语义化HTML5 新特性HTML 语义化的好处语义化标签的使用场景最佳实践 HTML 语义化 HTML5 新特性 标准答案&#xff1a; 语义化标签&#xff1a; <header>&#xff1a;页头<nav>&#xff1a;导航<main>&#xff1a;主要内容<article>&#x…...

电脑插入多块移动硬盘后经常出现卡顿和蓝屏

当电脑在插入多块移动硬盘后频繁出现卡顿和蓝屏问题时&#xff0c;可能涉及硬件资源冲突、驱动兼容性、供电不足或系统设置等多方面原因。以下是逐步排查和解决方案&#xff1a; 1. 检查电源供电问题 问题原因&#xff1a;多块移动硬盘同时运行可能导致USB接口供电不足&#x…...

Unity | AmplifyShaderEditor插件基础(第七集:平面波动shader)

目录 一、&#x1f44b;&#x1f3fb;前言 二、&#x1f608;sinx波动的基本原理 三、&#x1f608;波动起来 1.sinx节点介绍 2.vertexPosition 3.集成Vector3 a.节点Append b.连起来 4.波动起来 a.波动的原理 b.时间节点 c.sinx的处理 四、&#x1f30a;波动优化…...

从面试角度回答Android中ContentProvider启动原理

Android中ContentProvider原理的面试角度解析&#xff0c;分为​​已启动​​和​​未启动​​两种场景&#xff1a; 一、ContentProvider已启动的情况 1. ​​核心流程​​ ​​触发条件​​&#xff1a;当其他组件&#xff08;如Activity、Service&#xff09;通过ContentR…...

uniapp 实现腾讯云IM群文件上传下载功能

UniApp 集成腾讯云IM实现群文件上传下载功能全攻略 一、功能背景与技术选型 在团队协作场景中&#xff0c;群文件共享是核心需求之一。本文将介绍如何基于腾讯云IMCOS&#xff0c;在uniapp中实现&#xff1a; 群内文件上传/下载文件元数据管理下载进度追踪跨平台文件预览 二…...

6个月Python学习计划 Day 16 - 面向对象编程(OOP)基础

第三周 Day 3 &#x1f3af; 今日目标 理解类&#xff08;class&#xff09;和对象&#xff08;object&#xff09;的关系学会定义类的属性、方法和构造函数&#xff08;init&#xff09;掌握对象的创建与使用初识封装、继承和多态的基本概念&#xff08;预告&#xff09; &a…...

LLaMA-Factory 微调 Qwen2-VL 进行人脸情感识别(二)

在上一篇文章中,我们详细介绍了如何使用LLaMA-Factory框架对Qwen2-VL大模型进行微调,以实现人脸情感识别的功能。本篇文章将聚焦于微调完成后,如何调用这个模型进行人脸情感识别的具体代码实现,包括详细的步骤和注释。 模型调用步骤 环境准备:确保安装了必要的Python库。…...

算法打卡第18天

从中序与后序遍历序列构造二叉树 (力扣106题) 给定两个整数数组 inorder 和 postorder &#xff0c;其中 inorder 是二叉树的中序遍历&#xff0c; postorder 是同一棵树的后序遍历&#xff0c;请你构造并返回这颗 二叉树 。 示例 1: 输入&#xff1a;inorder [9,3,15,20,7…...

Python异步编程:深入理解协程的原理与实践指南

&#x1f49d;&#x1f49d;&#x1f49d;欢迎莅临我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 持续学习&#xff0c;不断…...

Web APIS Day01

1.声明变量const优先 那为什么一开始前面就不能用const呢&#xff0c;接下来看几个例子&#xff1a; 下面这张为什么可以用const呢&#xff1f;因为复杂数据的引用地址没变&#xff0c;数组还是数组&#xff0c;只是添加了个元素&#xff0c;本质没变&#xff0c;所以可以用con…...