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

公司面试题总结(四)

19.请解释什么是事件代理,应用场景

事件流的都会经过三个阶段: 捕获阶段 -> 目标阶段 -> 冒泡阶段,而事件委托就是
在冒泡阶段完成
事件委托,会把一个或者一组元素的事件委托到它的父层或者更外层元素上,真正绑定
事件的是外层元素,而不是目标元素
当事件响应到目标元素上时,会通过事件冒泡机制从而触发它的外层元素的绑定事件
上,然后在外层元素上去执行函数

应用场景

一个列表,列表之中有大量的列表项,点击列表项的时候响应一个事件
给每个列表项一一都绑定一个函数,那对于 内存消耗 是非常大的
使用事件委托,把点击事件绑定在父级元素 ul 上,执行事件时再去匹配目标元素
随时动态的增加或者去除列表项元素,给新增元素绑定事件,给即将删去元素解绑事件
事件是绑定在父层的,和目标元素的增减没有关系
执行到目标元素是在真正响应执行事件函数的过程中去匹配
使用事件委托,在动态绑定事件的情况下是可以减少很多重复工作的

20.谈谈 This 对象的理解,如何改变 this 指向?

this 是 JavaScript 中的一个特殊对象,它在函数执行时确定,并指向一个特定的对象。
this 的值取决于函数调用的方式,这对于理解和控制函数的行为至关重要。
以下是几种改变或确定 this 指向的方法:
全局上下文或非严格模式下的函数调用
在全局上下文中(不在任何函数内),this 指向全局对象,在浏览器中是 window,
在 Node.js 环境中是 global。
在非严格模式下,普通函数调用时,this 默认指向全局对象(但在严格模式下,this
会是 undefined)。
方法调用
当函数作为某个对象的方法被调用时,this 指向该对象。
构造函数调用
使用 new 关键字调用函数(即构造函数)时,this 指向新创建的实例对象。
显式绑定 call, apply, bind
call() 和 apply() 方法可以立即调用函数并指定 this 的值。
bind() 方法创建一个新的函数,其 this 值被永久地绑定到了传入的值,但不会立
即调用函数。
箭头函数
箭头函数不绑定自己的 this,它们会捕获其所在上下文的 this 值作为自己的 this。
构造函数继承 bind 方法延迟

21.new 操作符具体干了什么

创建一个给定构造函数的实例对象
实例可以访问到构造函数中的属性
实例可以访问到构造函数原型链中的属性
在构建函数中显式加上返回值,这个返回值是一个原始类型,并没有作用
构造函数如果返回值为一个对象,那么这个返回值会被正常使用
主要做了以下的工作:
创建一个新的对象 obj
将对象与构建函数通过原型链连接起来
将构建函数中的 this 绑定到新建的对象 obj 上
构建函数返回类型作判断,如果是原始值则被忽略,如果是返回对象,需要正常处理

22.null,undefined 的区别。

定义和用途

undefined: 表示变量已被声明,但尚未被赋予任何值。它是一个默认值,用于表示
变量未初始化的状态
null: 是一个表示“空值”的对象,它是一个特意指定的值,用来表示变量或对象的值

为空或者没有任何对象实例。

类型

undefined 是一种基本数据类型,它是 undefined 类型的唯一值。
null 虽然表示“无值”,但实际上是一个对象, typeof null 返回的是 'object'

相等性

松散相等(==)比较 null 和 undefined 相等,它们都被认为是非值(non-values)。
严格相等(===)比较中,不相等,因为严格相等比较同时检查值和类型。

23. javascript 代码中的"use strict";是什么意思,严格模式有哪些规范?

严格模式(Strict Mode)是 ECMAScript 5 引入的一种运行模式
旨在提供更加严格的 JavaScript 解析和错误处理机制,以帮助开发者编写更加规范、安全
的代码。
严格模式的限制包括但不限于以下几个方面:

全局变量:

在严格模式下,未声明就赋值的变量会抛出 ReferenceError 错误。
删除全局对象上的属性或变量会抛出错误。

函数

禁止重复的参数名。
this 值在全局作用域中为 undefined,避免了意外全局 this 指向。

语法和行为:

禁止使用 with 语句。
eval在严格模式下创建的变量和函数不会被提升至当前执行上下文的变量环境中。
禁止使用 arguments.callee 和 arguments.caller。
对象字面量属性名不能重复。
函数不能有重名的属性和参数。
禁止 delete 非配置对象的属性。

