【前端面试3+1】04浏览器存储、flex布局属性和常用指令、 promise和async await区别、【验证回文串】

news2024/12/23 8:46:33

一、浏览器存储

1.1类型:

浏览器数据存储的方式有以下几种:

  • Cookie:小型文本文件,存储在用户计算机上,可以通过浏览器传输到服务器。
  • Web Storage:包括LocalStorage和SessionStorage,可以在浏览器端本地存储数据。
  • IndexedDB:浏览器端的数据库,可以存储大量结构化数据。
  • Cache API:用于存储缓存数据,可以提高网站性能。

1.2.这4种的区别;

CookieWeb StorageIndexedDBCache API
存储位置存储在客户端,每次请求都会将Cookie发送给服务器存储在客户端,不会随每次请求发送给服务器存储在客户端,不会随每次请求发送给服务器存储在客户端,可以缓存网络请求结果、页面资源
存储容量通常限制在4KB5MB左右相对较大,可以存储大量数据根据浏览器设置和硬件限制
生命周期可以设置过期时间,可以长期存储
  • LocalStorage数据永久保存,除非用户清除浏览器数据;
  • SessionStorage数据在会话结束时被清除(关闭标签页或浏览器)
数据永久保存,除非用户清除浏览器数据根据缓存策略设置,可以是临时的或持久
使用场景适合存储少量数据,如用户认证信息、用户偏好设置等适合存储大量结构化数据,如离线应用、复杂数据操作等适合存储大量结构化数据,如离线应用、复杂数据操作等适合提高网站性能,减少网络请求次数,加快页面加载速度

1.3 LocalStorage和SessionStorage的区别

(1)作用域
  • LocalStorage:数据存储在浏览器本地,除非主动清除,否则数据永久保存,即使关闭浏览器也不会丢失
  • SessionStorage:数据也存储在浏览器本地,但在当前会话结束(关闭标签页或浏览器)时会被清除,数据不会长期保留
(2)数据共享
  • LocalStorage:存储的数据在同一浏览器的同一域下共享,即使打开多个相同域名的标签页也可以共享数据。
  • SessionStorage:存储的数据在同一浏览器的同一标签页下共享,不同标签页之间的数据不共享。。
(3)生命周期
  • LocalStorage:数据永久保存,除非主动清除。
  • SessionStorage:数据在当前会话结束时被清除。
(4)使用场景
  • LocalStorage:适合存储持久性数据,如用户偏好设置、本地缓存等。
  • SessionStorage:适合存储会话期间需要使用的临时数据,如表单数据、页面状态等。

 二、flex布局、属性和常用指令

1.定义:

        Flex布局是一种用于设计和排列元素的现代CSS布局方式,它使用弹性盒子模型来实现灵活的布局。

2.常用的Flex布局属性:

  • 容器属性
    • display: flex;:定义一个弹性容器。
    • flex-direction: row | row-reverse | column | column-reverse;:设置主轴的方向。
    • justify-content: flex-start | flex-end | center | space-between | space-around | space-evenly;:沿主轴对齐方式。
    • align-items: flex-start | flex-end | center | baseline | stretch;:沿交叉轴对齐方式。
    • flex-wrap: nowrap | wrap | wrap-reverse;:定义是否换行。
  • 项目属性
    • flex-grow: <number>;:定义项目的放大比例。
    • flex-shrink: <number>;:定义项目的缩小比例。
    • flex-basis: <length> | auto;:定义项目的初始大小。
    • flex: <flex-grow> <flex-shrink> <flex-basis>;:简写形式。
    • align-self: auto | flex-start | flex-end | center | baseline | stretch;:单独设置项目在交叉轴上的对齐方式。

3.常用指令:

  • justify-content:定义了项目在主轴上的对齐方式。
  • align-items:定义了项目在交叉轴上的对齐方式。
  • flex:用于设置项目的放大比例、缩小比例和初始大小。
  • flex-direction:定义了主轴的方向。
  • flex-wrap:定义了项目在主轴上是否换行。

4.flex=1 的含义:

        在Flex布局中,设置`flex: 1;`的含义是将一个弹性项目的伸缩因子(flex-grow)设置为1,这意味着该项目会占据剩余空间的所有可用空间

        简单来说,设置`flex: 1;`可以让一个项目占据弹性容器中剩余空间的所有可用空间,使得布局更加灵活和自适应。这在构建响应式布局或者需要弹性伸缩的布局中非常有用。

三、 promise和async await区别

