No106.精选前端面试题,享受每天的挑战和学习

news2024/11/19 15:10:30

在这里插入图片描述

今日份摘抄:本事不在自身都是虚的

文章目录

    • MySQL的ACID特性分别是怎么实现的?
      • 1. 原子性 (Atomicity)
      • 2. 一致性 (Consistency)
      • 3. 隔离性 (Isolation)
      • 4. 持久性 (Durability)
    • OSI七层模型
      • 1. 物理层(Physical Layer)
      • 2. 数据链路层(Data Link Layer)
      • 3. 网络层(Network Layer)
      • 4. 传输层(Transport Layer)
      • 5. 会话层(Session Layer)
      • 6. 表示层(Presentation Layer)
      • 7. 应用层(Application Layer)
    • 说一说cookie sessionStorage localStorage 区别?
      • 1. 存储容量
      • 2. 存储位置
      • 3. 生命周期
      • 4. 数据共享
      • 5. 可访问性
    • 说一说 Linux 如何管理内存
      • 1. 虚拟内存管理
      • 2. 内存分页
      • 3. 内存分配与释放
      • 4. 页面置换与缓存
      • 5. 内存回收与压缩
      • 6. 页面合并与充分利用
    • 附录:「简历必备」前后端实战项目(推荐:⭐️⭐️⭐️⭐️⭐️)

📈「作者简介」:前端开发工程师 | 蓝桥云课签约作者 | 技术日更博主 | 已过四六级
📚「个人主页」:阿珊和她的猫
🕐「简历必备」前后端实战项目(推荐:⭐️⭐️⭐️⭐️⭐️)

  • Vue.js 和 Egg.js 开发企业级健康管理项目
  • 带你从入门到实战全面掌握 uni-app

MySQL的ACID特性分别是怎么实现的?

MySQL的ACID特性是通过以下方式实现的:

1. 原子性 (Atomicity)

确保每个事务要么完全执行,要么完全回滚。MySQL使用事务日志 (transaction log) 来记录事务的所有操作,当事务提交时,将操作永久写入磁盘,确保原子性。

2. 一致性 (Consistency)

确保事务在开始和结束时数据库处于一致状态。MySQL使用锁机制来防止并发操作导致数据不一致,同时MySQL提供了各种锁类型(如行级锁、表级锁)来满足不同的并发控制需求。

3. 隔离性 (Isolation)

确保并发执行的事务相互隔离,每个事务对其他事务的操作是不可见的。MySQL通过使用锁和多版本并发控制 (MVCC) 来实现隔离性。MVCC使用了快照(snapshot)来提供事务的一致视图,以避免锁机制的串行化开销。

4. 持久性 (Durability)

确保一旦事务提交,其变更将永久保存在数据库中,即使发生系统故障或系统重启。MySQL通过将事务日志写入磁盘,并使用写前日志 (write-ahead logging) 策略来确保持久性。写前日志将事务日志先写入一个日志文件,然后再将操作应用到数据库中。

这些机制的组合确保了MySQL的ACID特性,从而提供了可靠的事务支持和数据一致性。

OSI七层模型

OSI(Open Systems Interconnection)七层模型是网络通信中常用的一种参考模型,用于将网络通信过程分为不同的层级,以便于理解、设计和实现网络协议和技术。以下是OSI七层模型的各层及其功能:

1. 物理层(Physical Layer)

  • 负责传输原始的比特流,通过物理介质传输数据。
  • 定义电器、光学和机械规范。

2. 数据链路层(Data Link Layer)

  • 将原始的比特流组织成数据帧。
  • 提供数据传输的可靠性,通过帧检测和纠错技术保证数据的完整性。
  • 管理物理地址(MAC地址)。

3. 网络层(Network Layer)

  • 负责为数据包选择合适的路径和转发,实现网络互联和路由。
  • 处理 IP 地址、IP 协议和路由选择等。

4. 传输层(Transport Layer)

  • 建立、管理和终止端到端的连接,实现可靠的数据传输。
  • 提供面向连接或无连接的服务,传送协议通常为 TCPUDP

5. 会话层(Session Layer)

  • 管理和协调两个节点之间的会话。
  • 实现会话建立、维护和结束的功能。

