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

使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式

一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明&#xff1a;假设每台服务器已…...

web vue 项目 Docker化部署

Web 项目 Docker 化部署详细教程 目录 Web 项目 Docker 化部署概述Dockerfile 详解 构建阶段生产阶段 构建和运行 Docker 镜像 1. Web 项目 Docker 化部署概述 Docker 化部署的主要步骤分为以下几个阶段&#xff1a; 构建阶段&#xff08;Build Stage&#xff09;&#xff1a…...

简易版抽奖活动的设计技术方案

1.前言 本技术方案旨在设计一套完整且可靠的抽奖活动逻辑,确保抽奖活动能够公平、公正、公开地进行,同时满足高并发访问、数据安全存储与高效处理等需求,为用户提供流畅的抽奖体验,助力业务顺利开展。本方案将涵盖抽奖活动的整体架构设计、核心流程逻辑、关键功能实现以及…...

【ROS】Nav2源码之nav2_behavior_tree-行为树节点列表

1、行为树节点分类 在 Nav2(Navigation2)的行为树框架中,行为树节点插件按照功能分为 Action(动作节点)、Condition(条件节点)、Control(控制节点) 和 Decorator(装饰节点) 四类。 1.1 动作节点 Action 执行具体的机器人操作或任务,直接与硬件、传感器或外部系统…...

2025盘古石杯决赛【手机取证】

前言 第三届盘古石杯国际电子数据取证大赛决赛 最后一题没有解出来&#xff0c;实在找不到&#xff0c;希望有大佬教一下我。 还有就会议时间&#xff0c;我感觉不是图片时间&#xff0c;因为在电脑看到是其他时间用老会议系统开的会。 手机取证 1、分析鸿蒙手机检材&#x…...

C++课设:简易日历程序(支持传统节假日 + 二十四节气 + 个人纪念日管理)

名人说:路漫漫其修远兮,吾将上下而求索。—— 屈原《离骚》 创作者:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊) 专栏介绍:《编程项目实战》 目录 一、为什么要开发一个日历程序?1. 深入理解时间算法2. 练习面向对象设计3. 学习数据结构应用二、核心算法深度解析…...

【MATLAB代码】基于最大相关熵准则(MCC)的三维鲁棒卡尔曼滤波算法(MCC-KF),附源代码|订阅专栏后可直接查看

文章所述的代码实现了基于最大相关熵准则(MCC)的三维鲁棒卡尔曼滤波算法(MCC-KF),针对传感器观测数据中存在的脉冲型异常噪声问题,通过非线性加权机制提升滤波器的抗干扰能力。代码通过对比传统KF与MCC-KF在含异常值场景下的表现,验证了后者在状态估计鲁棒性方面的显著优…...

Chromium 136 编译指南 Windows篇:depot_tools 配置与源码获取(二)

引言 工欲善其事&#xff0c;必先利其器。在完成了 Visual Studio 2022 和 Windows SDK 的安装后&#xff0c;我们即将接触到 Chromium 开发生态中最核心的工具——depot_tools。这个由 Google 精心打造的工具集&#xff0c;就像是连接开发者与 Chromium 庞大代码库的智能桥梁…...

华为OD最新机试真题-数组组成的最小数字-OD统一考试(B卷)

题目描述 给定一个整型数组,请从该数组中选择3个元素 组成最小数字并输出 (如果数组长度小于3,则选择数组中所有元素来组成最小数字)。 输入描述 行用半角逗号分割的字符串记录的整型数组,0<数组长度<= 100,0<整数的取值范围<= 10000。 输出描述 由3个元素组成…...

如何做好一份技术文档?从规划到实践的完整指南

如何做好一份技术文档&#xff1f;从规划到实践的完整指南 &#x1f31f; 嗨&#xff0c;我是IRpickstars&#xff01; &#x1f30c; 总有一行代码&#xff0c;能点亮万千星辰。 &#x1f50d; 在技术的宇宙中&#xff0c;我愿做永不停歇的探索者。 ✨ 用代码丈量世界&…...