Promiseasync/await
语法使用 .then() 和 .catch() 方法来处理异步操作的结果和错误使用 async 和 await 关键字来处理异步操作,使得代码看起来更像同步代码。
特点Promise 是一种基于回调的异步编程解决方案,通过链式调用 .then() 方法可以处理多个异步操作。async 函数返回一个 Promise,await 关键字可以暂停 async 函数的执行,等待 Promise 解决。
优点相对于回调函数,Promise 更容易管理和组织异步代码,避免了回调地狱。代码结构清晰,易于阅读和维护,避免了回调地狱。
缺点可能会出现回调地狱,需要多次嵌套 Promise。不能在顶层作用域使用 await,需要在 async 函数内部使用。

总结

  • Promise 是一种基于回调的异步编程解决方案,适合处理多个异步操作。
  • async/await 是基于 Promise 的语法糖,使得异步代码更加清晰易读,适合处理单个异步操作或者多个依赖的异步操作。

四、【算法】验证回文串 

1.题目:

        如果在将所有大写字符转换为小写字符、并移除所有非字母数字字符之后,短语正着读和反着读都一样。则可以认为该短语是一个 回文串 。

字母和数字都属于字母数字字符。

给你一个字符串 s,如果它是 回文串 ,返回 true ;否则,返回 false 

2.解题:

利用双指针,通过双指针的方式同时从字符串的头部和尾部向中间移动,逐个比较字符是否相同。

