首页 > 数据库 >25届实习秋招-Java面试-MySQL数据库面试题整理-牛客网近一年

25届实习秋招-Java面试-MySQL数据库面试题整理-牛客网近一年

时间:2023-11-18 18:55:51浏览次数:62  
标签:网近 25 面试题 什么 mysql 查询 索引 MySQL where

MySQL

概述:

  • 关系型数据和非关系型数据库的区别,有哪些应用场景
    • 有哪些非关系的

单表操作:

  • 三种SQL语言类型,MySql本身常用命令

  • DDL-数据定义语句:

  • DML

  • DQL

    • select条件查询

    • 排序查询:

      • 升序和降序,按a字段升序b字段降序怎么排
    • 分组查询(函数查询):

    • SELECT 列名 FROM 表名 [WHERE 条件] GROUP BY 分组列名 [HAVING 分组后条件过滤] [ORDER BY 排序列名 排序方式]; 执行顺序。

    • where 和 having

      • 优先where过滤
    • 去重

多表操作:

  • 约束
    • 连接查询:
    • 内连接:
      • 显式内连接:

      • 隐式内连接:内连接中 WHERE 子句和 ON 子句是等价的

      • 等值,非等值

    • 外连接:
      • 左连接,右连接,可以互换
      • 如果改变表 join 顺序,10个表一起 join
  • 嵌套查询/子查询。
    • 可以嵌套在哪
    • 讲讲mysql的子查询可以被什么代替,左连接。
    • union的作用,union all
  • 分页查询:

视图与存储过程

  • 了解

体系架构

存储引擎:

索引机制:

  • 索引介绍

    • 索引解决了什么问题,为什么要索引

      • 查询数据库的表两种方式
    • 索引的优缺点

      • 什么时候加索引
      • 底层实现
  • 索引的操作

    • 怎么看是否用了索引
    • 创建索引的命令
  • 索引的结构

    • 数据页:节点和数据页

    • B+树

      • B+树的原理
        • 二叉平衡树和红黑树(自平衡排序二叉树)的查询时间复杂度
          • 索引为什么用b+树,为啥不用二叉树
        • B树和B+树的区别是什么?为什么不用b树。
        • 为什么使用B+树而不是使用HashMap,hash的优缺点
          • 还有哪些使用其他数据结构的数据库,为什么redis使用的是哈希索引
        • B+树叶子节点结构特点-优化结构
          • 优化:B+树的非叶子节点为什么是双向链表。
      • B+树影响磁盘IO次数的因数有哪些?B+树的查询只访问一次磁盘吗
        • MySQL InnoDB B+树底层原理了
        • 一个8字节big int数据+6字节主键,算三层树能存储多少条数据
          • 什么因素会影响层数,B+树每一层越宽越好吗
        • 一般b+树高度,每层存多少数据
        • varchar类型和bigint类型选择哪个建立索引-可以从查询角度回答
      • 索引维护:插入一条数据B+树的分裂情况
      • b+树新增、删除节点是怎么操作的?
  • 索引的分类

    • 按照功能:唯一(NULL),主键索引,组合索引。
      • 手机号适不适合当主键
        • 主键为什么是整型并且是自增的,从效率上
    • 结构:B-Tree索引、哈希索引、R-Tree索引、全文索引等等
    • 聚簇索引和二级索引:
      • 聚簇索引和非聚簇索引的底层实现,以及区别
        • 如何创建呢:聚簇和非聚簇怎么创建
      • 聚簇索引的缺点:
        • 聚簇索引具体存储结构是什么,插入过程,查询过程
      • MyISAM的索引保存:索引和数据分开存储
  • 索引的设计原则

    • 什么时候需要建立索引,什么样的数据不推荐加索引
    • 要使用/设计一个索引要考量哪些原则。从三个方面
  • 索引的优化

系统优化

  • 优化步骤--索引性能分析

    • 怎么对MySQL进行调优,工具有哪些。
    • 怎么看语句执行频率
    • 定位低效语句:
      • 如何定位低效SQL语句-日志
    • Profile分析:常用命令,看各阶段/cpu
    • Explain语句--从执行计划角度
      • 各个字段含义,重点关注哪个字段。explain调优。
        • index和ref的区别
      • Extra中 的参数意思。
    • 怎么处理慢查询?假设确实走了索引但是还是很慢,你会怎么排查?
  • 索引优化

    • 避免失效--失效的几种情况

      • 语句错误--索引失效及场景

        • 最左前缀

          • 部分失效
          • 最左匹配与入参顺序有关吗(有and和没有and)
          • 为什么要遵守前缀匹配
        • 范围查询:

        • 函数操作

        • 字符串:单引号:

          • 有一个字段varchar a,where a = 1会不会走索引?变成where a='1'呢?
          • select x from y where id = 1111 order by create_time limit 1999,100。可能使用到什么索引,这个sql有什么问题?执行效率上有什么问题? create_time,id
        • 模糊查询:

          • %x定位不到区
          • 左右模糊查询区别
        • 给一张表,字段为ABCD,如果查询ABC,AC,CD,怎么设置索引
          (a,b,c)联合索引但是where c=1会不会有用
          组合索引 A B C, where A = x and C = x 会触发索引吗 where C = x and B = x and A = x
          有一个A,B,C的联合索引 select * from xx where A=1 and B=1 orderby C limit 1000能用到几个字段?  AB用到了,使用explain尝试了,C是可以用到的
          联合索引(a, b, c) , a = 3 and b > 4 会走索引吗?
          a = 3 and b > 4 order by b 呢,会走索引吗
          
    • 系统优化:

    • 底层原理:

      • 索引为什么失效,从索引的结构的层面
  • 表的优化

    • 分区表(非重点)
    • 临时表
      • 跨库查询(略看)
  • Sql优化

    • 数据插入

    • 自增主键,连续

    • 分组和排序

    • 分页查询优化:

      • 很大的数据量如何优化:
    • 统计计数

      • count的实现,count不同字段
    • update优化

      • 行锁和表锁
    • 使用提示:

      • 索引用的不对怎么强制使用索引?
    • 数据库优化/调优有哪些,说一下sql调优经历,我说索引和表关联

      • 加redis

