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

公司面试题总结(三)

13.说说你对 BOM 的理解,常见的 BOM 对象你了解哪些?

BOM (Browser Object Model)浏览器对象模型

提供了独立于内容与浏览器窗口进行交互的对象
其作用就是跟浏览器做一些交互效果
比如如何进行页面的后退,前进,刷新,浏览器的窗口发生变化,滚动条的滚动,以及
获取客户的一些信息如:浏览器品牌版本,屏幕分辨率
浏览器的全部内容可以看成 DOM, 整个浏览器可以看成 BOM
window 对象:
        ◼ BOM 的顶层对象,代表整个浏览器窗口。
        ◼ 所有全局变量、函数以及 BOM 的其他对象都是 window 对象的属性。
        ◼ 提供了许多方法和属性 open(),alert(), prompt(), setTimeout(), location, navigator 等。
location 对象:
        ◼ 提供有关当前页面 URL 的信息,并且可以用来导航到新的 URL。
        ◼ 常用属性有 href(完整 URL), pathname(路径名), search(查询字符串)等,
        ◼ 方法有 assign(), reload(), replace()等。
navigator 对象:
        ◼ 提供了关于浏览器的信息,如名称、版本号和用户代理字符串等。
        ◼ 常用于检测浏览器类型和能力。
history 对象:
        ◼ 通过脚本访问浏览器的浏览历史。
        ◼ 对象只提供了前进(forward())、后退(back())和重载当前页面(go())等有限的方法,并
        不能读取具体的历史记录条目。
screen 对象:
         提供了关于用户屏幕的信息,如宽度、高度、可用宽度、可用高度、色彩深度等。
localStorage/sessionStorage 对象:
这两者都是 Web Storage API 的一部分,用于在用户的浏览器上存储数据。
localStorage 用于持久化存储,而 sessionStorage 的数据仅在当前会话期间有效。
document 对象:
        ◼ 代表当前页面的 HTML 文档。
        ◼ 虽然严格来说它属于 DOM(Document Object Model)的一部分,但因为可以直
        接通过 window.document 访问,所以也常被视为 BOM 的一部分。
        ◼ 它提供了操作文档内容、结构和样式的方法,如 getElementById(), querySelector(),
        createElement()等。

14.Javascript 本地存储的方式有哪些?区别及应用场景?

Cookie

小型文本文件,为了辨别用户身份而储存在用户本地终端上的数据
不超过 4KB 的小型文本数据
由 Name、Value 和几个控制 cookie 有效期、安全性、使用范围的可选属性组成
每次请求中都会被发送,不使用 HTTPS 对其加密,保存的信息很容易被窃取,导
致安全风险。
应用场景: 标记用户与跟踪用户行为的情况

sessionStorage

持久化的本地存储,除非主动删除数据,否则数据是永远不会过期的
存储的信息在同一域中是共享的
无法像 Cookie 一样设置过期时间
只能存入字符串,无法直接存对象

应用场景:适合长期保存在本地的数据(令牌)

localStorage

一旦页面(会话)关闭,sessionStorage 将会删除数据
应用场景: 敏感账号一次性登录

indexedDB

一种低级 API,用于客户端存储大量结构化数据(包括, 文件/ blobs)。
该 API 使用索引来实现对该数据的高性能搜索
应用场景: 存储大量数据的情况、在线文档(富文本编辑器)保存编辑历史的情况
优点
        ◆ 储存量理论上没有上限
        ◆ 所有操作都是异步的,相比 LocalStorage 同步操作性能更高,尤其是数据量
        较大时
        ◆ 原生支持储存 JS 的对象
        ◆ 是个正经的数据库,意味着数据库能干的事它都能干
缺点
        ◆ 操作非常繁琐
        ◆ 本身有一定门槛
关于 indexedDB 的使用基本使用步骤 如下:
打开数据库并且开始一个事务 创建一个 object store
构建一个请求来执行一些数据库操作,像增加或提取数据等。
通过监听正确类型的 DOM 事件以等待操作完成。
在操作结果上进行一些操作(可以在 request 对象中找到)
关于使用 indexdb 的使用会比较繁琐,大家可以通过使用 Godb.js 库进行缓
存,最大化的降低操作难度