保留字:

将 ECMAScript 3 中的一些静默错误转换为抛出错误,比如禁止使用关键字作为变量名。

24.同步和异步的区别,各自有优缺点?

同步(Synchronous)

定义

阻塞当前线程或进程,直到该操作完成并返回结果。
程序按顺序执行,一步接一步,每个步骤都需等待前一个步骤完成。

优点:

简单易懂: 流程的控制流直观,易于理解和调试。
上下文连贯: 操作在一个上下文中连续执行,便于管理状态和资源。
异常处理直接: 错误和异常可以在发生时立即捕获并处理,逻辑处理连贯。

缺点:

效率低: 在 I/O 密集型(文件读写、网络请求),线程被阻塞,导致整体效率下降。
阻塞性: 长时间的同步操作会阻碍后续代码的执行,影响程序响应性。
资源占用: 在多线程环境下,大量同步操作可能导致线程资源耗尽。

异步(Asynchronous)

定义:

不会阻塞当前线程,在启动操作后立即返回,允许程序继续执行后续代码
操作结果未来某个时间通过回调、事件、Promise、async/await 方式通知给调用方。

优点:

提高效率: 允许程序在等待 I/O 操作的同时执行其他任务,提高了 CPU 利用率。
响应快速: UI 线程不被阻塞,可以即时响应用户输入,提升用户体验。
资源利用: 减少了线程阻塞,更高效地利用系统资源,特别是处理大量并发请求时。

缺点:

复杂度增加: 异步编程模式如回调地狱、Promise 链或 async/await 增加了代码的
复杂度,对初学者不够友好。
调试困难: 非线性的执行流程使得跟踪和调试异步代码相对困难。
控制流挑战: 由于操作不是按顺序执行,控制流程的管理变得复杂,尤其是错误处
理和资源清理。

相关文章:

公司面试题总结(四)

19.请解释什么是事件代理,应用场景 ⚫ 事件流的都会经过三个阶段: 捕获阶段 -> 目标阶段 -> 冒泡阶段,而事件委托就是 在冒泡阶段完成 ⚫ 事件委托,会把一个或者一组元素的事件委托到它的父层或者更外层元素上&#xf…...

守护山川,联通希望 —— 北斗户外应急呼叫柱:野外安全的守护神

在大自然的怀抱中,每一次探险和巡检都是对未知的挑战,也是对安全的考验。北斗户外应急呼叫柱,以科技创新为基石,致力于在最偏远、最危险的环境中搭建起生命的桥梁,确保每一次求救都能被听见,每一处危机都能…...

使用canvas制作一个无人机旋转特效

​ 使用HTML5的Canvas API来制作一个无人机旋转特效。这个特效将包括一个无人机图标(你可以使用任何你喜欢的图标),它会在一个固定的位置旋转。 首先,我们需要创建一个HTML文件,然后在其中添加一个canvas元素。canvas…...

感受风的速度~2024COSP上海国际户外展为您的骑行之旅锦上添花

夏天已经到来 你是在家里宅着 还是出去晒太阳呢 若是还没抉择好 不如来一场畅快淋漓的追风之旅 抬头可见蓝天白云 低头便是美丽风景 无论是在凉亭闲聊的人们 还是竞相绽放的花朵 每一个场景都令人难忘 骑累了 就到附近的座椅上小憩一番 不用刻意追求速度 尽享“慢…...

冲12分top刊|乳腺癌单细胞细分亚型的正确打开方式

说在前面 学习一下一篇自测数据工作量叠满的单细胞文章,也算是多组学的了,bulkRNAscRNA,还有个伪RNA。 整体是一个单细胞分小群的研究思路,分出三种上皮细胞亚群(BM、LP、ML),在功能、免疫、预…...

1-Maven-settings配置

1-Maven-settings配置 整理下Maven工具的使用。 【本地仓库、私服、镜像仓库、远程仓库、中央仓库】 本文基于阅读其他博客和对公司Maven配置的学习整理出来的。希望通过本此学习能对Maven有个整体性的掌控。 顺序:profile.repository > pom文件中的repository &…...

使用服务器搭建个人图床

前置条件 云服务器picGo软件,下载地址开始搭建 发布站点 该步骤不一一说明,主要说明搭建图床的步骤。 可以直接使用nginx或者宝塔面板,发布一个静态资源的文件夹。 假如我发布的文件路径是/www/img,访问地址是http://cc.cc.cc(没有域名ip地址也行) 在img下建立两个文件夹…...

