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

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
日志服务 SLS,月写入数据量 50GB 1个月
简介: 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
相关文章
|
1月前
|
JavaScript 前端开发 程序员
前端学习笔记——node.js
前端学习笔记——node.js
43 0
|
16天前
|
前端开发 开发者 C++
独家揭秘:前端大牛们如何高效学习新技术,保持竞争力!
【10月更文挑战第31天】前端技术飞速发展,如何高效学习新技术成为关键。本文通过对比普通开发者与大牛们的策略,揭示了高效学习的秘诀:明确目标、主动探索、系统资源、实践应用和持续学习。通过这些方法,大牛们能更好地掌握新技术,保持竞争力。示例代码展示了如何通过实践加深理解。
34 4
|
1月前
|
算法 前端开发 Java
数据结构与算法学习四:单链表面试题,新浪、腾讯【有难度】、百度面试题
这篇文章总结了单链表的常见面试题,并提供了详细的问题分析、思路分析以及Java代码实现,包括求单链表中有效节点的个数、查找单链表中的倒数第k个节点、单链表的反转以及从尾到头打印单链表等题目。
33 1
数据结构与算法学习四:单链表面试题,新浪、腾讯【有难度】、百度面试题
|
24天前
|
缓存 前端开发 JavaScript
"面试通关秘籍:深度解析浏览器面试必考问题,从重绘回流到事件委托,让你一举拿下前端 Offer!"
【10月更文挑战第23天】在前端开发面试中,浏览器相关知识是必考内容。本文总结了四个常见问题:浏览器渲染机制、重绘与回流、性能优化及事件委托。通过具体示例和对比分析,帮助求职者更好地理解和准备面试。掌握这些知识点,有助于提升面试表现和实际工作能力。
60 1
|
1月前
|
Java 应用服务中间件 程序员
JVM知识体系学习八:OOM的案例(承接上篇博文,可以作为面试中的案例)
这篇文章通过多个案例深入探讨了Java虚拟机(JVM)中的内存溢出问题,涵盖了堆内存、方法区、直接内存和栈内存溢出的原因、诊断方法和解决方案,并讨论了不同JDK版本垃圾回收器的变化。
30 4
|
2月前
|
Web App开发 前端开发 Linux
「offer来了」浅谈前端面试中开发环境常考知识点
该文章归纳了前端开发环境中常见的面试知识点,特别是围绕Git的使用进行了详细介绍,包括Git的基本概念、常用命令以及在团队协作中的最佳实践,同时还涉及了Chrome调试工具和Linux命令行的基础操作。
「offer来了」浅谈前端面试中开发环境常考知识点
|
1月前
|
JavaScript 前端开发 Java
VUE学习四:前端模块化,ES6和ES5如何实现模块化
这篇文章介绍了前端模块化的概念,以及如何在ES6和ES5中实现模块化,包括ES6模块化的基本用法、默认导出与混合导出、重命名export和import,以及ES6之前如何通过函数闭包和CommonJS规范实现模块化。
84 0
VUE学习四:前端模块化,ES6和ES5如何实现模块化
|
1月前
|
前端开发 JavaScript 小程序
前端新机遇!为什么我建议学习鸿蒙?
【10月更文挑战第4天】前端新机遇!为什么我建议学习鸿蒙?
113 0
前端新机遇!为什么我建议学习鸿蒙?
|
1月前
|
XML 前端开发 Java
Spring,SpringBoot和SpringMVC的关系以及区别 —— 超准确,可当面试题!!!也可供零基础学习
本文阐述了Spring、Spring Boot和Spring MVC的关系与区别,指出Spring是一个轻量级、一站式、模块化的应用程序开发框架,Spring MVC是Spring的一个子框架,专注于Web应用和网络接口开发,而Spring Boot则是对Spring的封装,用于简化Spring应用的开发。
123 0
Spring,SpringBoot和SpringMVC的关系以及区别 —— 超准确,可当面试题!!!也可供零基础学习
|
1月前
|
Web App开发 JavaScript 前端开发
前端Node.js面试题
前端Node.js面试题