15.什么是防抖和节流?有什么区别?如何实现?

防抖:

在事件触发后,等待一段时间后再执行处理函数。如果在等待时间内又发生了该
事件,就重新开始计时。简单来说,就是将多次连续触发的事件合并成一次执行。

应用场景

用户输入搜索框时,可以使用防抖来减少实时搜索接口的请求次数。
窗口大小调整时,可以使用防抖来避免频繁调整布局。

实现方式

使用 setTimeout 延迟执行函数。
每次触发事件时先清除之前设置的定时器,再重新设置新的定时器。

节流:

节流是指在一定时间间隔内只触发一次事件。无论事件触发多频繁,在指定时间
间隔内,只会执行一次处理函数。

应用场景

页面滚动、resize 等频繁触发的事件,可以使用节流来限制处理函数的
执行频率。

实现方式

使用定时器控制事件的触发间隔。
在定时器执行时,更新标志位以防止重复触发事件。
在指定时间间隔后清除定时器,再次允许事件触发。

区别:

防抖是等待一段时间后再执行,而节流是在时间间隔内只执行一次。
防抖合并连续的触发事件,节流限制事件的触发频率。
防抖会延迟执行处理函数,节流会按照固定的时间间隔执行处理函数。

16.如何通过 JS 判断一个数组

使用 Array.isArray()

这是 ES6 引入的一个原生方法,专门用来检测给定的对象是否为数组。
let arr = [1, 2, 3];
console.log(Array.isArray(arr)); // 输出: true

使用 Object.prototype.toString.call():

这个方法会返回一个表示该对象的字符串,对于数组,它会返回 “[object Array]”。
let arr = [1, 2, 3];
console.log(Object.prototype.toString.call(arr) === '[object Array]'); // 输出: true

使用 instanceof:

这个操作符检查构造函数的 prototype 属性是否出现在某个实例对象的原型链上。
let arr = [1, 2, 3];
console.log(arr instanceof Array); // 输出: true

通过 constructor 属性:

虽然这种方法可行,但是不推荐,因为 constructor 属性可以被轻易篡改。
let arr = [1, 2, 3];
console.log(arr.constructor === Array); // 输出: true

通过原型链上的 isPrototypeOf() 方法:

这种方法相对较少使用,也是基于原型链的检查。
let arr = [1, 2, 3];
console.log(Array.prototype.isPrototypeOf(arr)); // 输出: true

创建一个数组

使用 Array 构造函数

let array1 = new Array(); // 创建一个空数组
let array2 = new Array(3); // 创建一个长度为 3 的空数组
let array3 = new Array("Apple", "Banana", "Cherry");

使用字面量语法

最常见的创建数组,更简洁且推荐使用。
let array4 = []; // 创建一个空数组
let array5 = ["Apple", "Banana", "Cherry"]; // 创建包含三个初始元素的数组

使用 Array.of()

将一组参数转换为数组
let array6 = Array.of(1, 2, 3); // 创建包含三个元素的数组
let array7 = Array.of(0); // 正确创建只有一个元素 0 的数组,与 new Array(0)不同

通过扩展运算符(...)

复制或合并数组,快速创建数组。
let array8 = [..."hello"]; // ["h", "e", "l", "l", "o"]

通过 Array.from()

将类数组对象(拥有 length 属性和索引元素)或可迭代对象转换为真正的数组。
let arrayLike = {0: 'a', 1: 'b', 2: 'c', length: 3};
let array9 = Array.from(arrayLike); // 创建数组 ["a", "b", "c"]
let iterable = new Map([["a", 1], ["b", 2]]);
let array10 = Array.from(iterable); // 创建数组 [["a", 1], ["b", 2]]

17.说说你对作用域链的理解

