[2]java开发实习面试打卡(代码片段)

Leida_wanglin Leida_wanglin     2023-02-16     479

关键词:

[1]Java开发实习面试打卡

1.数据库三范式

第一范式:如果每列(或者每个属性)都是不可再分的最小数据单元
第二范式:如果一个关系满足第一范式,并且除了主键以外的其它列,都依赖于该主键
第三范式:如果一个关系满足第二范式,并且不依赖于除了主键以外的其它列

2.引擎:MySQL存储引擎MyISAM与InnoDB区别

  • Innodb引擎:Innodb引擎提供了对数据库ACID事务的支持.并且还提供了行级锁和外键的约束.它的设计的目标就是处理大数据容量的数据库系统.
  • MyIASM引擎(原本Mysql的默认引擎):不提供事务的支持,也不支持行级锁和外键.

3.MyISM索引与InnoDB索引的区别

InnoDB索引是聚集索引,MyISAM索引是非聚集索引.
InnoDB的主键索引的叶子节点存储的是行数据,因此主键索引非常高效.
MyISAM索引的叶子节点存储的是行数据地址,需要再寻址一次才能得到数据.
InnoDB非主键索引的叶子节点存储的是主键和其他带索引的列数据,因此查询时做到覆盖索引会非常高效.

InnoDB引擎的4大特性:1.插入缓存 2.二次写 3.自适应哈希索引 4.预读

存储引擎的选择:如果没有特别的需求,使用默认的Innodb即可.
MyISAM:以读写插入为主的应用程序,比如播客系统,新闻门户网站.
InnoDB:更新(删除)操作频率也高,或者要保证数据的完整性;并发量高,支持事务和外键.比如OA自动化办公系统.

4.索引

索引是一种特殊的文件(InnoDB数据表上的索引是表空间的一个组成部分),它们包含着对数据表里所有记录的引用指针.
索引相当于目录,是一个文件,要占据物理空间.
优点:可以大大加快数据的检索速度,可以在查询的过程中,使用优化隐藏器,提高系统的性能.
缺点:
时间方面:创建索引和维护索引要耗费时间,具体地,当对表中的数据进行增加,删除和修改的时候,索引也要动态的维护,会降低增/改/删的执行效率
空间方面:索引需要占物理空间.

4.1. 索引使用场景(重点)

4.1.1. where

where:SQL执行可选的索引只有主键索引,如果有多个,最终会选一个较优的作为索引的依据.

4.1.2. order by

当我们使用order by将查询结果按照某个字段排序时,如果该字段没有建立索引,那么执行计划将会查询出的所有数据使用外部排序(将数据从硬盘分批读取到内存使用内部排序,最后合并排序结果),这个操作很影响性能.
如果对该字段建立索引,那么由于索引本身是有序的,因此直接按照索引的顺序和映射关系逐条取出数据即可.而且如果是分页的,只用取出索引表某个范围内的索引对应的数据.

4.1.3. join

对join语句匹配广西(on)涉及的字段建立索引能够提高效率
4.1.3.1. 索引覆盖
如果要查询的字段都建立过索引,那么引擎会直接在索引表中查询而不会访问原始数据(否则是要有一个字段没有建立索引就会做全表扫描),这叫索引覆盖.
因此我们需尽可能在select后只写必要的查询字段,以增加索引覆盖的几率.

4.2. 索引的类型

主键索引:数据列不允许重复,不允许为NULL,一个表只能有一个主键.
唯一索引:数据列不允许重复,允许为NULL值,一个表允许多个列创建唯一索引.
普通索引:基本的索引类型,没有唯一性的限制,允许为NULL值.
全文索引:是目前搜索引擎使用的一种关键技术.
  • 可以通过ALTER TABLE table_name ADD UNIQUE(column);创建唯一索引
  • 可以通过ALTER TABLE table_name ADD UNIQUE(column1,column2);创建唯一组合索引
  • 可以通过ALTER TABLE table_name ADD INDEX index_name(column);创建普通索引
  • 可以通过ALTER TABLE table_name ADD INDEX index_name(column1, column2, column3);创建组合索引
  • 可以通过ALTER TABLE table_name ADD FULLTEXT(column);创建全文索引

