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

5步突破:用RVC变声器从零到专业音色转换的实战指南

5步突破&#xff1a;用RVC变声器从零到专业音色转换的实战指南 【免费下载链接】Retrieval-based-Voice-Conversion-WebUI 语音数据小于等于10分钟也可以用来训练一个优秀的变声模型&#xff01; 项目地址: https://gitcode.com/GitHub_Trending/re/Retrieval-based-Voice-Co…...

零代码基础也能用:万物识别-中文-通用领域镜像一键部署教程

零代码基础也能用&#xff1a;万物识别-中文-通用领域镜像一键部署教程 1. 开箱即用的图片识别神器 想象一下这样的场景&#xff1a;你刚拍了一张照片&#xff0c;还没来得及细看&#xff0c;AI就已经告诉你画面里有什么——这不是科幻电影&#xff0c;而是"万物识别-中…...

从零构建MAX30102心率血氧监测系统

1. MAX30102传感器基础认知 第一次接触MAX30102时&#xff0c;我盯着这个5mm3mm的小芯片看了半天——很难想象这么小的器件能同时测量心率和血氧。它本质上是个光电生物传感器&#xff0c;工作原理就像用手电筒照手指&#xff1a;内置的红光(660nm)和红外光(880nm)LED穿过皮肤组…...

步进电机复位翻车实录:从堵转到精准归位的5个调试技巧

步进电机复位翻车实录&#xff1a;从堵转到精准归位的5个调试技巧 去年夏天&#xff0c;我接手了一个工业自动化项目&#xff0c;需要精确控制12台42步进电机同步复位。本以为是个常规任务&#xff0c;结果第一周就遭遇了集体"罢工"——有的电机原地抖动不归零&#…...

OpenClaw:AI 权限治理的核心问题

子玥酱 &#xff08;掘金 / 知乎 / CSDN / 简书 同名&#xff09; 大家好&#xff0c;我是 子玥酱&#xff0c;一名长期深耕在一线的前端程序媛 &#x1f469;‍&#x1f4bb;。曾就职于多家知名互联网大厂&#xff0c;目前在某国企负责前端软件研发相关工作&#xff0c;主要聚…...

逆向工程必备:用aardio和Sunny中间件抓取手机App封包的3种实战姿势

逆向工程实战&#xff1a;aardio与Sunny中间件的移动端封包拦截艺术 在移动应用安全研究领域&#xff0c;封包拦截与分析是理解应用通信逻辑的关键入口。不同于传统的PC端抓包&#xff0c;移动环境面临着证书绑定、代理检测等更复杂的防御机制。aardio配合Sunny中间件构建的轻量…...

Nuitka打包Python脚本为.exe的完整避坑指南(含Selenium解决方案)

Nuitka打包Python脚本为.exe的完整避坑指南&#xff08;含Selenium解决方案&#xff09; 将Python脚本打包成独立的可执行文件是许多开发者面临的常见需求&#xff0c;尤其是当需要分发工具或应用给没有Python环境的用户时。Nuitka作为一款强大的Python编译器&#xff0c;能够将…...

4个强大的开源工具功能扩展方案

4个强大的开源工具功能扩展方案 【免费下载链接】cursor-free-vip [Support 0.45]&#xff08;Multi Language 多语言&#xff09;自动注册 Cursor Ai &#xff0c;自动重置机器ID &#xff0c; 免费升级使用Pro 功能: Youve reached your trial request limit. / Too many fre…...

OpenClaw调试技巧:QwQ-32B任务失败的根本原因分析

OpenClaw调试技巧&#xff1a;QwQ-32B任务失败的根本原因分析 1. 问题背景与诊断框架 上周我在尝试用OpenClaw对接本地部署的QwQ-32B模型时&#xff0c;遇到了一个典型问题&#xff1a;简单的文件整理任务总是执行到一半就中断&#xff0c;控制台只显示"模型响应超时&qu…...

避开这些坑!医疗内窥镜Zemax优化时的高温灭菌与弯曲成像难题解决指南

医疗内窥镜光学系统设计实战&#xff1a;高温灭菌与弯曲成像的Zemax解决方案 在微创手术和工业检测领域&#xff0c;直径仅2.8mm的医疗内窥镜需要同时满足140广角视场、F2.0大光圈和10μm高分辨率的要求。更严峻的挑战来自使用环境——必须耐受135℃高温蒸汽灭菌&#xff0c;并…...