秋招突击——7/9——字节面经

文章目录

    • 引言
    • 正文
      • 八股
        • MySQL熟悉吗?讲一下MySQL索引的结构?
        • 追问:MySQL为什么要使用B+树?
        • 在使用MySQL的时候,如何避免索引失效?
        • 讲一下MySQL的事物有哪几种特征?
        • MySQL的原子性可以实现什么效果?
        • MySQL几种隔离级别?常用的隔离级别是什么?
        • 为什么电商是读已提交?
        • 如果主要采用读已提交的话,怎么样防止超卖?库存有限的时候?秒拍的场景下?单说隔离级别的情况!以买票为例子,比如说一张票!实际业务系统里怎么防止超卖?
        • 你对飞书了解吗?
    • 总结

引言

  • 这是我面试体验感最好的一次,腾讯、拼多多、华为都没有这个好,不仅仅是单方面接受拷打,是会和我讨论我的方法有什么不对,然后还会认真听我的研究方向,然后探讨如何改良。之前所有的面试,基本上没啥人会认真听我的研究方向,以后我应该还会投字节,能去那里工作真的不错,很棒!主要是飞书部门!
  • 正常面试下来我发现我的八股不行并且算法也不行
    • 八股是只会背这一道题,一旦跟我深入讨论,我就不能顺利答出来了
    • 算法是紧张了,没写出来,没有考虑好!
  • 今天主要是把八股过一遍,算法已经过过了!

正文

八股

MySQL熟悉吗?讲一下MySQL索引的结构?

我的回答

  • 帮助查询数据的一种数据结构,底层是用B+数保存索引,是否需要展开讲一下B+树的具体内容?
追问:MySQL为什么要使用B+树?
  • 多叉树,相同节点的情况下,树的层高更低,磁盘IO次数更少,查询效率更快
  • 叶子节点使用双项链表保存,适用于范围查找
  • 非叶子节点保存索引,叶子节点存储数据,B数全部都存数据,搜索更快

个人问题

  • MySQL会将索引加入到内存中吗?如果可以加载到内存中的话,就是会更快,如果没有的话,就没有意义了。
  • MySQL会将索引加载到内存中,从而提高查询速度。具体来说,MySQL使用一种叫做“缓存”的机制来将索引数据存储在内存中。这些缓存主要包括:
    • InnoDB Buffer Pool:这是InnoDB存储引擎使用的主要缓存区,用于缓存数据页和索引页。通过将索引加载到缓冲池中,MySQL可以更快速地访问和处理索引,从而加快查询速度
在使用MySQL的时候,如何避免索引失效?
  • 这个题目一下子忘记了,太久没背了,而且没有具体使用过索引,底层并不了解,所以这里没回答出来!或者说在胡扯!
    • 不能使用聚合函数的操作?扯淡,这个用不到!

**这里暂时先贴一下GPT的回答,这里每次都挂,今天准备抽时间,把这个索引这个章节从使用到原理都看一遍,再重写一篇,这里先放在这里,今天写完了,在贴链接! **
在这里插入图片描述在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

讲一下MySQL的事物有哪几种特征?
  • 原子性:一个操作要么成功要么失败,
  • 隔离性:
  • 持久性:保证事物不会因为执行失败的断电
  • 一致性:保证一个SQL语句执行前后的结果是一致的

这里说的不够详细,或者说不够具体,很混乱,没有一开始的那种从容和淡定了!紧张了!

  • 原子性

    • 确保事务中的所有操作要么全部完成,要么完全不执行。如果事务中的任何操作失败,整个事务将回滚,数据库会回到事务开始前的状态。
  • 一致性(Consistency)

    • 一致性保证事务将数据库从一个一致状态转移到另一个一致状态。在事务开始和结束时,数据库的完整性约束没有被破坏。
  • 隔离性(isolated)

    • 隔离性确保并发事务彼此之间不会互相干扰。每个事务在其执行过程中所做的更改对其他事务是不可见的,直到该事务提交。
  • 持久性(Durability):

    • 持久性保证一旦事务提交,其结果将永久保存在数据库中,即使发生系统崩溃也不会丢失