bool isAlphanumeric(char c) {
    return isalnum(c);
}
bool isPalindrome(char* s) {
   int left = 0;
    int right = strlen(s) - 1;
    
    while (left < right) {
        while (left < right && !isAlphanumeric(s[left])) {
            left++;
        }
        while (left < right && !isAlphanumeric(s[right])) {
            right--;
        }
        
        if (tolower(s[left]) != tolower(s[right])) {
            return false; // 不是回文串
        }
        
        left++;
        right--;
    }
    
    return true; // 是回文串
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1565027.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【JavaEE初阶系列】——一万字带你了解 JUC常见类 以及 线程安全集合类(哈希表)

目录 &#x1f6a9;JUC(java.util.concurrent) 的常见类 &#x1f388;Callable 接口 &#x1f308;理解 Callable(相关面试题) &#x1f308;理解 FutureTask &#x1f4dd;线程创建方式 &#x1f388; ReentrantLock可重入锁 &#x1f308;ReentrantLock 优势&#x…

【Python BUG】ModuleNotFoundError: No module named ‘streamlit.cli‘

问题 streamlit做大模型前端demo&#xff0c;安装后不好使。 解决方案 参考&#xff1a; https://zhuanlan.zhihu.com/p/656164361 找到下面文件&#xff1a; 替换、修改内容&#xff1a; # from streamlit.cli import main from streamlit.web.cli import main原来是上边…

JavaScript_与html结合方式

JavaScript_语法 ECMAScript&#xff1a;客户端脚本语言的标准 1.基本语法 1.1 与html结合方式&#xff08;2种&#xff09; 1. 内部JS 定义<script>,标签体内容就是js代码 2. 外部JS 定义<script>,通过src属性引入外部的 js文件 注意&#xff1a; 1.<script>…

【DPU微知识】NVIDIA-BlueFiled DPU概念之:BFB是什么?

BFB是BlueField Boot Stream的缩写&#xff0c;由Bootloader、Linux OS、Romfs组成。本质&#xff1a;bootload、系统、文件系统。&#xff08;其实就是DPU的上装类比标准host的grub、linux、文件系统&#xff0c;类似做Linux移植时候构建的最小文件系统的三件套差不多&#xf…

3D模型格式转换工具HOOPS Exchange如何将3D文件加载到PRC数据结构中?

HOOPS Exchange是一款高效的数据访问工具&#xff0c;专为开发人员设计&#xff0c;用于在不同的CAD&#xff08;计算机辅助设计&#xff09;系统之间进行高保真的数据转换和交换。由Tech Soft 3D公司开发&#xff0c;它支持广泛的CAD文件格式&#xff0c;包括但不限于AutoCAD的…

uniapp项目-懂你找图

文章目录 项目介绍项目搭建1.项目创建 2.新增tabbar3引入字体图标 uni-ui介绍使用 uni-api介绍 首页模块功能分析搭建子页面分段器介绍 封装自己的异步请求为什么要封装封装的思路 编写首页-推荐页面分页功能 专辑列表获取专辑详情数据 项目介绍 微信小程序&#xff0c;提供图…

苹果开发者账号注册后生成开发证书和发布证书的流程解析

转载&#xff1a;注册苹果开发者账号的方法 在2020年以前&#xff0c;注册苹果开发者账号后&#xff0c;就可以生成证书。 但2020年后&#xff0c;因为注册苹果开发者账号需要使用Apple Developer app注册开发者账号&#xff0c;所以需要缴费才能创建ios证书了。 所以新政策出…

【机器学习】机器学习创建算法第3篇:K-近邻算法,学习目标【附代码文档】

机器学习&#xff08;算法篇&#xff09;完整教程&#xff08;附代码资料&#xff09;主要内容讲述&#xff1a;机器学习算法课程定位、目标&#xff0c;K-近邻算法定位,目标,学习目标,1 什么是K-近邻算法,1 Scikit-learn工具介绍,2 K-近邻算法API。K-近邻算法&#xff0c;1.4 …

EfficientVMamba实战:使用 EfficientVMamba实现图像分类任务(二)

文章目录 训练部分导入项目使用的库设置随机因子设置全局参数图像预处理与增强读取数据设置Loss设置模型设置优化器和学习率调整策略设置混合精度&#xff0c;DP多卡&#xff0c;EMA定义训练和验证函数训练函数验证函数调用训练和验证方法 运行以及结果查看测试完整的代码 在上…

搜索二维矩阵 II - LeetCode 热题 21

大家好&#xff01;我是曾续缘&#x1f497; 今天是《LeetCode 热题 100》系列 发车第 21 天 矩阵第 4 题 ❤️点赞 &#x1f44d; 收藏 ⭐再看&#xff0c;养成习惯 搜索二维矩阵 II 编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target 。该矩阵具有以下特性&…

PHP在线加密系统网站源码

源码介绍 PHP在线加密系统网站源码&#xff0c;这个是sg的加密,免费可用(目前)并不会收费 源码说明&#xff1a;下载直接上传即可 下载地址 蓝奏云下载&#xff1a;https://wfr.lanzout.com/i6c331togiji

关于磁盘算法

性能瓶颈&#xff1a;IO–>IO调度–>IO调度算法–>1楼到顶楼&#xff0c;再从零楼下来&#xff0c;效率高–>IO调度目标–>IO算法–>电梯算法–linux6和Linux7算法不一样–>linux6 单队列 Linux7 多队列 inux6: 试用于不同的环境和介质。 noop 适合闪存&…

jmeter性能压测

jvm指令 jstat -gcutil -h5 -t 1 3s 发压端的tcp这么达到1000TPS jmeter的jvm的设置

PW1503限流芯片:可达3A限流,保障USB电源管理安全高效

在电源管理领域&#xff0c;开关的性能直接关系到设备的稳定性和安全性。今天&#xff0c;我们将详细解析一款备受关注的超低RDS&#xff08;ON&#xff09;开关——PW1503。它不仅具有可编程的电流限制功能&#xff0c;还集成了多项保护机制&#xff0c;为各类电子设备提供了高…

springboot之MybatisPlus

文章目录 一、ORM二、mybatis实际操作三、mybatis-plus 一、ORM 简单来说ORM就是一个能够帮我们把java中Bean类映射到数据库中。 使用mybatis-plus。 配置架包 <!-- MyBatisPlus依赖 --><dependency><groupId>com.baomidou</groupId><art…

谷粒商城实战(008 缓存)

Java项目《谷粒商城》架构师级Java项目实战&#xff0c;对标阿里P6-P7&#xff0c;全网最强 总时长 104:45:00 共408P 此文章包含第151p-第p157的内容 简介 数据库承担落盘&#xff08;持久化&#xff09;工作 拿map做缓存 这种是本地缓存&#xff0c;会有一些问题 分布…

注解——自定义注解、元注解、开发Junite框架

官方注解 自定义的注解 元注解 指的是&#xff1a;修饰注解的注解 常用的两个元注解——Target\ Retention 注解的解析 应用场景&#xff1a;开发Junit框架

KH-IPEX-K501-29

KH-IPEX-K501-29品牌: kinghelm(金航标)封装: SMD 描述: 1代

Linux安装Weblogic保姆级教程

文章目录 前言一、Weblogic安装包下载二、安装JDK三、Weblogic安装1.创建Linux用户2.创建weblogic的安装目录3.上传weblogic的安装包4.解压缩5.修改 /opt/weblogic 目录的所有权6.创建 oraInst.loc 文件7.创建 wls.rsp 响应文件8.切换用户9.静默安装weblogic10.切换到root用户1…

【闲聊】-网页划词翻译插件

英文之痛 作为程序猿&#xff0c;常常需要接触外文网站&#xff0c;以前很痛苦&#xff0c;现在大模型时代有很多智能工具可以直接翻译&#xff0c;翻译的虽然越来越好&#xff0c;但是还是不如直接看英文能理解本义&#xff0c;相信我&#xff0c;看翻译的理解和看原文的理解…