No120.精选前端面试题,享受每天的挑战和学习
文章目录
- 浏览器强制缓存和协商缓存
- cookie,localStorage、sessionStorage
- js闭包,原型,原型链
- 箭头函数和普通函数的区别
- promise的状态扭转
浏览器强制缓存和协商缓存
浏览器缓存是浏览器用于提高网页加载速度的一种机制。浏览器缓存分为强制缓存和协商缓存。
- 强制缓存:浏览器在第一次请求资源时,会将该资源的缓存相关信息(如过期时间)保存起来。在下次请求该资源时,浏览器会先检查缓存相关信息,如果未过期,浏览器就直接从缓存中加载该资源,不需要再向服务器发送请求。常见的强制缓存策略有:Expires 和 Cache-Control。
Expires
:是HTTP/1.0
的标准,用于指定资源的过期时间,即到期后就需要重新请求服务器,这个时间是服务器的绝对时间,如:Expires: Wed, 21 Oct 2022 07:28:00 GMT。Cache-Control
:是 HTTP/1.1 的标准,用于对缓存进行更精细化的控制。常见的取值有:- public:表示响应可以被任何缓存(包括公共缓存和私有缓存)缓存。
- private:表示响应只能被客户端(浏览器)缓存,中间的代理服务器不能缓存该响应。
- no-cache:表示浏览器在使用缓存副本之前必须先确认其有效性。
- max-age:表示资源的有效期,单位为秒。
- 协商缓存:当强制缓存失效时,浏览器会发送一个请求到服务器,服务器通过比较请求头中的一些字段来判断资源是否发生了变化。若资源未发生变化,则服务器返回 304 Not Modified 响应,浏览器继续使用缓存。若资源已经发生变化,服务器返回最新的资源,并携带新的缓存相关信息,存入缓存中。常见的协商缓存策略有:Last-Modified 和 ETag。
Last-Modified
:是服务器响应的一个字段,表示资源的最后修改时间。当浏览器请求该资源时,会携带 If-Modified-Since 请求头,该头字段的值即是上次请求服务器返回的 Last-Modified 值。服务器接收到请求后,根据 If-Modified-Since 的值与资源的最后修改时间进行对比,如果时间一致,说明资源未发生变化,返回 304 Not Modified 响应。如果时间不一致,说明资源已经修改,返回最新的资源并更新 Last-Modified 值。ETag
:是服务器响应的一个字段,表示资源的唯一标识。当浏览器请求该资源时,会携带 If-None-Match 请求头,该头字段的值即是上次请求服务器返回的 ETag 值。服务器接收到请求后,根据 If-None-Match 的值与资源的 ETag 进行对比,如果一致,说明资源未发生变化,返回 304 Not Modified 响应。如果不一致,说明资源已经修改,返回最新的资源并更新 ETag 值。
通过强制缓存和协商缓存两种机制的配合使用,可以在一定程度上减少对服务器的请求,提高网页加载速度。
cookie,localStorage、sessionStorage
下面是对cookie、localStorage和sessionStorage使用的表格总结:
Cookie | localStorage | sessionStorage | |
---|---|---|---|
存储容量 | 4KB | 5MB | 5MB |
生命周期 | 可设置过期时间 | 永久存储 | 页面关闭时清除 |
存储位置 | 浏览器和服务器都能读取 | 仅浏览器能读取 | 仅浏览器能读取 |
是否跨域访问 | 取决于Cookie的设置 | 不允许跨域访问 | 不允许跨域访问 |
存储数据格式 | 仅能存储字符串 | 可以存储各种数据类型 | 可以存储各种数据类型 |
与服务器通信 | 每次请求都会带上cookie | 不会自动带上,需要手动设置 | 不会自动带上,需要手动设置 |
js闭包,原型,原型链
闭包、原型和原型链是 JavaScript 中重要的概念。
-
闭包(Closure):闭包是指有权访问另一个函数作用域中的变量的函数。简单来说,
闭包就是函数和声明该函数的词法环境的组合
。闭包能够记住并访问其声明时的作用域,即使在函数外部被调用也可以访问到。闭包的一个常见用途是创建私有变量,它可以通过闭包隐藏内部状态,只暴露一些公共接口。 -
原型(Prototype):在 JavaScript 中,每个对象都有一个原型。
原型是一个对象,其他对象可以通过它来继承属性和方法
。当你访问一个对象的属性或方法时,如果这个对象本身没有这个属性或方法,JavaScript 引擎会去它的原型上查找,如果原型上也没有,就会继续查找原型的原型,直到找到或者到达原型链的末尾。 -
原型链(Prototype Chain):原型链是由对象的原型组成的链式结构。
当一个对象在查找属性或方法时,如果自身没有,它会通过原型链向上查找,直到找到或者到达原型链的末尾(Object.prototype)
。原型链是 JavaScript 实现继承的机制之一,可以让对象共享原型的属性和方法。
这些概念相互关联并且在 JavaScript 中非常重要。深入了解它们将有助于更好地理解和使用 JavaScript。
箭头函数和普通函数的区别
箭头函数和普通函数在语法和功能方面有一些区别:
-
语法:箭头函数使用箭头(=>)来定义函数,而普通函数使用 function 关键字来定义函数。
-
this 绑定:箭头函数没有自己的 this 绑定,它会捕获所在上下文的 this 值,可以理解为箭头函数的 this 值是词法上下文的绑定。而普通函数的 this 值是在运行时动态绑定的。
-
arguments
对象:箭头函数没有自己的 arguments 对象,但它可以访问外部作用域中的 arguments 对象。普通函数可以直接访问自己的 arguments 对象。 -
构造函数:箭头函数不能用作构造函数,因为箭头函数没有自己的 this 值,无法使用 new 关键字来创建对象。而普通函数可以用作构造函数来创建对象。
-
返回值:箭头函数的返回值会直接作为函数的返回值,不需要使用 return 关键字。普通函数需要使用 return 关键字来指定返回值。
综上所述,箭头函数适用于一些简单的函数,尤其是需要更简洁的语法和避免 this 绑定问题的场景。而普通函数则更灵活,可以适应更多的场景,并支持更多的语法特性。
promise的状态扭转
Promise 的状态扭转包括三种状态:Pending(进行中)、Fulfilled(已成功)和Rejected(已失败)。
初始状态为 Pending(进行中),表示 Promise 的操作还未完成。
当 Promise 的操作成功完成时,状态会从 Pending(进行中)转变为 Fulfilled(已成功),并且会调用 Promise 的 resolve 函数。
当 Promise 的操作失败时,状态会从 Pending(进行中)转变为 Rejected(已失败),并且会调用 Promise 的 reject 函数。
一旦状态从 Pending(进行中)转变为 Fulfilled(已成功)或 Rejected(已失败),就不会再次发生状态转换。
在状态转换后,可以通过 then 方法来处理 Promise 的结果。如果状态为 Fulfilled(已成功),则会执行第一个参数传入的回调函数;如果状态为 Rejected(已失败),则会执行第二个参数传入的回调函数。
需要注意的是,Promise 的状态是不可逆的,一旦状态发生了改变,就无法再次改变。所以,Promise 的状态转换只会发生一次。
相关文章:
No120.精选前端面试题,享受每天的挑战和学习
文章目录 浏览器强制缓存和协商缓存cookie,localStorage、sessionStoragejs闭包,原型,原型链箭头函数和普通函数的区别promise的状态扭转 浏览器强制缓存和协商缓存 浏览器缓存是浏览器用于提高网页加载速度的一种机制。浏览器缓存分为强制缓…...
c# 访问sqlServer数据库时的连接字符串
//sql server 身份验证的场合, 连接字符串 private string ConnstrSqlServer "server服务器名称;uid登录名称;pwd登录密码;database数据库名称"; //windows 身份验证连接字符串 private string ConnstrWindows "server服务器名称;database数据库…...
排序算法概述
1.排序算法分类 **比较类算法排序:**通过比较来决定元素的时间复杂度的相对次序,由于其时间复杂度不能突破 O ( n l o g n ) O(nlogn) O(nlogn),因此也称为非线性时间比较类算法 **非比较类算法排序:**不通过比较来决定元素间的…...
ChatGPT在高等教育中的应用利弊探讨
人工智能在教育领域的应用日益广泛。2022年11月OpenAI开发的聊天机器人ChatGPT在全球范围内流传开来,其中用户数量最多的国家是美国(15.22%)。由于ChatGPT应用广泛,具有类似人类回答问题的能力,它正在成为许多学生和教育工作者的可信赖伙伴…...
Java之API详解之Runtime的详细解析
3.1 概述 Runtime表示Java中运行时对象,可以获取到程序运行时设计到的一些信息 3.2 常见方法 常见方法介绍 我们要学习的Object类中的常见方法如下所示: public static Runtime getRuntime() //当前系统的运行环境对象 public void exit(int statu…...
机器学习之softmax
Softmax是一个常用于多类别分类问题的激活函数和归一化方法。它将一个向量的原始分数(也称为 logits)转换为概率分布,使得每个类别的概率值在0到1之间,同时确保所有类别的概率之和等于1。Softmax函数的定义如下: 对于…...
npm script命令
1 串行/并行执行命令 //串行 npm-run-all text test npm run text && npm run test //并行改成& npm-run-all --parallel text test npm run text & npm run test2 传递参数 {"lint": "eslint js/*.js","lint:fix":…...
【力扣周赛】第360场周赛
【力扣周赛】第360场周赛 8015.距离原点最远的点题目描述解题思路 8022. 找出美丽数组的最小和题目描述解题思路 8015.距离原点最远的点 题目描述 描述:给你一个长度为 n 的字符串 moves ,该字符串仅由字符 ‘L’、‘R’ 和 ‘_’ 组成。字符串表示你在…...
php环境变量的配置步骤
要配置PHP的环境变量,以便在命令行中直接使用php命令,以下是一般的步骤: Windows 操作系统 下载和安装PHP:首先,你需要从PHP官方网站(https://www.php.net/downloads.php)下载适用于你的操作系…...
Kdtree
Kdtree kdtree 就是在 n 维空间对数据点进行二分;具体先确定一个根,然后小于在这个维度上的根的节点在左边,大于的在右边,再进行下一个维度的划分。直到维度结束,再重复,或者直到达到了结束条件࿱…...
算法leetcode|74. 搜索二维矩阵(rust重拳出击)
文章目录 74. 搜索二维矩阵:样例 1:样例 2:提示: 分析:题解:rust:go:c:python:java: 74. 搜索二维矩阵: 给你一个满足下述两条属性的…...
element浅尝辄止7:InfiniteScroll 无限滚动
滚动加载:滚动至底部时,加载更多数据。 1.如何使用? //在要实现滚动加载的列表上上添加v-infinite-scroll,并赋值相应的加载方法, //可实现滚动到底部时自动执行加载方法。<template><ul class"infinit…...
Day05-Vue基础
Day05-Vue基础 一、单向数据流 父子组件通信。会在父组件中定义好数据,将数据传递给子组件,可以使用这个数据 Vue中针对props这个属性提出了一个单向数据流的概念。 Vue针对props做了一些限制,可以接受值,使用这个值,规范中不要去直接修改这个值 目的是为了对数据流进…...
《机器学习在车险定价中的应用》实验报告
目录 一、实验题目 机器学习在车险定价中的应用 二、实验设置 1. 操作系统: 2. IDE: 3. python: 4. 库: 三、实验内容 实验前的猜想: 四、实验结果 1. 数据预处理及数据划分 独热编码处理结果(以…...
14. Docker中实现CI和CD
目录 1、前言 2、什么是CI/CD 3、部署Jenkins 3.1、下载Jenkins 3.2、启动Jenkins 3.3、访问Jenkins页面 4、Jenkins部署一个应用 5、Jenkins实现Docker应用的持续集成和部署 5.1、创建Dockerfile 5.2、集成Jenkins和Docker 6、小结 1、前言 持续集成(CI/CD)是一种…...
【多思路解决喝汽水问题】1瓶汽水1元,2个空瓶可以换一瓶汽水,给20元,可以喝多少汽水
题目内容 喝汽水问题 喝汽水,1瓶汽水1元,2个空瓶可以换一瓶汽水,给20元,可以喝多少汽水(编程实现)。 题目分析 数学思路分析 根据给出的问题和引用内容,我们可以得出答案。 首先ÿ…...
P1591 阶乘数码(Java高精度)
题目描述 求 n ! n! n! 中某个数码出现的次数。 输入格式 第一行为 t ( t ≤ 10 ) t(t \leq 10) t(t≤10),表示数据组数。接下来 t t t 行,每行一个正整数 n ( n ≤ 1000 ) n(n \leq 1000) n(n≤1000) 和数码 a a a。 输出格式 对于每组数据&a…...
Mybatis的动态SQL及关键属性和标识的区别(对SQL更灵活的使用)
( 虽然文章中有大多文本内容,想了解更深需要耐心看完,必定大有受益 ) 目录 一、动态SQL ( 1 ) 是什么 ( 2 ) 作用 ( 3 ) 优点 ( 4 ) 特殊标签 ( 5 ) 演示 二、#和$的区别 2.1 #使用 ( 1 ) #占位符语法 ( 2 ) #优点 2.…...
mysql下载
网址 MySQL :: Download MySQL Community Serverhttps://dev.mysql.com/downloads/mysql/ 2、选择MSI进行安装 3、这里我选择离线安装 4、这里我选择直接下载 5、等待下载安装即可...
聚合函数与窗口函数
聚合函数 回答一 聚合函数(Aggregate Functions)是SQL中的函数,用于对一组数据进行计算,并返回单个结果。聚合函数通常用于统计和汇总数据,包括计算总和、平均值、计数、最大值和最小值等。 以下是一些常见的聚合函…...
c语言实现堆
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、树1、树的概念2、树的相关概念3、树的表示 二、二叉树1、二叉树概念2、特殊的二叉树3、二叉树的性质4、二叉树的顺序结构5、二叉树的链式结构 三、堆(二叉树…...
ubuntu 如何将文件打包成tar.gz
要将文件打包成.tar.gz文件,可以使用以下命令: tar -czvf 文件名.tar.gz 文件路径 其中,-c表示创建新的归档文件,-z表示使用gzip进行压缩,-v表示显示详细的打包过程,-f表示指定归档文件的名称。 例如&am…...
前端优化页面加载速度的方法(持续更新)
提速方法方向 延迟脚本加载 使用 async 属性: 在这种方法中,脚本将在下载完成后立即执行,而不会阻塞其他页面资源的加载和渲染。这适用于那些不依赖于其他脚本和页面内容的脚本,例如分析脚本等。示例如下: html …...
利用SSL证书的SNI特性建立自己的爬虫ip服务器
今天我要和大家分享一个关于自建多域名HTTPS爬虫ip服务器的知识,让你的爬虫ip服务器更加强大!无论是用于数据抓取、反爬虫还是网络调试,自建一个支持多个域名的HTTPS爬虫ip服务器都是非常有价值的。本文将详细介绍如何利用SSL证书的SNI&#…...
HTML和CSS
HTML HTML(Hyper Text Markup Language):超文本语言 超文本:超越了文本的限制,比普通文本更强大。除了文字信息,还可以定义图片、音频、视频等内容。 标记语言:由标签构成的语言 HTML标签都是预定义好的。例如:使用&l…...
C#的IndexOf
在 C# 中,IndexOf 是一个字符串、数组或列表的方法,用于查找指定元素的第一个匹配项的索引。它返回一个整数值,表示匹配项在集合中的位置,如果未找到匹配项,则返回 -1。 IndexOf 方法有多个重载形式,可以根…...
深度学习2.神经网络、机器学习、人工智能
目录 深度学习、神经网络、机器学习、人工智能的关系 大白话解释深度学习 传统机器学习 VS 深度学习 深度学习的优缺点 4种典型的深度学习算法 卷积神经网络 – CNN 循环神经网络 – RNN 生成对抗网络 – GANs 深度强化学习 – RL 总结 深度学习 深度学习、神经网络…...
利用LLM模型微调的短课程;钉钉宣布开放智能化底座能力
🦉 AI新闻 🚀 钉钉宣布开放智能化底座能力AI PaaS,推动企业数智化转型发展 摘要:钉钉在生态大会上宣布开放智能化底座能力AI PaaS,与生态伙伴探寻企业服务的新发展道路。AI PaaS结合5G、云计算和人工智能技术的普及和…...
软件工程(七) UML之用例图详解
1、UML-4+1视图 UML-4+1视图将会与后面的架构4+1视图会一一对应上 视图往往出现在什么场景:我们看待一个事物,我们觉得它很复杂,难以搞清楚,为了化繁为简,我们会从一个侧面去看,这就是视图。而4+1视图就是分不同角度去看事物。 逻辑视图(logical view) 一般使用类与对…...
pd.cut()函数--Pandas
1. 函数功能 将连续性数值进行离散化处理:如对年龄、消费金额等进行分组 2. 函数语法 pandas.cut(x, bins, rightTrue, labelsNone, retbinsFalse, precision3, include_lowestFalse, duplicatesraise, orderedTrue)3. 函数参数 参数含义x要离散分箱操作的数组&…...
从哪些方面做好网站的seo/西安疫情最新数据
问题mysqlbinlog 是将 binlog 解析成可读可执行的 SQL 的重要工具。但解析体积较大的 binlog 时,如何查看 mysqlbinlog 的执行进度就变成了一个问题,mysqlbinlog 并未提供 –progress 这样的参数。那要怎么查看 mysqlbinlog 的解析进度?实验我…...
大连中山网站建设/申请百度收录网址
空扫描Idle Scanning空扫描Idle Scanning是一种借助第三方实施的端口扫描技术,可以很好的隐蔽扫描主机本身。它的实现基于以下两个TCP工作机制。(1)在TCP三次握手阶段,目标主机接收到发起方的SYN的TCP包,会返回SYNACK的…...
乐清建设网站哪家好/搜索引擎优化公司
开发环境:InteliJ IDEA COMMUNITY 操作系统 :macOS Mojave 注册中心:为了便于本地开发,本教程使用 EDAS 提供的轻量级配置中心,轻量级配置中心包含了 EDAS 服务注册中心的基本功能。 1. 注册中心安装与配置 轻量级配置…...
办公设备网站推广怎么做/网络游戏推广平台
导入tensorflow模块失败, with python2 pip show tensorflow 检查是否安装 python test.py 测试 with python3 pip3 show tensorflow 检查是否安装 python3 test.py 测试 test.py import tensorflow as tf import numpy as npc np.array([[3.,4], [5.,6], …...
阿里云做网站/软文标题写作技巧
一道很好的字典树题目,用每组第二个单词构造字典树,最后一个节点存第一个单词,其他节点存ch,接着对每个输入进行查询 View Code 1 #include <iostream>2 #include <cstring>3 #include <cstdio>4 #define M 26…...
wordpress 4.4.2 中文/网站关键词排名外包
视频简介:该视频介绍emWin底层驱动接口。 源视频包下载地址:链接:http://pan.baidu.com/s/1nvPpC2d 密码:cbb7银杏科技优酷视频发布区:http://i.youku.com/gingko8...