MySQL的原子性可以实现什么效果?
  • 网购购买成功,减库存操作
  • 原子性主要是通过undolog保证实现的,事物执行失败进行回滚,要么执行失败,要么全部执行。
MySQL几种隔离级别?常用的隔离级别是什么?
  • 电商常用的是读已提交,MySQL的InoDB默认的隔离级别是可重复读
  • 4种隔离级别,列举出来了
为什么电商是读已提交?
  • 电商对于并发性的要求比较高,然后可重复读的会限制并发性,对于数据不一致可以容忍。
    在这里插入图片描述
  • 1、性能考虑
    • 减少锁争用:在高并发环境下,“读已提交”隔离级别减少了锁的持有时间和范围,避免了长时间的行级锁定,从而减少了锁争用和死锁的风险。相比于“可重复读”或“串行化”隔离级别,“读已提交”对系统性能的影响较小。
    • 提高吞吐量:降低锁的粒度和持有时间有助于提高系统的并发处理能力,从而提高整体吞吐量。这对于高流量的电商平台至关重要。
    1. 业务需求
    • 及时性要求:电商平台需要及时反馈用户的操作结果,如订单创建、库存查询等。在“读已提交”隔离级别下,用户可以更快地看到最新的已提交数据,满足了业务的及时性需求。
    • 一致性要求相对较低:对于许多电商业务场景,如商品浏览和搜索,对数据一致性的要求相对较低,允许一定程度的脏读。
    1. 事务冲突减少
    • 降低事务冲突:在“读已提交”隔离级别下,读操作不会阻塞写操作,写操作也不会阻塞读操作,减少了事务之间的冲突,提高了系统的并发处理能力。
    1. 适当的并发控制
    • 乐观锁和悲观锁的结合使用:在需要严格控制并发的场景,如库存扣减和订单处理,可以结合使用乐观锁或悲观锁,以确保数据的一致性和正确性。通过这种方式,可以在保持较高性能的同时,防止关键业务场景下的数据冲突和不一致
如果主要采用读已提交的话,怎么样防止超卖?库存有限的时候?秒拍的场景下?单说隔离级别的情况!以买票为例子,比如说一张票!实际业务系统里怎么防止超卖?
  • 通过redis这种分布式锁,通过锁来控制访问
  • 查的时候可以查有票,但是实际购买的时候,使用分布式锁进行处理。

搜索回答
悲观锁

  • 读取库存的时候,锁住相应的记录,防止其他事物同时获取或者修改记录,使用select 。。。。for update实现
start transactionselect stock from ticks where ticket_id = 1 for update;
-- 检查库存是否足够
IF stock > 0 THEN-- 执行购买操作UPDATE tickets SET stock = stock - 1 WHERE ticket_id = 1;-- 提交事务COMMIT;
ELSE-- 库存不足,回滚事务ROLLBACK;
END IF;

乐观锁

  • 在更新库存时,通过检查库存的版本号或者是时间戳来保证数据的一致性,在更新账号时发现版本好发生变化,说明其他事物已经更新过了,需要重试
START TRANSACTION;-- 读取库存和版本号
SELECT stock, version FROM tickets WHERE ticket_id = 1;-- 检查库存是否足够
IF stock > 0 THEN-- 尝试更新库存和版本号UPDATE tickets SET stock = stock - 1, version = version + 1 WHERE ticket_id = 1 AND version = @version;-- 检查是否有行受影响IF ROW_COUNT() > 0 THEN-- 更新成功,提交事务COMMIT;ELSE-- 更新失败,回滚事务并重试ROLLBACK;-- 重试逻辑(如重新开始事务)END IF;
ELSE-- 库存不足,回滚事务ROLLBACK;
END IF;

原子操作

  • 使用数据的原子操作,如update中的判断语句,在高并发的情况下,确保操作的原子性
START TRANSACTION;-- 尝试更新库存
UPDATE tickets SET stock = stock - 1 WHERE ticket_id = 1 AND stock > 0;-- 检查是否有行受影响
IF ROW_COUNT() > 0 THEN-- 更新成功,提交事务COMMIT;
ELSE-- 更新失败(库存不足或其他原因),回滚事务ROLLBACK;
END IF;

