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

CMake的使用方法

1 CMakeLists.txt编写 cmake_minimum_required(VERSION 3.12)project(djl_plm)set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -stdc17 -g")add_executable(simple simple.cpp) add_executable(main main.cpp)include_directories(include) 相当于如下gcc命令&#xff1…...

java面试整合全套

什么是Java &#xff08;定义 优点&#xff09; java是一个平台&#xff0c;由jvm和Java应用编程接口构成的一门面向编程语言。 不仅吸收了C语言的各种优点&#xff0c;还摒弃了c语言里面的多继承,指针等概念&#xff0c;因此java的特征主要有功能强大和简单易用的特征。 jav…...

贪吃蛇小游戏简单制作-C语言

文章目录 游戏背景介绍实现目标适合人群所需技术浅玩Window API什么是API控制台程序窗口大小,名称设置 Handle(句柄)获取句柄 坐标结构体设置光标位置 光标属性获取光标属性设置光标属性 按键信息获取 贪吃蛇游戏设计游戏前的初始化设置窗口的大小和名称本地化设置 宽字符Waht …...

Oracle数据库-重点信息查询方法

文章目录 一、数据库信息及查询方法1.1是否为RAC1.2 数据库存储容量大小1.3 在线会话数1.4 最大分区数1.5 最大存储过程行数1.6 单表最大行数1.7 最大单表大小1.8 表总数量1.9 无主键表的数量1.10 字段数超过200的宽表1.11 关注CPU耗时高的SQL 一、数据库信息及查询方法 1.1是…...

【全开源】多平台租房系统源码(Fastadmin+ThinkPHP+Uniapp)

&#x1f3e0;多平台租房系统&#xff1a;一站式租房新体验&#x1f50d; &#x1f310;一、引言&#xff1a;租房市场的变革 在快节奏的现代生活中&#xff0c;租房已成为许多人解决居住问题的首选。然而&#xff0c;传统的租房方式往往繁琐且效率低下。随着互联网的飞速发展…...

Pythond 的 corr函数

Python corr函数科普 在数据分析和机器学习领域,数据的相关性是一个非常重要的概念。相关性可以帮助我们理解数据之间的关系,并且可以作为一种预测模型的基础。Python中的corr()函数是一个用于计算数据之间相关性的强大工具。本文将介绍corr()函数的使用方法,并通过代码示例…...

Fiddler 中文版 (强大的网络响应HTPP协议抓包工具)

前言 Fiddler Web Debugger&#xff0c;功能强大的抓包工具&#xff0c;Web调试工具&#xff0c;HTTP协议抓包调试工具。它能够捕获浏览器和程序的所有http/https通信连接&#xff0c;可以针对访问请求&#xff0c;分析请求数据报文、设置断点、调试web程序、解密和美化JS脚本…...

初出茅庐的小李博客之JSON格式介绍

什么是JSON JSON:JavaScript Object Notation (翻译就是JavaScript 对象表示法)&#xff0c;是一种表示对象的方法。 JSON 是存储和交换文本信息的语法&#xff0c;类似 XML。但是JSON 比 XML 更小、更快&#xff0c;更易解析。此外JSON也易于人阅读和编写。而且主流的编程语言…...

Vue3相关语法内容,组件传值,事件监听,具名插槽。

1、Vue3相关语法内容 赋值语句(ref、reactive系列)组件传值(父子&#xff0c;子父)watch&#xff0c;watchEffect监听slot具名插槽 1、赋值语法&#xff08;ref&#xff0c;reactive&#xff09; 1.1、ref 、isRef、 shallowRef、triggerRef、customRef 支持所有的类型&…...

Linux用户,用户组,所有者权限分配,sftp用户权限分配

注意以下命令执行需要在root用户下执行 tenant命令切换至root命令 sudo -do root 删除用户信息 1.不删除用户主目录 userdel user_name 2.删除用户主目录 userdel -r user_name usermod命令修改用户账户权限 更改用户名 sudo usermod -l newusername oldusername 更…...

樟木头的建网站公司/开网站怎么开

一、什么是爬虫 爬虫&#xff1a;一段自动抓取互联网信息的程序&#xff0c;从互联网上抓取对于我们有价值的信息。 二、Python爬虫架构 Python 爬虫架构主要由五个部分组成&#xff0c;分别是调度器、URL管理器、网页下载器、网页解析器、应用程序&#xff08;爬取的有价值…...

网站建设专业学什么/搜索引擎优化服务

chidNodes返回的是node的集合&#xff0c;每个node都包含有nodeType属性。 nodeType取值&#xff1a; 元素节点&#xff1a;1 属性节点&#xff1a;2 文本节点&#xff1a;3 注释节点&#xff1a;8页面上是由无数个节点组成&#xff0c;节点分成元素节点、属性节点、文本节点、…...

web前端开发需要哪些技术/武汉seo排名优化公司

转载于:https://blog.51cto.com/chiefkey/68533...

南宁网站开发价格/免费建站网站一站式

先说下改变窗体样式的代码&#xff0c;如下&#xff1a; this.FormBorderStyle System.Windows.Forms.FormBorderStyle.None; 实现点击winform窗体,运用鼠标就可以移动窗体&#xff0c;而不需要点击窗体边框处。 using System.Runtime.InteropServices; 在窗体内加上以下代码&…...

判断网站模板版本/常用的搜索引擎

在寒冷的冬天&#xff0c;很多车主在开车的时候会出现一个问题&#xff0c;那就是凉车启动困难这个问题&#xff0c;具体就是打不着火&#xff0c;必须得打几下才能启动&#xff0c;或者在打火的时候&#xff0c;发动机运转了几个行程之后才能打着火&#xff0c;而且打着火以后…...

合肥做网站的价格/seo优

Spring Boot安装及使用 2021.10.281、Spring Boot 简介1.1 为何选择Spring&#xff1f;1.2 Spring的功能1.3 Spring项目的依赖包管理工具&#xff08;Maven or Gradle&#xff09;2、Spring Boot 安装前提环境(Java必备Maven / Gradle)2.1 安装Java2.2 Maven配置2.3 Gradle配置…...