计算机基础面试(数据库)

1. 事务的ACID特性?如何通过日志保证原子性和持久性?
  • 专业解答
    ACID:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)。日志(如Redo/Undo Log)记录操作,故障时重做或回滚。

  • 初中生版
    事务像银行转账:要么转成功(原子性),要么全取消(回滚)。日志像监控录像,出问题时按记录恢复。


2. 数据库索引的原理是什么?B+树和哈希索引的区别是什么?
  • 专业解答
    索引加速查询。B+树适合范围查询,叶节点链表结构;哈希索引基于哈希表,仅支持等值查询。

  • 初中生版
    B+树像图书馆的分类书架,能快速找到某类书或范围(比如A到C区);哈希索引像快递柜,直接输入编号(哈希值)取件。


3. 什么是脏读、不可重复读和幻读?如何通过隔离级别解决?
  • 专业解答

    • 脏读:读到未提交数据;
    • 不可重复读:同一事务两次读结果不同;
    • 幻读:同一事务两次查询行数不同。
      通过隔离级别(如RC、RR)控制。
  • 初中生版
    像考试时:

    • 脏读:抄同学没写完的答案;
    • 不可重复读:第一次看同学得80分,第二次看被改成90分;
    • 幻读:第一次统计班里5人及格,第二次突然多出1人。

4. MySQL的InnoDB和MyISAM引擎的主要区别是什么?
  • 专业解答
    InnoDB支持事务、行锁、外键;MyISAM不支持事务,表锁,但查询更快。

  • 初中生版
    InnoDB像带锁的日记本:能记录交易(事务),单页可修改;MyISAM像普通笔记本:写得快但不能锁页。


5. 什么是MVCC(多版本并发控制)?如何实现快照读?
  • 专业解答
    MVCC通过保存数据多个版本,实现读不阻塞写。快照读(如SELECT)读取历史版本,避免加锁。

  • 初中生版
    MVCC像图书馆的旧书库:读者看旧版书(快照),作者同时修改新版,互不干扰。


6. 数据库范式有哪些?第三范式(3NF)的要求是什么?
  • 专业解答
    主要范式:1NF(字段原子性)、2NF(消除部分依赖)、3NF(消除传递依赖)。3NF要求非主键字段不依赖其他非主键字段。

  • 初中生版
    范式像整理衣柜:1NF(不塞一堆衣服),2NF(按季节分类),3NF(不重复存放同款衣服)。


7. 什么是聚集索引和非聚集索引?InnoDB的主键索引结构是怎样的?
  • 专业解答
    聚集索引决定数据存储顺序(InnoDB主键),非聚集索引(二级索引)存键值和主键地址。

  • 初中生版
    聚集索引像字典正文:按拼音排序;非聚集索引像目录:查到页码再翻到对应页。