4.3. 索引的数据结构(b树, hash)

索引的数据结构和具体的存储引擎的实现有关,在MySQL中使用较多的索引有`Hash索引`,B+树索引等......
InnoDB存储引擎的默认索引实现为:B+树索引.

4.4. 索引的基本原理

索引的原理很简单,把无序的的数据变成有序的查询
1.把创建了索引的列的内容进行排序
2.对排序结果生成倒排表
3.在倒排表内容上拼上数据地址链
4.在查询的时候,先拿到倒排表的内容,再取出数据地址链,从而拿到具体数据

4.5. 索引算法

索引算法有BTree算法和Hash算法

BTree算法:
是最常用的mysql数据库索引算法,也是mysql默认的算法.因为它不仅可以被用在=,>,>=,<,<=和between这些比较操作符上,而且还可以用于like操作符,只要它的查询条件是一个不以通配符开头的常量

  • 只要它的查询条件是一个不以通配符开头的常量
select * from user where name like 'jack%';
  • 如果一通配符开头,或者没有使用常量,则不会使用索引,例如:
select * from user where name like '%jack'; 

Hash算法:
Hash索引只能用于对等比较,例如=,<=>操作符.

4.6. 索引设计的原则

1.适合索引的列是出现在where子句中的列,或者连接子句指定的列
2.基数较小的类,索引效果较差,没有必要在此列建立索引
3.使用短索引,如果对长字符串列进行索引,应该指定一个前缀长度,这样能够节省大量索引空间
4.不要过度索引.索引需要额外的磁盘空间,并降低写操作的性能.在修改表内容的时候,索引会进行更新甚至重构,索引列越多,这个时间就会越长.

[3]Java开发实习面试打卡

[4]java开发实习面试打卡(代码片段)

[3]Java开发实习面试打卡1.事务1.1.什么是数据库事务?事务是一个不可分割的数据库操作序列,也是数据库并发控制的基本单位,其执行结果必须使数据库从一种一致性状态变到另一种一致性状态.事务是逻辑上的一组操作,要么都执行... 查看详情

[1]java开发实习面试打卡(代码片段)

1.如何实现一个IOC容器1.配置文件配置包扫描路径2.递归包扫描获取.class文件3.反射,确定需要交给IOC管理的类4.对需要注入的类进行依赖注入1.配置文件中指定需要扫描的包路径2.定义一些注解,分别表示访问控制层,业务服务层,数据... 查看详情

[5]java开发实习面试打卡(代码片段)

[4]Java开发实习面试打卡1.常用SQL语句数据定义语言DDL(DataDdefinitionLanguage)CREATE,DROP,ALTER主要为以上操作集对逻辑结构等有操作的,其中包括表结构,视图和索引.数据查询语言DQL(DataQueryLanguage)SELECT这个较好理解即查询操作,以select关键... 查看详情

[3]java开发实习面试打卡(代码片段)

[2]Java开发实习面试打卡1.创建索引的原则(重中之重)最好符合以下几个原则:1.最左前缀匹配原则,组合索引非常重要的原则,mysql会一直向右匹配直到遇到范围查询(>,<,between,like)就停止匹配.2.较频繁作为查询条件的字段才去创建... 查看详情

[3]java开发实习面试打卡(代码片段)

[2]Java开发实习面试打卡1.创建索引的原则(重中之重)最好符合以下几个原则:1.最左前缀匹配原则,组合索引非常重要的原则,mysql会一直向右匹配直到遇到范围查询(>,<,between,like)就停止匹配.2.较频繁作为查询条件的字段才去创建... 查看详情

[3]java开发实习面试打卡(代码片段)

[2]Java开发实习面试打卡1.创建索引的原则(重中之重)最好符合以下几个原则:1.最左前缀匹配原则,组合索引非常重要的原则,mysql会一直向右匹配直到遇到范围查询(>,<,between,like)就停止匹配.2.较频繁作为查询条件的字段才去创建... 查看详情

[2]java开发实习面试打卡(代码片段)