6. 表示层(Presentation Layer)

  • 处理数据的格式和表示,确保不同系统的数据能够互相理解。
  • 实现数据的加解密、压缩和格式转换等功能。

7. 应用层(Application Layer)

  • 提供网络应用程序与用户之间的接口。
  • 提供各种应用服务,如电子邮件、文件传输和远程访问。

每个层级负责不同的功能,通过在各层之间定义清晰的接口和协议,实现了网络通信的标准化和互操作性。这种分层结构在网络设计、故障排除和性能优化等方面提供了便利。

说一说cookie sessionStorage localStorage 区别?

Cookie、sessionStorage和localStorage是Web开发中常用的数据存储方式,它们有以下区别:

1. 存储容量

  • Cookie:每个域名下的Cookie总容量有限,通常为4KB左右。每个Cookie的存储量也被限制在几KB内。
  • sessionStorage和localStorage:每个域名下的sessionStorage和localStorage存储容量通常为5MB左右。

2. 存储位置

  • Cookie:存储在客户端的浏览器中,并在每次HTTP请求时通过Cookie头部发送到服务器
  • sessionStorage和localStorage:也存储在客户端的浏览器中,但不会在每次请求时发送给服务器。

3. 生命周期

  • Cookie:可以设置过期时间,可以是会话级别的(当浏览器关闭时失效)或持久性的(在到达过期时间之前持续存在)
  • sessionStorage:仅在当前会话期间有效。当浏览器窗口关闭后,数据将被清除。
  • localStorage:在浏览器关闭后仍然存在,可以长期保存

4. 数据共享

  • Cookie:相同域名下的所有页面共享Cookie数据,可以在不同页面之间进行传递。
  • sessionStorage和localStorage:各个页面独立使用,数据不会自动共享。

5. 可访问性

  • Cookie:可以在服务器和客户端之间共享数据,服务器可以通过设置响应头部将Cookie发送给客户端。
  • sessionStorage和localStorage:只能在客户端使用,并且仅在浏览器的JavaScript上下文中访问。

根据实际需求,选择适当的存储方式能够满足不同的数据存储需求。如果需要在客户端和服务器之间共享数据,使用Cookie是一个不错的选择。如果只需要在同一会话期间或在简单的页面间共享数据,可以使用sessionStorage。而localStorage适合长期保存数据,不需要每次会话期间都重新设置的情况。

说一说 Linux 如何管理内存

Linux操作系统使用了各种内存管理技术来有效地管理系统内存,包括以下几个方面:

1. 虚拟内存管理

Linux使用虚拟内存技术将物理内存与进程的虚拟地址空间进行映射,让每个进程拥有独立的地址空间。这允许每个进程使用比实际可用物理内存更大的虚拟地址空间。

2. 内存分页

Linux将进程的虚拟地址空间划分为页面,以固定大小的页面框架(通常为4 KB)的形式存储,这样可以更方便地管理内存。

3. 内存分配与释放

Linux内核通过管理内存分配器来为进程提供所需的内存空间。常见的内存分配器包括SLAB分配器、SLUB分配器和SLOB分配器。当进程不再需要某些内存时,通过释放内存回收被占用的页面。

4. 页面置换与缓存

当物理内存不足时,Linux通过页面置换(Page swapping)将不常用的页面从内存中换出到磁盘的交换分区(swap partition)中,以释放出更多的物理内存给当前活跃的进程。同时,Linux还利用缓存机制将磁盘上的文件数据缓存在内存中,以提高文件访问的速度。

5. 内存回收与压缩

当系统内存紧张时,Linux会触发内存回收机制,通过回收未使用的页面来释放内存。此外,一些版本的Linux内核还提供了内存压缩(Memory Compression)功能,将不经常使用但仍保留在内存中的页面进行压缩,以节约内存空间。

6. 页面合并与充分利用

Linux使用Transparent Huge Pages(THP)技术将连续的小页面合并成大页面,减少内存使用的开销。此外,Linux还使用内存回收算法来尽可能充分地利用内存。常见的回收算法包括LRU(Least Recently Used)算法和LFU(Least Frequently Used)算法。

通过这些内存管理技术,Linux能够高效地管理系统内存,实现进程的虚拟内存、内存分配与释放、页面置换与缓存等功能,以提升系统的性能和资源利用率。