作用域 ,即变量(变量作用域又称上下文)和函数生效(能被访问)的区域或集合
一个包含一系列作用域的列表,这个列表定义了变量的可访问性。 每个函数在创建时都会生成自己的作用域链,这个链最初由全局作用域组成。
当函数嵌套时,内部函数的作用域链会包含外部函数的作用域,以此类推,形成了一个
链条。
将作用域分成:
全局作用域
任何不在函数中或是大括号中声明的变量
可以在程序的任意位置访问
函数作用域
也叫局部作用域,如果一个变量是在函数内部声明的它就在一个函数作用域下面。
这些变量只能在函数内部访问,不能在函数以外去访问
块级作用域
ES6 引入了 let 和 const 关键字,和 var 关键字不同
在大括号中使用 let 和 const 声明的变量存在于块级作用域中。
在大括号之外不能访问这些变量
词法作用域 ,又叫 静态作用域 ,变量被创建时就确定好了,而非执行阶段确定的。也就是说
我们写好代码时它的作用域就确定了,JavaScript 遵循的就是词法作用域
作用域链
当在 Javascript 中使用一个变量的时候
首先 Javascript 引擎会尝试在当前作用域下去寻找该变量,
如果没找到,再到它的上层作用域寻找,
以此类推直到找到该变量或是已经到了全局作用域
如果在全局作用域里仍然找不到该变量,它就会在全局范围内隐式声明该变量(非严格
模式下)或是直接报错

18.JavaScript 原型,原型链 ? 有什么特点?

原型:

每个实例都会被分配到一个 prototype 属性,指向一个对象,此对象为函数的原型对象,
这个原型对象的所有属性和方法供函数所拥有。
默认情况下创建函数时,函数的原型上都会添加 constructor,这个 constructor 指向当
前函数对象。

原型链:

每个对象都有__proto__属性,由于原型本身也是一个对象,也有该属性,那么就可以利
用这一属性继续向上一级查找,这样就形成一条链式结构。
最顶级的对象是 Object(window),在往上就是 null。

原型链的查找机制:

查找属性时,先在对象自身查找,如果对象本身没有,就去原型中查找
如果还没有就继续向原型链的上一级查找,找到就输出。
如果指导 object 层还没有,最终返回 undefined。

事件

用户和浏览器交互瞬间

相关文章:

公司面试题总结(三)

13.说说你对 BOM 的理解,常见的 BOM 对象你了解哪些? BOM (Browser Object Model),浏览器对象模型, ⚫ 提供了独立于内容与浏览器窗口进行交互的对象 ⚫ 其作用就是跟浏览器做一些交互效果 ⚫ 比如如何进行页面的后退&…...

PLSQL 报错 could not locate oci.dll

0、确保PLSQL已激活。 1、在PLSQL安装包内搜索oci.dll,如果没有搜到需要下载 链接:https://pan.baidu.com/s/1HOfKAEFfuAGYACjfcwqJ1g 提取码:6evh 2、打开PLSQL,设置oci.dll的路径 ps:PLSQL安装包 链接&#xff…...

【方案+源码】智慧园区建设方案

智慧园区一体化运营管理平台建设方案旨在通过集成先进的信息技术,实现园区的智能化、高效化、绿色化管理。该平台整合了物联网、大数据、云计算等技术,为园区提供全方位、一体化的运营服务。 方案包括智能监控、能源管理、安防系统、停车管理、物业管理等…...

Java操作数据库 —— JDBC ① 基础篇

我走我的路,有人拦也走,没人陪也走 —— 24.6.7 JDBC JDBC就是使用Java语言操作关系型数据库的一套API 一、JDBC简介 JDBC 概念 JDBC 就是使用Java语言操作关系型数据库的一套API 全称:(Java DataBase Connectivity)意为Java 数据库连接 JDBC 本质: ①…...

webpack和vite区别

一、Webpack 1. 概述 Webpack 是一个模块打包工具,它会递归地构建依赖关系图,并将所有模块打包成一个或多个bundle(包)。 2. 特点 配置灵活:Webpack提供了高度可定制的配置文件,可以根据项目需求进行各…...

FL Studio21永久免费破解中文版下载,让我这个音乐制作爱好者如获至宝!