事务

  • 什么是事务:

  • 事务管理

    • 基本的操作,默认开启事务
  • 隔离级别:

    • 数据库事务会相互影响吗,mysql默认隔离级别
      • 解决读写问题
      • 不同隔离级别解决了什么问题/ 还有什么问题
        • 幻读,幻读和不可重复读的区别
      • RC和RR如何保证-见MVCC

  • ACID 特性及实现(InnoDB)

  • 持久性--用哪个log,存放位置,存储格式

    • WAL原则好处
    • 日志刷盘时机
    • redolog怎么从故障中恢复
    • 日志对比:
      • 恢复数据库你觉得是用redo log还是bin log?
    • 日志两阶段提交
      • 为了解决什么,见javaguide
  • 原子性:

    • 存放位置和作用
    • undo log什么时候删除
  • 隔离性:

    • 一般使用MVCC/锁解决,读写/写写冲突(乐观悲观)

    • 快照读和当前读

      • 什么语句对应快照读(无锁),什么语句对应当前读(共享/排他)
        • 快照读又包含RC/RR/serializable
      • 快照读是出现读写冲突时(非阻塞读),而当前读已经加读写锁了
    • 快照读的RC/RR实现方式MVCC(多版本并发控制):用来解决读写冲突

      • MVCC怎么实现的

        • undo log 版本链,数据库隐藏字段,Read view

        • Read view--返回版本链哪个

          • 读视图产生时机,RC和RR的区别
          • 存储了哪几个字段
          • 可见算法分析
      • MVCC解决了什么问题--脏/幻/不可重复读

        • 产生不可重复读和幻读的根源
        • MVCC能解决幻读吗:快照读(RC/RR/serializable)可/当前读不可
          • 当前读要通过锁解决
        • RR用MVCC怎么实现的?RR怎么解决不可重复读
        • RR存在什么问题如何解决(幻读)
          • 快照读就是普通select 用的是MVCC(不完全解决)
          • 当前读就是select + lock 锁机制 读的是最新数据(会幻读)
          • 条件列未使用到索引,RR锁表,RC锁行
        • 注意RC和RR也可以基于锁实现,用MVCC只是为了不阻塞。
  • 一致性含义

    • 怎么实现的
  • 加锁分析:

    • 不同级别怎么加锁
      • RC和RR
    • 插入新数据的锁

  • 锁的基本介绍:

    • 锁的分类:按粒度分类,各自的优缺点,适用范围(什么时候加)
    • 引擎支持的锁的类型
  • 表级锁的分类,锁冲突概率

    • 怎么加/解锁
    • 表锁:分类
    • 元数据锁作用
    • 意向锁
      • 和元数据锁的区别
      • 语法,与其他锁的兼容性
  • 行锁锁分类:针对索引加锁

    • 可分为记录锁(Record lock),间隙锁,next key lock(临键锁)

      • 记录锁:
        • mysql加行锁有什么问题,如何解决
        • 什么时候加记录锁
      • 间隙锁的作用,优缺点
        • 普通索引和唯一索引上加行级锁有什么区别
      • Next Key Lock底层如何
    • 锁的兼容性

      • 不同的DML语句是什么锁,读锁写锁的具体代码
    • 如何解决的幻读

      • 两种方案
      • 如果在>80的范围内插入一条90的数据会不会出现幻读,怎么解决的
    • mysql死锁情况,解决方案,怎么发现

  • 锁的相关问题:

    • update100行用for循环单线程更快还是多线程更快(没加索引的情况下)
    • delete from test where a = '1' ,a 既不是主键也不是普通索引,判断加什么锁? 表锁。
    • mysql大表增加一列字段可能会出现什么问题怎么解决

范式

  • 数据库范式意义,生产环境一般用哪种

  • 不满足第三范式会有什么影响弊端

MySQL主从