附录:「简历必备」前后端实战项目(推荐:⭐️⭐️⭐️⭐️⭐️)

Vue.js 和 Egg.js 开发企业级健康管理项目
带你从入门到实战全面掌握 uni-app

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

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

相关文章

Java-简单认识类和对象

一、初步认识面向对象 1.1 什么是面向对象 Java是一门纯面向对象的语言(Object Oriented Program,简称OOP),在面向对象的世界里,一切皆为对象。面向对象是解决问题的一种思想,主要依靠对象之间的交互完成一件事情。用面向对象的思…

map,set的封装(基于改造红黑树)

目录 引言 1.迭代器 2.map的[]重载 3.KeyOfValue模板参数 4.整体代码展示 //改造后的红黑树代码 #include <iostream> using namespace std;enum Colour {RED 0,BLACK, };//为了实现map与set封装使用同一个模板红黑树&#xff0c;前者的value是pair&#xff0c;后者…

数学分析:外微分

先回顾下微分的概念&#xff0c;首先我们找到一个道路x&#xff0c;它是关于时间t的函数&#xff0c;然后我们可以得到一个速度&#xff0c;也就是切向量&#xff0c;所有道路的切向量组成了切空间。如果从泛函角度来理解&#xff0c;它应该是一个求偏导的基。是一个向量。而微…

Python语法(二、内置函数)

数学计算库 Python ​math ​模块提供了许多对浮点数的数学运算函数。 Python ​cmath ​模块包含了一些用于复数运算的函数。 import math 内置函数 关键字 自定义函数 Python函数的定义。定义函数需要用def 关键字实现&#xff0c;具体的语法格式如下&#xff1a; def 函…

求二维离散点集的凸包点

1 算法思路 这类求解最外围的点集问题,我们称之为凸包问题,光光是⽤⾁眼去观察的话,这种问题我们很快就能得出答案,并且能马上说出哪⼏个点 是解,但是如果让你敲代码,去解决这类的问题,可能很多⼈会不知道如何去下⼿。 在讲解凸包这类问题的解法前,我们⾸先要先讲下向…

#P1000. [NOIP2008普及组] 立体图

题目描述 小渊是个聪明的孩子&#xff0c;他经常会给周围的小朋友们讲些自己认为有趣的内容。最近&#xff0c;他准备给小朋友们讲解立体图&#xff0c;请你帮他画出立体图。 小渊有一块面积为 m \times nmn 的矩形区域&#xff0c;上面有 m \times nmn 个边长为 11 的格子&a…

Linux环境安装MySQL(详细教程)

1、下载MySQL MySQL官网&#xff1a;MySQLhttps://www.mysql.com/ 下载社区版&#xff08;免费&#xff0c;但不提供技术支持&#xff09; 简单说明一下rpm和tar包的区别&#xff1a; tar 只是一种压缩文件格式&#xff0c;所以&#xff0c;它只是把文件压缩打包 rpm&#xf…

HTML+CSS前端 简易用户登录界面

Day1 刚学了一些html和css的简单语法&#xff0c;尝试写一个非常简易的静态用户登录界面。 login_simple.html <!DOCTYPE html> <html lang"en"><head><meta name"viewport" content"widthdevice-width,initial-scale1.0"…

C++复刻:[流光按钮]+[悬浮波纹按钮]

目录 参考效果实现main.cppdialog.hdialog.cppflowingRayButton.h 流动光线按钮flowingRayButton.cpp 流动光线按钮hoveringRippleButton.h 悬浮波纹按钮hoveringRippleButton.cpp 悬浮波纹按钮模糊知识点 源码 参考 GitHub地址 B站主页 效果 实现 main.cpp #include "…

windows下配置vue开发环境

安装nodejs&#xff0c;配置npm 1.下载安装包&#xff1a;下载地址&#xff1a;https://nodejs.org/en/download 2.安装node&#xff1a;下载完成后进行安装&#xff0c;记住安装的文件夹。本人安装路径为 D:\Program Files\nodejs 3.配置环境变量&#xff1a; ①安装完成后…

高斯滤波和高通滤波