探索 doc 和 docx 文件格式的区别

人不走空 🌈个人主页:人不走空 💖系列专栏:算法专题 ⏰诗词歌赋:斯是陋室,惟吾德馨 目录 🌈个人主页:人不走空 💖系列专栏:算法专题 ⏰诗词歌…...

kettle学习(利用jsonPath定位,json文件转换)

kettle学习(利用jsonPath定位,json文件转换) 于数据处理的广袤天地间,我们时常需应对各类繁杂状况与各式格式。Kettle 作为极具威力的数据集成利器,赋予了我们诸多功能与无限可能此次博客里,我们将重点投向…...

选到哪里看命

srand()、rand() srand(static_cast<unsigned int>(time(nullptr))) 是 C 中用于初始化随机数生成器&#xff08;Random Number Generator, RNG&#xff09;的一个常用语句。srand 函数是 C 标准库 <cstdlib> 中的一部分&#xff0c;用于设置随机数发生器的种子值…...

MyBatis插件机制介绍与原理

插件简介 什么是插件 插件是一种软件组件&#xff0c;可以在另一个软件程序中添加功能或特性。插件通常被设计成可以 随时添加或删除 的&#xff0c;而不影响 主程序 的功能。插件可以 扩展 软件程序的功能&#xff0c;这让用户可以根据自己的需求定制软件&#xff0c;提高工作…...

[每日一练]利用.str.len()布尔值查询实现字数需求

该题目来源于力扣&#xff1a; 1683. 无效的推文 - 力扣&#xff08;LeetCode&#xff09; 题目要求&#xff1a; 表&#xff1a;Tweets ------------------------- | Column Name | Type | ------------------------- | tweet_id | int | | content …...

Post Microsoft Build and AI Day 北京开发者日

Microsoft Build 开发者大会 Microsoft Build 开发者大会是微软每年一次的开发者技术盛会&#xff0c;旨在向全球开发者展示微软最新的技术、产品和服务。 刚刚过去的 2024 Microsoft Build 开发者大会围绕 Copilot、生成式 AI、应用程序安全、云平台、低代码等多个技术方向&a…...

Qt-Advanced-Docking-System的学习

Qt5.12实现Visual Studio 2019 拖拽式Dock面板-Qt-Advanced-Docking-System_c_saide6000-GitCode 开源社区 (csdn.net) 我使用的是Qt5.5.0 开始&#xff0c;我下载的是最新版的源码&#xff1a;4.1版本 但是&#xff0c;打开ads.pro工程文件&#xff0c;无法编译成功。 然后…...

STM32定时器输出pwm的几种模式

目录 定时器 输出脉冲模式&#xff1a; PWM模式&#xff08;PWM Mode&#xff09; 输出比较模式&#xff08;Output Compare Mode&#xff09; 总结 占空比&#xff1a; 输出比较模式与占空比 PWM模式与占空比 输出比较模式与PWM模式的结合 输出比较模式实例&#xf…...

5 分支结构程序-5.1 关系运算符和表达式

【例 5.1】 #include <stdio.h>main() {char c k;int i 1, j 2, k 3;float x 3e5, y 0.85;printf("%d,%d\n",a 5 < c, -i - 2 * j > k 1);printf("%d,%d\n", 1 < j < 5, x - 5.25 < x y);printf("%d,%d\n", i j…...

提升易用性,OceanBase生态管控产品的“从小到大”

2022年&#xff0c;OceanBase发布4.0版本“小鱼”&#xff0c;并首次公开提出了单机分布式一体化这一理念&#xff0c;旨在适应大小不同规模的工作负载&#xff0c;全面满足用户数据库“从小到大”全生命周期的需求。当时&#xff0c;我们所说的“从小到大”主要聚焦于数据库的…...

Golang——gRPC认证

一. OpenSSL 1.1 介绍 OpenSSL是一个开放源代码的软件库包&#xff0c;用于支持网络通讯过程中的加密。这个库提供的功能包含了SSL和TLS协议的实现&#xff0c;并可用于生成密钥、证书、进行密码运算等。 其组成主要包括一下三个组件&#xff1a; openssl&#xff1a;多用途的命…...

探索FPGA技术:零成本入门指南