[1]Java开发实习面试打卡1.数据库三范式第一范式:如果每列(或者每个属性)都是不可再分的最小数据单元第二范式:如果一个关系满足第一范式,并且除了主键以外的其它列,都依赖于该主键第三范式:如果一个关系满足第二范式,并且... 查看详情

[4]java开发实习面试打卡

[3]Java开发实习面试打卡1.事务1.1.什么是数据库事务?事务是一个不可分割的数据库操作序列,也是数据库并发控制的基本单位,其执行结果必须使数据库从一种一致性状态变到另一种一致性状态.事务是逻辑上的一组操作,要么都执行... 查看详情

第九次java实习生面试题打卡(代码片段)

...了,没怎么搞学习,摸了几天鱼Spring是如何简化开发的?​基于POJO的轻量级和最小侵入性编程​通过依赖注入和面向接口实现松耦合​基于切面和惯例进行声明式编程​通过切面和模板减少样板式代码说说你对Aop的... 查看详情

[1]java开发实习面试打卡(代码片段)

1.如何实现一个IOC容器1.配置文件配置包扫描路径2.递归包扫描获取.class文件3.反射,确定需要交给IOC管理的类4.对需要注入的类进行依赖注入1.配置文件中指定需要扫描的包路径2.定义一些注解,分别表示访问控制层,业务服务层,数据... 查看详情

(java实习生)每日10道面试题打卡——java基础知识篇2(代码片段)

临近秋招,备战暑期实习,祝大家每天进步亿点点!本篇总结的是Java基础知识相关的面试题,后续会每日更新~1、请你说一下Java中的IO流?以及他们的分类和作用?IO流的分类:按照数据流的方向的不... 查看详情

[1]java开发实习面试打卡

1.如何实现一个IOC容器1.配置文件配置包扫描路径2.递归包扫描获取.class文件3.反射,确定需要交给IOC管理的类4.对需要注入的类进行依赖注入1.配置文件中指定需要扫描的包路径2.定义一些注解,分别表示访问控制层,业务服务层,数据... 查看详情

[5]java开发实习面试打卡(代码片段)

[4]Java开发实习面试打卡1.常用SQL语句数据定义语言DDL(DataDdefinitionLanguage)CREATE,DROP,ALTER主要为以上操作集对逻辑结构等有操作的,其中包括表结构,视图和索引.数据查询语言DQL(DataQueryLanguage)SELECT这个较好理解即查询操作,以select关键... 查看详情

[4]java开发实习面试打卡(代码片段)

[3]Java开发实习面试打卡1.事务1.1.什么是数据库事务?事务是一个不可分割的数据库操作序列,也是数据库并发控制的基本单位,其执行结果必须使数据库从一种一致性状态变到另一种一致性状态.事务是逻辑上的一组操作,要么都执行... 查看详情

第十次java实习生面试题打卡(代码片段)

springboot自动配置原理是什么?1、在springboot的启动过程中,有一个步骤是创建上下文,如果不记得可以看下面的代码:publicConfigurableApplicationContextrun(String...args) StopWatchstopWatch=newStopWatch(); stopWatch. 查看详情

[5]java开发实习面试打卡

[4]Java开发实习面试打卡1.常用SQL语句数据定义语言DDL(DataDdefinitionLanguage)CREATE,DROP,ALTER主要为以上操作集对逻辑结构等有操作的,其中包括表结构,视图和索引.数据查询语言DQL(DataQueryLanguage)SELECT这个较好理解即查询操作,以select关键... 查看详情

java实习生每日10道面试题打卡!(代码片段)

打卡Day28,贵在坚持,要学的还有很多,有限的时间,尽可能多学一些总没坏处!1、满二叉树、完全二叉树、平衡二叉树、红黑树、二叉搜索树的区别?参考文章:树、二叉树(完全二叉树、满二叉树)... 查看详情

(java实习生)每日10道面试题打卡——javaweb篇(代码片段)

临近秋招,备战暑期实习,祝大家每天进步亿点点!打卡Day05!本篇总结的是javaweb相关的面试题,后续会每日更新~剧透:明日更新JVM面试题,相关知识不牢固的先去补一补哦O(∩_∩)O~1、JSP和Servlet有什么区... 查看详情