图像在频域里面&#xff0c;频率低的地方说明它是比较平滑的&#xff0c;因为平滑的地方灰度值变化比较小&#xff0c;而频率高的地方通常是边缘或者噪声&#xff0c;因为这些地方往往是灰度值突变的 所谓高通滤波就是保留频率比较高的部分&#xff0c;即突出边缘&#xff1b;…

Node.js介绍;浏览器和Node.j架构区别;Node的安装与管理;JS代码执行方式;Node的输入与输出;全局对象;

目录 1_Node.js介绍1.1_概念1.2_浏览器和Node.j架构区别1.3_Node.js应用场景 2_Node的安装与管理2.1_安装2.2_Node的版本工具2.3_版本管理工具&#xff1a;n 3_JavaScript代码执行4_Node的输入与输出4.1_REPL4.2_Node程序传递参数4.3_Node的输出 5_全局对象5.1_常见的全局对象5…

ClickHouse(六):Clickhouse数据类型-1

进入正文前&#xff0c;感谢宝子们订阅专题、点赞、评论、收藏&#xff01;关注IT贫道&#xff0c;获取高质量博客内容&#xff01; &#x1f3e1;个人主页&#xff1a;含各种IT体系技术&#xff0c;IT贫道_Apache Doris,Kerberos安全认证,大数据OLAP体系技术栈-CSDN博客 &…

一个类似Office用户界面的WPF库

博主介绍&#xff1a; &#x1f308;一个10年开发经验.Net老程序员&#xff0c;微软MVP、博客专家、CSDN/阿里云 .Net领域优质创作者&#xff0c;专注于.Net领域知识、开源项目分享&#xff01;&#x1f308; &#x1f6d5;文末获取&#xff0c;加入交流群&#x1f6d5; &#…

bitset优化例题

1. bitset 优化背包 https://loj.ac/p/515 题意&#xff1a; 给 n 个 < n 的数&#xff0c;每个数有取值范围 a[ i ] - b[ i ]&#xff0c;令 x 为 n 个数的平方和&#xff0c;求能构成的 x 的个数 样例&#xff1a; 5 1 2 2 3 3 4 4 5 5 6 26 思路&#xff1a; 背包d…

VUE之VueRouter页面跳转

参考资料&#xff1a; 参考视频 参考demo及视频资料 VUE之基本部署及VScode常用插件 VUE之基本组成和使用 VUE之Bootstrap和Element-UI的使用 VUE之axios使用&#xff0c;跨域问题&#xff0c;拦截器添加Token Vue Router官网 Vue Router说明&#xff1a; 说明&#xf…

SpringBoot接手JSP项目--【JSB项目实战】

SpringBoot系列文章目录 SpringBoot知识范围-学习步骤【JSB系列之000】 文章目录 SpringBoot系列文章目录[TOC](文章目录) SpringBoot技术很多很多工作之初&#xff0c;面临JSP的老项目我要怎么办环境及工具&#xff1a;项目里可能要用到的技术JSPjstl其它的必要知识 上代码WE…

数据结构:第六章 图

文章目录 一、图的基本概念1.1定义1.2有向图、无向图1.3顶点的度、入度、出度1.4顶点-顶点关系的描述1.5子图和生成子图1.6连通分量1.6强连通分量1.7生成树1.8生成森林1.9边的权、带权图/网1.10几种特殊的图1.11小结 二、图的存储及基本操作2.1邻接矩阵法2.1.1邻接矩阵存储不带…

29_互联网(The Internet)(IP数据包;UDP;TCP;DNS;OSI)

上篇介绍了计算机网络的基础知识&#xff0c;也提到互联网&#xff08;The Internet&#xff09;&#xff0c;本篇将会详细介绍互联网&#xff08;The Internet&#xff09;。 文章目录 1. 互联网&#xff08;The Internet&#xff09;组成及数据包传输过程2. IP 数据包的不足3…

【Spring Boot 源码学习】走近 AutoConfigurationImportSelector

AutoConfigurationImportSelector 源码解析 引言主要内容1. ImportSelector 接口2. DeferredImportSelector 接口3. AutoConfigurationImportSelector 功能概述 总结 引言 上篇博文我们了解了 EnableAutoConfiguration 注解&#xff0c;其中真正实现自动配置功能的核心实现者 …