FL Studio21永久免费破解中文版下载,让我这个音乐制作爱好者如获至宝!🎶 这款软件功能强大,操作简单易上手。我可以轻松地创作出各种风格的音乐作品。无论是流行、摇滚还是电子音乐,都能轻松驾驭。🎧 使用F…...

vue3 监听器,组合式API的watch用法

watch函数 在组合式 API 中,我们可以使用 watch 函数在每次响应式状态发生变化时触发回调函数 watch(ref,callback(newValue,oldValue),option:{}) ref:被监听的响应式量,可以是一个 ref (包括计算属性)、一个响应式…...

苹果WWDC开幕发布AI大模型,股价却跌近2%

KlipC报道:北京时间6月11日凌晨,苹果一年一度的“全球开发者大会”(WWDC)开幕。会上,先后介绍了iOS 18、iPadOS 18、watchOS 11等系统的更新,同时还展示了多个AI功能。宣布与OpenAI构建合作伙伴关系。然而&…...

C++ 11 【可变参数模板】【lambda】

💓博主CSDN主页:麻辣韭菜💓   ⏩专栏分类:C修炼之路⏪   🚚代码仓库:C高阶🚚   🌹关注我🫵带你学习更多C知识   🔝🔝 目录 前言 一、新的类功能 1.1默认成员函数—…...

c 宏应用举例

1.概要 #include <iostream> //变量可以直接使用 #define fun() a 100; //用变量计算可以 #define fun2(a) a*2; //用变量替换可以 #define fun3(a) d[a] a; //##链接的作用&#xff0c;一般用于链接变量名 #define fun4(type,name) type name##_s 4; //#的作用是转换…...

微信公众号(公众平台) 和 微信开放平台的scope的差异

微信公众号&#xff08;公众平台&#xff09; 和 微信开放平台 是两码事。 公众号&#xff08;公众平台&#xff09;获取的scope只包括两种&#xff1a;snsapi_base 和snsapi_userinfo&#xff0c;前者是静默获取&#xff0c;用户无感知&#xff1b;后者是需要用户确认同意的。…...

基于pytorch实现的DenseUnet医学图像分割(腹部多脏器)

1、前言 本章将介绍将densenet的主干网络引入unet中 官方实现的代码&#xff1a;kits19-challenge/network at master nitsaick/kits19-challenge (github.com) 本章实现的项目目录如下&#xff1a; 主要代码有train、evaluate、predict脚本 2、代码介绍 数据预处理脚本 数据…...

富格林:正规策划实现安全做单

富格林悉知&#xff0c;在投资理财的过程中&#xff0c;最重要的是控制风险实现安全做单避免损失。但是市场客观因素带来的风险并不能完全避免&#xff0c;因此投资者需要采取一些正规技能来减低风险投资风险实现安全做单。接下来就由富格林给大家分享一些实现安全做单的正规方…...

02. 异常捕捉和处理

检索特定内容的邮件&#xff0c;当检索失败&#xff0c;就会在终端输出“获取不了值” try: #代码块A except: #代码B 试一下运行代码A&#xff0c;当代码A报错时&#xff0c;执行代码B 这是main_exe.py文件中的内容 略过 #今天 for job_name,end_time in zip(bji.job_inf…...

Oracle和mysql中插入时间字段

例如有id 和 times两个字段 Oracle insert into xxx values|(1,sysdate) mysql insert into xxx values(1,now()) 在 MySQL 中&#xff0c;SYSDATE() 函数也是可用的&#xff0c;它与 NOW() 类似&#xff0c;但略有不同&#xff1a; NOW…...

注册小程序

每个小程序都需要在 app.js 中调用 App 方法注册小程序实例&#xff0c;绑定生命周期回调函数、错误监听和页面不存在监听函数等。 详细的参数含义和使用请参考 App 参考文档 。 整个小程序只有一个 App 实例&#xff0c;是全部页面共享的。开发者可以通过 getApp 方法获取到全…...

