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

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS MySQL,高可用系列 2核4GB
简介: No106.精选前端面试题,享受每天的挑战和学习

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

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
26天前
|
存储 XML 移动开发
前端大厂面试真题
前端大厂面试真题
|
9天前
|
网络协议 算法 数据库
|
27天前
|
前端开发 Java 编译器
【前端学java】如何从前端视角快速学习Maven
【8月更文挑战第12天】如何从前端视角快速学习Maven
39 2
【前端学java】如何从前端视角快速学习Maven
|
28天前
|
前端开发 JavaScript API
前端框架Vue------>第二天学习(1)插槽
这篇文章介绍了Vue框架中插槽(slot)的概念和用法,以及如何在组件中使用自定义事件进行父子组件间的通信。
前端框架Vue------>第二天学习(1)插槽
|
14天前
|
前端开发 算法 网络协议
如何学习计算机基础知识,打好前端和网络安全的基础
如何学习计算机基础知识,打好前端和网络安全的基础
28 4
|
22天前
|
存储 前端开发 JavaScript
44 个 React 前端面试问题
【8月更文挑战第18天】
23 2
|
22天前
|
存储 JavaScript 前端开发
2022年前端js面试题
2022年前端js面试题
19 0
|
24天前
|
存储 前端开发 JavaScript
44 个 React 前端面试问题
44 个 React 前端面试问题
|
27天前
|
前端开发 JavaScript
前端网站学习大全
这篇文章提供了前端网站开发学习的资源大全,涵盖了HTML常用标签和CSS常用样式,以及如何使用`<meta>`标签提供页面元信息和`lang`属性定义内容语言等基础知识。
前端网站学习大全
|
28天前
|
前端开发 JavaScript
前端框架Vue------>第三天学习(1)
这篇文章介绍了Vue框架的组件基础和计算属性的概念,通过示例代码展示了如何定义可复用的Vue组件和使用计算属性来声明性地描述依赖其他值的数据。