首页 > 其他分享 >面试题总结(持续更新中······)

面试题总结(持续更新中······)

时间:2022-09-22 23:34:44浏览次数:168  
标签:总结 面试题 范式 Spring 事务 更新 索引 Interceptor 主键

目录

一. Java相关

1.1 多线程相关

1.2 JUC相关

1.3JVM相关

二.框架相关

2.1 Spring

Interceptor 与 Filter 的区别

  • 相同点

    • Spring 的Interceptor 与 Servlet 的 Filter 有相似之处,比如二者都是 AOP 编程思想的体现,
      都能实现权限检查、日志记录等。
  • 不同点:

    • 使用范围不同: Filter 是 Servlet 规范规定的,只能用于 Web 程序中。而Interceptor 既
      可以用于 Web 程序,也可以用于 Application 、 Swing 程序中。

    • 实现规范不同: Filter 是在 Servlet 规范中定义的,是 Servlet 容器支持的。而Interceptor 是
      在 Spring 容器内的,是 Spring 框架支持的。

    • 使用的资源不同:同其他的代码块一样,Interceptor 也是一个 Spring 的组件,归 Spring 管理,配置在 Spring 文件中,因此能使用 Spring 里的任何资源、对象,例如 Service 对象、数据源、事务管理等,通过 loC 注入到Interceptor 即可;而 Filter 则不能。

    • 作用域深度不同: Filter 在只在 Servlet 前后处理器前后起作用。而Interceptor 能够深入到方法前后、异常
      抛出前后等,因此Interceptor 的使用具有更大的弹性。所以在 Spring 构架的程序中,要优先使用Interceptor 。

三. 中间件相关

3.1 Redis

四. MySQL相关

1、事务

1.1、事务的特性?

事务包括四大特性:ACID

  • A: 原子性 Atomicity(要么都成功!要么都失败!)

    • 一个事务是一个单独的个体,不可拆分,有一个指令执行失败,事务进行回滚到执行整个指令执行之前的状态
  • C: 一致性:事务必须是保证多条DML语句同时成功或者同时失败 Consistenty

    • 事务执行前后需要保证数据完整性(准确性和可靠性),像主键约束、not null 等等
  • I: 隔离性 Isolation

    • 相对于并发访问时满足隔离性,事务A与事务B之间具有隔离
  • D: 持久性 Durability

    • 事务执行完毕之后对数据的改变是永久的,即存储在磁盘中

1.2、关于事务之间的隔离性

链接:Immersive Reader (cnblogs.com)

MySQL数据库自动提交事务 :使用 start transaction 关闭自动提交机制。

MySQL默认级别:第三级别:可重复读

事务隔离性存在隔离级别,理论上隔离级别包括四个:

  • 第一级别:读未提交

    • 对方事务还没有提交,我们当前事务可以读取到对方未提交的数据,读未提交 存在脏读(Dirty Read)现象,表示读到了脏的数据
  • 第二级别:读已提交

    • 解决脏读--->读已提交导致不可重复读
    • 不可重复读:一次事务相同查询返回不同的数据
  • 第三级别:可重复读

    • 解决不可重复读--->可重复读(导致幻读
    • 开始读取数据(事务开启)时,不再允许update操作,但是不能杜绝insert操作
    • 使用了行级锁不可重复读:一次事务相同查询返回不同的数据
  • 第四级别:序列化读/串行化读

    • 使用表级锁,避免了所有问题,事务A与事务B串行,而不并发。
    • 解决了所有问题。效率低。需要事务排队。
  • 总结

    • 幻读和不可重复读:幻读和不可重复读都是指的一个事务范围内的操作受到其他事务的影响了。
    • 只不过幻读是重点在插入和删除,不可重复读重点在修改。

2、索引

2.1、索引的分类?

  • 单一索引:给单个字段添加索引
  • 复合索引:给多个字段联合起来添加1个索引
  • 主键索引:主键上会自动添加索引
  • 唯一索引:有unique约束的字段上会自动添加索引
  • ····

2.2、索引什么时候失效?

select username from user where usename like '%zs%';

模糊查询的时候 使用了通配符 % 这个时候是失效的

3、数据库设计三范式

3.1、什么是设计范式?

设计表的依据。按照这个三范式设计的表不会出现数据冗余

3.2、三范式都是哪些?

  • 第一范式:任何一张表都应该有主键,并且每一个字段原子性不可再分

  • 第二范式:建立在第一范式的基础上,所有的非主键字段完全依赖主键,不产生部分依赖。

    多对多?三张表,关系表两个外键

  • 第三范式:建立在第一范式的基础之上,所有的非主键字段直接依赖主键,不能产生传递依赖。

    一对多?两张表,多的表加外键

标签:总结,面试题,范式,Spring,事务,更新,索引,Interceptor,主键
From: https://www.cnblogs.com/malongfeistudy/p/16721204.html

相关文章

  • 第四周学习总结
    学期(2022-2023)学号20221426《计算机基础与程序设计》第四周学习总结<班级的链接>(如[2022-2023-1-计算机基础与程序设计](https://edu.cnblogs.com/campus/besti/2022-202......
  • 2022-2023-1 20221307 《计算机基础与程序设计》 第四周学习总结
    2022-2023-120221307《计算机基础与程序设计》第四周学习总结 班级链接:首页-2022-2023-1-计算机基础与程序设计-北京电子科技学院-班级博客-博客园(cnblog......
  • 知识总结一
    gitrebaserxx1.多个commit合并2.变基把提交的基改变  端口怎么看,tcpudp怎么看,不能用怎么查(占用,防火墙)lsof-i:端口号可以看端口(listopenfiles)netstat-t......
  • 20220922测试总结
    多做,视野才开阔,不要老是想着水题!P7800[COCI2015-2016#6]PAROVI原题链接题目分析一来可以直接暴力求解,硬性枚举是否选择这些线段,显然必须优化。我们先预处理每个二元......
  • 前端面试总结05-异步
    1.单线程和异步:(1:JS是单线程语言,只能同时做一件事(2:浏览器和Nodejs已支持JS启动进程,如WebWorker(3:JS和DOM渲染共用同一个线程,因为JS可修改DOM结构2.单线程与异步:(1:遇到等......
  • 我们总结了弹性伸缩的五个条件与六个教训
    简介: 这篇文章,我们将应用企业级分布式应用服务-EDAS的客户在进行系统架构设计时,在弹性场景下遇到的点滴做了一个系统的梳理,总结为五个条件和六个教训分享给大家。......
  • 第二十章 Redis面试总结
    一、Redis持久化1.RDB与AOF的区别RDB可以理解为是一种全量数据更新机制,AOF可以理解为是一种增量的更新机制,AOF重写可以理解为是一种全量+增量的更新机制(第一次是全量,后面......
  • Maven 基础知识总结
    Maven的基础官网地址官网:http://maven.apache.org/Maven定义定义:Maven是一个项目管理和构建的工具,它基于项目对象模型(POM)的概念,通过一小段描述信息来管理项目的......
  • 基于深度强化学习的交通信号灯控制从入门到放弃(持续更新)
    目录理论书籍博客代码论文理论书籍博客MARL多智能体强化学习分享KDDCUP2021参赛感悟及论文解读代码论文......
  • 数组常用方法总结
    判断数组中是否存在某个值vararrData=['html','css','javascript'];varvalue='css';console.log(arrData.includes(value));console.log(arrData.some(ite......