【YOLOv8改进[CONV]】使用MSBlock二次创新C2f模块实现轻量化 + 含全部代码和详细修改方式 + 手撕结构图 + 轻量化 + 涨点

本文将使用MSBlock二次创新C2f模块实现轻量化,助力YOLOv8目标检测效果的实践,文中含全部代码、详细修改方式以及手撕结构图。助您轻松理解改进的方法,实现有效涨点。 改进前和改进后的参数对比: 目录 一 MSBlock 二 使用MSBlock二次创新C2f模块实现轻量化 1 整体修改 …...

three.js使用环境贴图或者加载hdr图

1、three.js使用环境贴图 1.1、效果视频 环境贴图 1.2、使用步骤&#xff08;个人认为&#xff09; &#xff08;1&#xff09;导入引入相关方法 &#xff08;2&#xff09;创建场景 &#xff08;3&#xff09;创建相机 &#xff08;4&#xff09;添加物体材质 &#xff08;5…...

GPT-4o多模态大模型的架构设计

GPT-4o&#xff1a;大模型风向&#xff0c;OpenAI大更新 OpenAI震撼发布两大更新&#xff01;桌面版APP与全新UI的ChatGPT上线&#xff0c;简化用户操作&#xff0c;体验更自然。同时&#xff0c;全能模型GPT-4o惊艳亮相&#xff0c;跨模态即时响应&#xff0c;性能卓越且性价比…...

Facebook:社交世界的引领者

导语 在当今数字化时代&#xff0c;Facebook已经成为了人们社交生活的重要一环。然而&#xff0c;除了成为社交媒体的象征外&#xff0c;它还在不断探索并领导着社交世界的新方向。 1. 社交平台的发展者 Facebook不仅仅是一个社交平台&#xff0c;更是社交方式的引领者。从其…...

qt 加载字体 c++

目录 qt 加载字体 c label设置大小和字体&#xff1a; 资源配置路径失败 解决方法&#xff1a;exe相对目录&#xff1a; pro配置&#xff1a; resource.qrc qt 加载字体 c #include <QApplication> #include <QLabel> #include <QFontDatabase> #incl…...

Linux ldd和ldconfig

ldconfig ldconfig 查看默认库路径和ld.so.conf包含的库路径&#xff0c;来建立运行时动态装载的库查找路径。 ldconfig命令的用途,主要是在默认搜寻目录(/lib和/usr/lib)以及动态库配置文件/etc/ld.so.conf内所列的目录下,搜索出可共享的动态链接库(格式如前介绍,lib*.so*),…...

Python 学习flask创建项目

1、使用pycharm创建flask项目 2、运行访问地址 3、可以看到访问地址内容 4、可以增加路由&#xff0c;尝试访问获取参数...

.NET集成DeveloperSharp实现图片的裁剪、缩放、与加水印

&#x1f3c6;作者&#xff1a;科技、互联网行业优质创作者 &#x1f3c6;专注领域&#xff1a;.Net技术、软件架构、人工智能、数字化转型、DeveloperSharp、微服务、工业互联网、智能制造 &#x1f3c6;欢迎关注我&#xff08;Net数字智慧化基地&#xff09;&#xff0c;里面…...

阿里发布最强开源大模型通义千问Qwen2,国产最好用的LLM

前言 近年来&#xff0c;大模型技术发展迅速&#xff0c;开源模型的出现为AI研究和应用带来了新的活力。在这一背景下&#xff0c;阿里云通义千问团队发布了全新升级的Qwen2系列开源模型&#xff0c;为国内外开发者提供了更强大的工具和更丰富的选择。 Huggingface模型下载&am…...

探索风电机组:关键软件工具全解析

探索风电机组&#xff1a;关键软件工具全解析 随着可再生能源市场的迅猛发展&#xff0c;风电作为一种重要的可再生能源&#xff0c;其相关技术和工具也越来越受到重视。风电机组的设计、仿真、优化及运维等方面&#xff0c;都需要依靠一系列专业软件工具来实现。这些软件涵盖…...

HOW - CSS 常见效果实现