分布式锁

  • 在分布式系统中,使用分布式锁,确保同一时间只能有一个实例在操作数据库。
你对飞书了解吗?
  • 不了解
  • 尴尬!

补充

  • 企业级协同办公平台
  • 特点
    • 即时消息
    • 文档协作,提供强大的文档挂你和权限控制功能,支持多人同时编辑和评论
    • 任何和项目管理
      • 提供任务管理 工具,创建、分配和跟踪任务管理
      • 支持甘特图等
    • 集成应用
      • 支持与第三方应用的集成,github和JIRA等
      • 提供API和Webhook,方便企业进行自定义开发和集成

总结

  • 大概率是进不去了,不过我学到了很多东西,后续会进一步进行改良,今天就加把劲,把MySQL的东西给补上,尤其是索引这一块。
  • 也许这就是不断面试的作用吧,不断面试,不断补全自己的知识网络,然后不断提高自己的能力!加油!

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

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

相关文章

【区块链+跨境服务】粤澳健康码跨境互认系统 | FISCO BCOS应用案例

2020 年突如其来的新冠肺炎疫情,让社会治理体系面临前所未见的考验,如何兼顾疫情防控与复工复产成为社会 各界共同努力的目标。区块链技术作为传递信任的新一代信息基础设施,善于在多方协同的场景中发挥所长,从 而为粤澳两地的疫情…

CSS关于居中的问题

文章目录 1. 行内和块级元素自身相对父控件居中1.1. 块级元素相对父控件居中1.2. 行内元素相对于父控件居中 2. 实现单行文字垂直居中3. 子绝父相实现子元素的水平垂直居中3.1. 方案一3.1.1. 示例 3.2. 方案二3.2.1. 示例 3.3. 方案三(推荐)3.3.1. 示例 3.4. 方案四(了解一下) …

AI大模型知识点大梳理_ai大模型的精度以下哪项描述的准确

AI大模型是什么 AI大模型是指具有巨大参数量的深度学习模型,通常**包含数十亿甚至数万亿个参数。**这些模型可以通过学习大量的数据来提高预测能力,从而在自然语言处理、计算机视觉、自主驾驶等领域取得重要突破。 AI大模型的定义具体可以根据参数规模…

短信验证码研究:公开的短信验证码接口、不需要注册的短信验证码接口

短信验证码研究:公开的短信验证码接口、不需要注册的短信验证码接口 0 说明 本文提供了一个短信验证码接口,主要用于以下场景: 1、用于开发调试 2、用于申请验证码困难的企业和个人 3、用于短信验证码认证还没有通过,但是着急…

DBeaver操作MySQL无法同时执行多条语句的解决方法

DBeaver选择数据库连接,在【驱动属性】中将allowMultiQueries允许执行多条语句置为True

泰迪智能科技大数据实验室产品-实训管理平台介绍

高校大数据实验室通常配备有先进的计算机硬件和软件工具,以及专门的数据库和分析平台,以便研究人员和学生能够进行复杂的数据处理、分析和解释。主要利用大数据技术进行科学研究、技术开发和人才培养。 泰迪智能科技实训管理平台作为教学核心&#xff0c…

JS进阶-构造函数

学习目标: 掌握构造函数 学习内容: 构造函数 构造函数: 封装是面向对象思想中比较重要的一部分,js面向对象可以通过构造函数实现的封装。 同样的将变量和函数组合到了一起并能通过this实现数据的共享,所不同的是借助…

小程序需要进行软件测试吗?小程序测试有哪些测试内容?

在如今移动互联网快速发展的时代,小程序已成为人们生活中不可或缺的一部分。然而,面对日益增长的小程序数量和用户需求,小程序的稳定性和质量问题日益突显。因此,对小程序进行软件测试显得尤为重要。 近期的一项调查显示&#xf…

【架构】分布式与微服务架构解析

分布式与微服务架构解析 一、分布式1、什么是分布式架构2、为什么需要分布式架构3、分布式架构有哪些优势?4、分布式架构有什么劣势?5、分布式架构有哪些关键技术?6、基于分布式架构如何提高其高性能?7、如何基于架构提高系统的稳…