8. SQL注入的原理是什么?如何防范?
  • 专业解答
    攻击者通过输入恶意SQL拼接,绕过验证。防范方法:参数化查询(预编译)、过滤特殊字符。

  • 初中生版
    SQL注入像谎报密码:假装是管理员(' OR 1=1--),骗过系统。防范:用保险锁(参数化)封住漏洞。


9. 什么是查询优化器?基于代价的优化(CBO)如何工作?
  • 专业解答
    查询优化器生成执行计划。CBO根据统计信息(如行数、索引)估算成本,选择最优方案。

  • 初中生版
    查询优化器像导航:根据路况(数据分布)选择最短或最快路线。


10. 什么是锁?行级锁和表级锁的区别是什么?
  • 专业解答
    锁保障并发安全。行级锁粒度小并发高(如InnoDB),表级锁粒度大并发低(如MyISAM)。

  • 初中生版
    行级锁像给单本书上锁;表级锁像锁整个书柜。前者灵活,后者省事但影响多人使用。


11. 什么是死锁?数据库如何检测和解决死锁?
  • 专业解答
    死锁是循环等待资源。数据库通过超时或等待图检测,回滚代价小的事务。

  • 初中生版
    死锁像四人各拿一本书等别人交换。数据库会强制某人先放手(回滚),解开僵局。


12. 什么是视图?它的作用和局限性是什么?
  • 专业解答
    视图是虚拟表,简化查询、提供安全隔离。局限:更新受限,性能可能下降。

  • 初中生版
    视图像定制窗口:只能看特定数据(如只显示数学成绩),但改数据可能受限制。


13. 什么是存储过程?与普通SQL语句相比有何优缺点?
  • 专业解答
    存储过程是预编译的SQL集合,减少网络开销,但调试困难,移植性差。

  • 初中生版
    存储过程像预制菜:提前做好菜谱(SQL),点菜(调用)更快,但换厨房(数据库)可能不兼容。


14. 什么是分区表?如何选择分区键?
  • 专业解答
    分区表将大数据分片存储(如按时间、范围)。分区键应选择高频查询条件字段。

  • 初中生版
    分区表像分册的百科全书:按年份或字母分册,查资料更快。


15. 什么是数据库的冷备份和热备份?
  • 专业解答
    冷备份在停止服务时拷贝数据;热备份在运行时备份,可能丢失少量数据。

  • 初中生版
    冷备份像关灯打扫房间;热备份像边用房间边吸尘,可能漏掉角落。


16. 什么是NoSQL数据库?与关系型数据库的适用场景有何不同?
  • 专业解答
    NoSQL支持非结构化数据,高扩展性(如MongoDB、Redis),适合大数据和高并发;关系型数据库强一致性,适合事务场景。

  • 初中生版
    NoSQL像杂货店:能存各种奇怪的东西(JSON、图片);关系型数据库像超市:货架整齐,分类明确。


17. 什么是CAP定理?如何权衡一致性、可用性和分区容忍性?
  • 专业解答
    CAP定理:分布式系统无法同时满足一致性(C)、可用性(A)、分区容忍性(P)。通常根据场景选择CP或AP。

  • 初中生版
    CAP像餐厅服务:

    • CP:必须等厨师做好菜(一致)才上桌,可能等很久;
    • AP:直接上桌(可用),但可能菜没做好。

18. 什么是Redis的数据持久化机制?RDB和AOF的区别是什么?
  • 专业解答
    RDB定期快照,恢复快但可能丢数据;AOF记录写操作,数据更完整但体积大。

  • 初中生版
    RDB像拍照存档:定期拍一张全家福;AOF像录像:记录所有动作,恢复时重放。


19. 什么是数据库的索引覆盖(Covering Index)?
  • 专业解答
    索引覆盖指查询字段全在索引中,无需回表,提升效率。

  • 初中生版
    索引覆盖像目录包含答案:查书时直接看目录,不用翻正文。


20. 什么是连接(JOIN)算法?嵌套循环、哈希连接和排序合并连接的区别是什么?
  • 专业解答

    • 嵌套循环:遍历两表逐行匹配;
    • 哈希连接:构建哈希表快速匹配;
    • 排序合并:排序后顺序合并。
  • 初中生版

    • 嵌套循环像逐个问名字找朋友;
    • 哈希连接像用学号快速匹配;
    • 排序合并像按身高排队后组队。

21. 什么是慢查询日志?如何分析和优化慢查询?
  • 专业解答
    慢查询日志记录超时SQL。通过EXPLAIN分析执行计划,优化索引或拆分查询。

  • 初中生版
    慢查询日志像考卷错题本:找出耗时的题目(SQL),分析原因(索引、算法),针对性练习。


22. 什么是数据库的读写分离?如何实现?
  • 专业解答
    读写分离将写操作到主库,读操作到从库。通过代理(如ProxySQL)或中间件路由。

  • 初中生版
    读写分离像图书馆:主馆(主库)处理借书登记,分馆(从库)提供阅读,减轻主馆压力。


23. 什么是分库分表?如何解决跨库查询问题?
  • 专业解答
    分库分表按规则拆分数据。跨库查询需应用层聚合或全局表冗余。

  • 初中生版
    分库分表像分班管理:按学号分班,查全校数据时需合并各班结果。


24. 什么是事务的隔离级别?MySQL默认的隔离级别是什么?
  • 专业解答
    隔离级别:RU(读未提交)、RC(读已提交)、RR(可重复读)、S(串行化)。MySQL默认RR。

  • 初中生版
    隔离级别像考试监考严格程度:

    • RU:能看到别人未写完的答案;
    • RR:考试期间答案被锁定,只能看初始版本。

25. 什么是数据库的WAL(Write-Ahead Logging)机制?
  • 专业解答
    WAL先写日志再修改数据,保证崩溃时可通过日志恢复。

  • 初中生版
    WAL像先记账再花钱:即使突然断电,也能根据账本(日志)找回数据。


26. 什么是数据库的缓冲池(Buffer Pool)?如何管理页的加载和淘汰?
  • 专业解答
    缓冲池缓存磁盘页,减少IO。通过LRU算法管理,频繁访问页驻留,冷页淘汰。

  • 初中生版
    缓冲池像书桌:常用书放桌面(缓冲池),不常用的放书架(磁盘)。LRU像整理书桌,最近不用的先收起来。


27. 什么是数据库的乐观锁和悲观锁?
  • 专业解答
    悲观锁假设冲突多(如SELECT FOR UPDATE),乐观锁假设冲突少(如版本号验证)。

  • 初中生版
    悲观锁像考试锁卷子:怕人偷看,全程盯着;乐观锁像开放答题:提交时检查是否被改过。


28. 什么是数据库的物化视图?与普通视图的区别是什么?
  • 专业解答
    物化视图存储查询结果,定期刷新;普通视图实时计算。

  • 初中生版
    物化视图像预制菜:提前做好存冰箱;普通视图像现炒菜:点单后现做。


29. 什么是数据库的自治事务?应用场景是什么?
  • 专业解答
    自治事务独立于主事务提交,用于日志记录等需独立提交的场景。

  • 初中生版
    自治事务像独立记账本:主交易可能失败,但账本记录必须保留。


30. 什么是数据库的基数(Cardinality)?如何影响查询优化?
  • 专业解答
    基数是列唯一值的数量。高基数列(如身份证)适合建索引,低基数列(如性别)索引效果差。

  • 初中生版
    基数像班级学号:如果学号唯一(高基数),按学号找人快;如果按性别(低基数),索引作用小。

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

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

相关文章

fastjson1.2.24 CVE-2017-18349 漏洞复现

fastjson1.2.24 CVE-2017-18349 漏洞复现 时间不等人啊/(ㄒoㄒ)/~~ 0. 前置知识 建议直接看参考链接 JNDI:Java命名和目录接口 RMI:远程方法调用注册表 LDAP:轻量级目录访问协议 CORBA:公共对象请求代理体系结构 1. jndi …

【计算机视觉】手势识别

手势识别是计算机视觉领域中的重要方向,通过对摄像机采集的手部相关的图像序列进行分析处理,进而识别其中的手势,手势被识别后用户就可以通过手势来控制设备或者与设备交互。完整的手势识别一般有手的检测和姿态估计、手部跟踪和手势识别等。…

Leetcode 37: 解数独

Leetcode 37: 解数独 是经典的回溯算法问题,考察如何利用递归和剪枝高效求解数独问题。这题主要考察对回溯、递归、深度优先搜索 (DFS)、剪枝优化等算法思想的掌握。 题目描述 给定一个部分填充的数独(9 x 9)网格,用一个有效的算…

VSCode 移除EmmyLua插件的红色波浪线提示

VSCode 中安装插件EmmyLua,然后打开lua文件的时候,如果lua代码引用了C#脚本的变量,经常出现 “undefined global variable: UnityEngineEmmyLua(undefined-global)” 的红色波浪线提示,这个提示看着比较烦人,我们可以通…

【音视频】视频基本概念

一、视频的基本概念 1.1 视频码率(kb/s) 视频码率是指视频文件在单位时间内使用的数据流量,也叫码流率。码率越大,说明单位时间内取样率越大,数据流进度也就越高 1.2 视频帧率(fps) 视频帧率…

Grafana服务安装并启动

Grafana服务安装并启动 1、介绍2、下载Grafana3、解压缩文件4、启动Grafana服务5、增加数据源,填写Prometheus访问地址6、增加图表 1、介绍 Grafana是一个开源的可视化系统监控和警报工具包。 2、下载Grafana 介绍:Grafana是一个开源的可视化系统监控和警报工具包…

如何将hf-mirror.com作为vllm默认的下载源? conda如何移除虚拟环境?conda 如何复制一份虚拟环境?

前言 上回咱说道,如果你没办法访问huggingface.co,则可以把modelscope作为vllm默认的下载源。 但如果你非得用你用不了的huggingface.co呢?那你可以考虑将hf-mirror.com作为vllm默认的下载源。这里,hf-mirror.com和huggingface.co的效果是一样的。 要将hf-mirror.com设为v…

MySQL零基础教程14—子查询

子查询比较简单,我们还是通过案例引入。 有时候我们查询的时候,需要用到的不止一个表的数据,比如下面的场景: 查询名字叫李晓红同学的班主任姓名 我们提供三个表的基础信息如下: 从三张表的结构,我们不难…

基于单片机和Wifi技术的智能台灯设计

摘要 :本文主要介绍了基于单片机AT89C51和Wifi技术的智能台灯的硬件和软件设计。该智能台灯具有根据当前光线自动调节灯光亮度的功能,还可对用户使用台灯时处于非正常的距离和姿态时给予报警提示,用户可以随时通过手机app查询智能台灯的报警记…

最新版AI大模型面试八股文

1、主流的开源大模型体系有哪些,并简要介绍它们的特点? 这个问题考察面试者对当前大模型生态的了解,包括如 Transformer-based 模型(如 BERT, GPT 系 列)、T5、Switch Transformer 等,以及它们的架构特点和…

在MySQL拿到一条慢SQL语句要如何优化?

在工作的过程中,很多时候会发现执行业务逻辑的时候,某一条SQL语句执行得非常慢。这时候,要如何处理这条语句,如何判断语句慢的地方在哪里? 一、初级排查 EXPLAIN慢SQL分析 MySQL官网用法: https://dev.mys…

leetcode hot 100 239. 滑动窗口最大值

给你一个整数数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。 返回 滑动窗口中的最大值 。 示例 1: 输入:nums [1,3,-1,-3,5,3,6,7], k 3 输…

Leetcode 189: 轮转数组

Leetcode 189: 轮转数组 这是一道经典问题,题目要求将一个数组向右轮转 k 个位置,有多种解法可以快速求解,既可以通过额外空间,也可以在 O(1) 的空间复杂度内完成。本题考察数组操作、双指针,以及算法优化能力。 题目…

优选算法的智慧之光:滑动窗口专题(二)

专栏:算法的魔法世界​​​​​​ 个人主页:手握风云 目录 一、例题讲解 1.1. 最大连续1的个数 III 1.2. 找到字符串中所有字母异位词 1.3. 串联所有单词的子串 1.4. 最小覆盖子串 一、例题讲解 1.1. 最大连续1的个数 III 题目要求是二进制数组&am…

Linux系统安装Azure CLI完全指南

引言 Azure CLI是管理Azure云服务的重要命令行工具。本文将详细介绍在Linux系统上安装Azure CLI的两种方法,并提供版本管理、故障排除等完整解决方案。 © ivwdcwso (ID: u012172506) 一、安装前准备 1.1 系统要求 支持的Linux发行版: Ubuntu 20.04/22.04 LTSDebian 10/…

2025嵌入式软件开发工程师--音频方向

一、选择题(每题3分,共30分) 1.以下哪个不是C语言中的关键字?( ) A. int B. Float C. Define D. Return 2.以下代码的输出是: ( ) inta 5, b 10; printf("%d“, a b); A. 15 B.16 …

TCP/IP四层模型:从入门到精通

第一部分:基础概念 1.1 什么是TCP/IP? - TCP/IP 是互联网的基础通信协议簇,定义了数据如何在网络中传输和路由。 - 与OSI七层模型的对比:TCP/IP更简化,分为四层,注重实际应用。 1.2 四层模型结构 1. 应…

【Python 数据结构 1.零基础复习】

目录 一、输入与输出 1.输入 2.格式化输出 二、数字与变量 1.字符串 & 整型 2.字符串 & 整型 & 浮点型 3.变量 练习 2235. 两整数相加 三、运算与操作 1.四则运算 练习 2769. 找出最大的可达成数字 3.取整与取余 练习 2651. 计算列车到站时间 ​编辑 四、真与假 1…

什么是 MGX:MetaGPT

什么是 MGX:MetaGPT MetaGPT是由思码逸(OpenDILab)团队开发的一款专注于生成式AI驱动的软件开发框架,MGX可能是其衍生或升级的相关成果,它创新性地将大语言模型引入软件开发流程,模拟人类软件团队的协作方式,能让用户通过自然语言描述需求,即可自动生成完整的软件项目,…

大模型时代下的数据标注革命:工具、挑战与未来趋势

引言 随着大模型技术的飞速发展,人工智能对高质量标注数据的依赖愈发显著。传统的人工标注方式在效率、成本和场景适应性上逐渐显现瓶颈,而大模型凭借其强大的泛化能力和多模态理解能力,正在推动数据标注从“劳动密集型”向“智能工业化”转…