目录 渐隐渐显曲线&抛物线气泡框水波纹悬浮&漂浮长按控制进度条圆弧&圆形进度条引导蒙层随机物品掉落渐变边框光晕按钮下压反馈头像&#xff08;圆形半透明阴影&#xff09; 常见 CSS 效果实现总结。 渐隐渐显 <!DOCTYPE html> <html> <style>…...

EI/CPCI/Scopus会议论文是啥?

EI/CPCI/Scopus会议论文是啥&#xff1f; EI/CPCI/Scopus是学术圈常见的字母缩写了&#xff0c;它们并非某一种期刊或是某一种杂志&#xff0c;而是一种便捷的论文检索工具。它们之间的区别在于&#xff0c;各自涵盖的领域的不同。▌EI &#xff08;The Engineering Index&…...

【递归、搜索与回溯】穷举vs暴搜vs深搜vs回溯vs剪枝

穷举vs暴搜vs深搜vs回溯vs剪枝 1.全排列2.子集 点赞&#x1f44d;&#x1f44d;收藏&#x1f31f;&#x1f31f;关注&#x1f496;&#x1f496; 你的支持是对我最大的鼓励&#xff0c;我们一起努力吧!&#x1f603;&#x1f603; 管他什么深搜、回溯还是剪枝&#xff0c;画出决…...

celery-redbeat方案(动态定时任务、异步任务)

文章目录 为什么选择 RedBeat&#xff1f;方案坑事项记录 记一次工作上的问题 问题&#xff1a;项目上当前定时任务框架和服务端耦合&#xff0c;容易出现加载定时任务时间很长&#xff0c;影响后端服务启动&#xff0c;容易改动引发定时任务的问题。且能方便的动态的增加或删除…...

iis做的网站其他电脑能看吗/网站cms

由于分判商工程款及业主收入之明细都与标书清单之间有外键关联&#xff0c;EDM模型中会自动建立以下关系&#xff1a;SPaymentDetail <---> BillQuantity 外键&#xff1a;FK_SPaymentDetail_BillQuantityProjectIncomeDetail <---> BillQuantity 外键&#…...

jsp做网站能实现什么功能/百度官网电话

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 安全生产模拟考试一点通&#xff1a;高压电工考试是安全生产模拟考试一点通生成的&#xff0c;高压电工证模拟考试题库是根据高压电工最新版教材汇编出高压电工仿真模拟考试。2021年高压电工考试及高压电工作业考试题…...

建设小游戏网站空间类型选择/关键词搜索排名公司

写在最前 文章标题谈到了面向协议编程(下文简称 POP)&#xff0c;是因为前几天阅读了一篇讲 Swift 中 POP 的文章。本文会以此为出发点&#xff0c;聊聊相关的概念&#xff0c;比如接口、mixin、组合模式、多继承等&#xff0c;同时也会借助各种语言中的例子来阐述我的思想。 那…...

坑梓网站建设咨询/长沙网站制作主要公司

方法一&#xff1a;删除注册表选项&#xff0c;变为评估模式 1.windowR打开管理 2.输入regedit后回车&#xff0c;则就会打开注册表编辑器 3.里面有一个cacaheId然后删掉&#xff0c;果断的删掉&#xff0c;然后重新打开即可 方法二&#xff1a;删除动态库文件 4.找到Beyo…...

做装修的推广网站有那种/外贸推广网站

一、主从复制的工作原理 Mysql在Master与slave之间实现整个复制的过程由3个线程来完成的&#xff0c; 其中两个线程(SQL线程和IO线程)在 Slave端&#xff0c; 另外一个线程&#xff08;IO&#xff09;在Master端 要实现Mysql的复制必须首先打开Master端的binary log(也就是二进…...

做宣传网站/最佳bt磁力狗

1.在我们写APP的时候经常会遇到这种情况&#xff0c;点击一个按钮后&#xff0c;通过网络异步操作从后台获取信息&#xff0c;然后再展示到UI&#xff0c;例如 public class MyActivity extends BaseActivity {private void getUser(){LoadingDialog loadingDialognew LoadingD…...