【工具】咸鱼小助手,一款咸鱼之王辅助工具

转载请注明出处:小锋学长生活大爆炸[xfxuezhagn.cn] 如果本文帮助到了你,欢迎[点赞、收藏、关注]哦~ Github:咸鱼之王的自动化脚本,自动答题、爬塔、领资源等 下载:(密码:9u22) 咸鱼小助手 文档:腾讯文档 视…

软考《信息系统运行管理员》-3.2信息系统设施运维的环境管理

3.2信息系统设施运维的环境管理 1 计算机机房的选址要求 电子计算机机房地理位置 选择水源充足,电子比较稳定可靠,交通通信方便,自然环境清洁的地点要远离产生粉尘、油烟、有害气体以及生产或存储具有腐蚀性、易燃、易爆物品的工厂、仓库、…

3d模型选不中任何东西是什么原因?---模大狮模型网

在进行3D模型设计过程中,有时会遇到无法选择模型中的任何元素的问题。这种情况可能会影响设计师的工作效率和体验,因此了解问题的原因以及如何解决是至关重要的。本文将探讨在3D建模中遇到无法选中模型元素的原因及解决方法。 一、问题原因分析 无法选中…

07浅谈大语言模型可调节参数tempreture

浅谈temperature 什么是temperature? temperature是大预言模型生成文本时常用的两个重要参数。它的作用体现在控制模型输出的确定性和多样性: 控制确定性: temperature参数可以控制模型生成文本的确定性,大部分模型中temperatur…

医疗器械网络安全 | 漏洞扫描、渗透测试没有发现问题,是否说明我的设备是安全的?

尽管漏洞扫描、模糊测试和渗透测试在评估系统安全性方面是非常重要和有效的工具,但即使这些测试没有发现任何问题,也不能完全保证您的医疗器械是绝对安全的。这是因为安全性的评估是一个多维度、复杂且持续的过程,涉及多个方面和因素。以下是…

数模打怪(一)之层次分析法

一、什么是层次分析法 层次分析法(AHP)主要用于解决评价类问题(可打分) 比如哪种方案更好、哪位运动员更优秀等 二、层次分析法的三个步骤 1、建立层次结构 分析题目,找出评价类问题的三要素: &#x…

android13 设置左右分屏修改为单屏幕,应用分屏改为单屏

1.前言 android13中,系统设置变成,左边是一级菜单,右侧是二级菜单, 这样跟我们以前android7/8/9的布局是不一样的,我们需要将它修改为一级菜单,点进去才是二级菜单这种。 效果如下 2.系统设置实现分析 它这里使用的是google新出的embedding activity, 相关的知识这里…

从重庆元宇宙国风秀看未来元宇宙发展趋势

2024年2月24日,为纪念梅兰芳先生诞辰130周年,以“新国风东方美”为主题的【承华灵境】元宇宙国风秀在重庆市人民大礼堂发布。这场活动将中国经典艺术与数字化技术融合,呈现了一场新国风东方美学的跨越时空人文科技之旅,其中的重点…

最后纪元Last Epoch可以通过什么搬砖 游戏搬砖教程

来喽来喽,最后纪元,一款《最后纪元》是一款以获得战利品为基础的暗黑风格动作RPG游戏,玩家将从2281年的毁灭时代追溯到由女神Eterra创造的世界,通过多个时代与黑暗的命运对抗,找到拯救世界的方式。游戏有五种职业&…

萌啦数据多少钱一个月,萌啦数据价格是多少

在跨境电商的浩瀚星海中,Ozon作为俄罗斯及独联体地区领先的电商平台,正吸引着越来越多的商家和创业者的目光。而“萌啦ozon数据”作为专注于Ozon平台数据分析与洞察的服务提供商,更是成为了众多商家在数据驱动决策道路上的得力助手。然而&…

MobaXterm工具

MobaXterm 是一个增强型的 Windows 终端。其为 Windows 桌面提供所有重要的远程网络终端工具(如 SSH、X11、RDP、VNC、FTP、SFTP、Telnet、Serial、Mosh、WSL 等),和 Unix 命令(如 bash、ls、cat、sed、grep、awk、rsync 等&#…