日志

  • binlog和redolog的区别,属于哪个

  • 三个日志 redolog和binlog是否是必须的 为什么

  • update涉及什么日志,过程是什么

  • mysql怎么持久化,binlog和redolog日志的写入机制是什么

优化-分库分表

  • MySQL分库分表详解

  • 目的是什么

  • 分库分表的区别,优点

    • 垂直分库/分表
  • 水平分库分表

    • 分表用什么字段好,分表策略
  • 分库分表后如何查询数据。使用ShardingJDBC即可ShardingJDBC既提供了读写分离的功能也提供了分库分表查询的功能

  • 说一下关系数据库常见的一对多、多对多的场景

  • 有没有测试过跨表查询

标签:网近,25,面试题,什么,mysql,查询,索引,MySQL,where
From: https://www.cnblogs.com/Blunt-Raz0r/p/17840888.html

相关文章

  • 【第25章】移动应用安全需求分析与安全保护工程
    25.1移动应用安全威胁与需求分析25.1.1移动应用系统组成包括三个部分:一是移动应用,简称App;二是通信网络,包括无线网络、移动通信网络及互联网;三是应用服务端,由相关的服务器构成,负责处理来自App的相关信息或数据。25.1.2移动应用安全分析移动应用的安全威胁主要有以下......
  • P2256 一中校运会之百米跑
    一中校运会之百米跑题目背景在一大堆秀恩爱的**之中,来不及秀恩爱的苏大学神踏着坚定(?)的步伐走向了\(100\)米跑的起点。这时苏大学神发现,百米赛跑的参赛同学实在是太多了,连体育老师也忙不过来。这时体育老师发现了身为体育委员的苏大学神,便来找他帮忙。可是苏大学神需要热身,......
  • 常见面试题-Netty线程模型以及TCP粘包拆包
    介绍一下Netty使用的线程模型?答:Netty主要基于主从Reactor多线程模型,其中主从Reactor多线程模型将Reactor分为两部分:mainReactor:监听ServerSocket,用来处理网络IO连接建立操作,将建立的SocketChannel指定注册给subReactorsubReactor:和建立起来的socket做数据交互和......
  • P25 倒装
    目录1完全倒装(谓语动词完全在主语前)副词倒装表语的倒装2部分倒装(仅助动词提前)句首有否定意义的词句首有onlyif...should...构成虚拟语气得倒装固定句型中的倒装3形式倒装(谓语动词不提前;仅将强调内容提至句首)感叹句中的倒装比较级句型中的倒装(如“themore...,themore...”)how......
  • 常见面试题-HashMap源码
    了解HashMap源码吗?参考文章:https://juejin.cn/post/6844903682664824845https://blog.51cto.com/u_15344989/3655921以下均为jdk1.8的HashMap讲解首先,HashMap的底层结构了解吗?底层结构为:数组+链表+红黑树什么时候链表会转换为红黑树呢?当一个位置上哈希冲突过多时,会导致......
  • C# RSA2 SHA256 对应JAVA(SHA256withRSA)公钥验签名,CER公钥证书
    Stringtimestamp="1630905585";Stringnonce="9003323344";Stringsignature="tnjIAcEISq/ClrOppv/nojeZnE/pB1wNfQC/hMTME+rQMapWzvs9v1J68ueDpVzs1RW22dNotmUVy2sM6thNFRkaOx4qQGslX6kIttwvlsJsSEIR3qrjdPdUAkbP2KDRLujspxE9X0daJ6BU+......
  • 1.面向对象基础面试题小结
    面向对象基础1面向对象三大特点封装、继承、多态面向过程是将解决问题的过程拆分为一个个方法执行;面向对象是先抽象出对象,由对象执行方法的方式解决问题。1)封装:将一个对象的属性封装在对象内部,不允许外部对象直接访问对象内部信息。2)继承:不同类型对象,相互之间经常有......
  • 3、HTTP常见面试题
    HTTP是什么?Http是超文本传输协议,一种在通信双方之间指定的规则。其中超文本是指数据格式可以是文本、图片、视频等等各种类型的数据;HTTP常见的状态码1xx:提示信息,传输协议处理的中间状态2xx:请求成功。客户端发起的请求被服务端正确处理并返回响应数据3xx:资源重定位。客户端请......
  • openGauss学习笔记-125 openGauss 数据库管理-设置账本数据库-校验账本数据一致性
    openGauss学习笔记-125openGauss数据库管理-设置账本数据库-校验账本数据一致性125.1前提条件数据库正常运行,并且对防篡改数据库执行了一系列增、删、改等操作,保证在查询时段内有账本操作记录结果产生。125.2背景信息账本数据库校验功能目前提供两种校验接口,分别为:ledger......
  • 【C++】【图像处理】形态学处理(腐蚀、膨胀)算法解析(以.raw格式的图像为基础进行图像处
    1voiderosion(BYTE*image,intw,inth,BYTE*outImg)2{3intrept;4//腐蚀5memcpy(outImg,image,sizeof(BYTE)*w*h);//将读取的图像赋值给outImg,方便进行腐蚀操作67inti,j,m,n;8BYTEflag;9for(rept=0;rept......