FPGA作为一门前沿的集成电路技术&#xff0c;不仅在数字电子领域有着广泛的应用&#xff0c;而且对于硬件编程和数字电路设计的学习者来说&#xff0c;是一次深入了解技术原理的绝佳机会。现在&#xff0c;让我们看看如何不花一分钱&#xff0c;就能开始我们的FPGA学习之旅。 方…...

Java数据结构与算法(组合问题回溯算法)

前言 上期重点介绍了回溯算法在约束满足问题情况下应用。这期看看在组合问题场景下如何使用。 回溯算法通常用于解决以下几类问题&#xff1a; 1. 组合问题 需要从集合中选择一些元素&#xff0c;并找出所有可能的组合。例子&#xff1a;子集生成问题、组合数问题&#xff…...

7.4.分块查找

一.分块查找的算法思想&#xff1a; 1.实例&#xff1a; 以上述图片的顺序表为例&#xff0c; 该顺序表的数据元素从整体来看是乱序的&#xff0c;但如果把这些数据元素分成一块一块的小区间&#xff0c; 第一个区间[0,1]索引上的数据元素都是小于等于10的&#xff0c; 第二…...

Objective-C常用命名规范总结

【OC】常用命名规范总结 文章目录 【OC】常用命名规范总结1.类名&#xff08;Class Name)2.协议名&#xff08;Protocol Name)3.方法名&#xff08;Method Name)4.属性名&#xff08;Property Name&#xff09;5.局部变量/实例变量&#xff08;Local / Instance Variables&…...

全球首个30米分辨率湿地数据集(2000—2022)

数据简介 今天我们分享的数据是全球30米分辨率湿地数据集&#xff0c;包含8种湿地亚类&#xff0c;该数据以0.5X0.5的瓦片存储&#xff0c;我们整理了所有属于中国的瓦片名称与其对应省份&#xff0c;方便大家研究使用。 该数据集作为全球首个30米分辨率、覆盖2000–2022年时间…...

涂鸦T5AI手搓语音、emoji、otto机器人从入门到实战

“&#x1f916;手搓TuyaAI语音指令 &#x1f60d;秒变表情包大师&#xff0c;让萌系Otto机器人&#x1f525;玩出智能新花样&#xff01;开整&#xff01;” &#x1f916; Otto机器人 → 直接点明主体 手搓TuyaAI语音 → 强调 自主编程/自定义 语音控制&#xff08;TuyaAI…...

HTML前端开发:JavaScript 常用事件详解

作为前端开发的核心&#xff0c;JavaScript 事件是用户与网页交互的基础。以下是常见事件的详细说明和用法示例&#xff1a; 1. onclick - 点击事件 当元素被单击时触发&#xff08;左键点击&#xff09; button.onclick function() {alert("按钮被点击了&#xff01;&…...

鱼香ros docker配置镜像报错:https://registry-1.docker.io/v2/

使用鱼香ros一件安装docker时的https://registry-1.docker.io/v2/问题 一键安装指令 wget http://fishros.com/install -O fishros && . fishros出现问题&#xff1a;docker pull 失败 网络不同&#xff0c;需要使用镜像源 按照如下步骤操作 sudo vi /etc/docker/dae…...

自然语言处理——循环神经网络

自然语言处理——循环神经网络 循环神经网络应用到基于机器学习的自然语言处理任务序列到类别同步的序列到序列模式异步的序列到序列模式 参数学习和长程依赖问题基于门控的循环神经网络门控循环单元&#xff08;GRU&#xff09;长短期记忆神经网络&#xff08;LSTM&#xff09…...

佰力博科技与您探讨热释电测量的几种方法

热释电的测量主要涉及热释电系数的测定&#xff0c;这是表征热释电材料性能的重要参数。热释电系数的测量方法主要包括静态法、动态法和积分电荷法。其中&#xff0c;积分电荷法最为常用&#xff0c;其原理是通过测量在电容器上积累的热释电电荷&#xff0c;从而确定热释电系数…...

PAN/FPN

import torch import torch.nn as nn import torch.nn.functional as F import mathclass LowResQueryHighResKVAttention(nn.Module):"""方案 1: 低分辨率特征 (Query) 查询高分辨率特征 (Key, Value).输出分辨率与低分辨率输入相同。"""def __…...

PostgreSQL——环境搭建

一、Linux # 安装 PostgreSQL 15 仓库 sudo dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-$(rpm -E %{rhel})-x86_64/pgdg-redhat-repo-latest.noarch.rpm# 安装之前先确认是否已经存在PostgreSQL rpm -qa | grep postgres# 如果存在&#xff0…...