2023面试题整理

  1. mysql 唯一索引和主键索引:主键索引不能为null,唯一索引可以为null;主键索引含有唯一索引,唯一索引并不一定是主键;一张表只能由一个主键,但可以由多个唯一索引;从查询效率上看,主键索引查询最快,是一种聚簇索引,数据行存放在主键索引的叶子节点上。
  2. Redis 数据结构,用法:
  3. redis怎么实现节点加锁;
  4. redis hash使用注意什么;
  5. redis 怎么实现list数据的热点更新;
  6. Gateway实现原理;
  7. springboot核心注解;
  8. Autowired和Resource区别,JDK升级对以上的影响;@Autowired是springfamework的注解,而@Resource是JDK自带的注解;@Autowird注解默认通过byType方式注入,而@Resource注解默认通过byName方式注入;作用范围不同:@Autowired 字段,setter方法,构造器;而@Resource字段,setter方法。JDK的升级对@Resource有影响,例如JDK11中无法使用@Resource注解,这个方法被移除了。添加一下的依赖就可以<dependency>
            <groupId>javax.annotation</groupId>
            <artifactId>javax.annotation-api</artifactId>
            <version>1.3.2</version>
        </dependency>
  9. springboot 启动流程;
  10. AQS原理
  11. Synchronized 原理;
  12. JUC;
  13. spring IOC和AOP
  14. spring 事务原理:spring提供了两种事务,一种是编程式事务,由用户自己通过代码来控制事务处理的逻辑,还有一种是声明式事务。通过@Transactional注解来实现。一般情况下很少会使用编程式事务的,更多的是通过添加@Transactional注解来进行实现的,当添加此注解后事务的自动功能就会关闭,有spring框架来帮助进行控制。                                             事务操作书AOP的一个核心体现,当添加一个@Transactional注解后,spring会基于这个类生产一个代理对象,会将这个代理对象作为bean,当使用这个代理对象的方法的时候,如果有事务处理,那么会把事务的自动提交给关闭,然后执行具体的业务逻辑,如果执行逻辑没有异常,那么代理逻辑就会直接提交,出现异常情况,直接进行回滚操作。transactionInterceptor
  15. kafka 架构设计
  16. Mysql聚簇索引和非聚簇索引:索引存放在磁盘,innodb 引擎存放在ibd文件中,frm存放的是表结构;myisam frm存放的表结构,MYD存放的是数据,MYI存放的是索引;innodb存储引擎在进行数据插入的时候,数据必须要跟索引存放在一起,如果有主键就使用主键,没有主键就使用唯一键,没有唯一键就使用6rowid,因此跟数据绑定在一起的就是聚簇索引,而为了避免数据冗余存储,其他的索引的叶子节点中存储的都是聚簇索引的key值,因此innodb既有聚簇索引也有非聚簇索引,而myisam中只有非聚簇索引。
  17. mysql的主从复制:数据可以从一个mysql数据库服务器主节点复制到一个或多个从节点。mysql默认采用的是异步复制方式,这样从节点不用一直访问主服务器来更新自己的数据,数据的更新可以在远程连接上进行。
  18. 怎么处理mysql慢查询:开启慢查询日志,(set global slow_query_log=‘ON’;);分析是否加载额外的数据;分析语句的执行计划,查看索引使用情况;执行计划已经优化,可能考虑表的数据量是否太大,考虑纵向横向分表,我们项目中采用的横向分表,按数据量分的。
  19. mybatis的优缺点优点:jdbc相比,减少了50%的代码量;很好的兼容数据库;提供了很多第三方插件(分页插件pagehelper,逆向工程);能够很好的和spring集成;mybatis很灵活,不会对应用程序有强影响;支持动态编写sql;提供映射标签,对象和数据库的orm映射;缺点:sql语句的编写工作量较大,尤其是字段多,关联表多时,对开发人员的编写sql语句功底有一定要求;sql语句依赖于数据库,导致数据库移植性差,不能随便更换数据库。
  20. mybatis #{} 和${} 区别:#{}是预编译处理,${}是字符串替换;mybatis在处理#{}时,会将sql语句中的#{}替换为?,调用PreparedStatment的set方法来赋值;mybatis在处理${}时,把${}替换成变量的值;使用#{}可以有效的防止sql注入,提高系统的安全性。
  21. Java中异常分为哪两种? (1)Error(错误) :java虚拟机无法解决的严重问题。如:JVM系统内部错误、资源耗尽等,比如:StackOverflowError(栈溢出)和OMM(out of memory),Error是严重错误,程序会崩溃(2)Exception:Exception:其他因编程错误或偶然的外在因素导致的一般性问题,Exception分为两类:(1)运行时异常(编辑器检查不出来)(2)编译时异常(编译时编辑检查出的异常)
  22. 异常处理机制有哪几种?: try , catch , finally 抛出异常:throw, throws 捕捉异常。
  23. 如何自定义一个异常?自定义一个类,这个类集成Exception,重写toString方法,在这个方法内定义异常。
  24. try catch fifinally, try里有return: finally还执行么? 执行,不管catch中是否有异常,finally都会执行,在finally是在return运行表达式之后执行的,首先会把运行的结果保存起来,在执行finally方法之后 返回return运算的结果。finally中不能含有return表达式,否则程序会提前推出;
  25. Exepti on与Error包结构:
  26. Thow与thorws区别?位置不同:hrows用在函数上,后边跟的是异常类,可以跟多个异常类。throw用在函数内,后面跟的是异常对象。功能不同:①throws用来声明异常,让调用者只知道该功能可能出现的问题,可以给出预先得处理方式。throw抛出具体的问题对象,执行到throw。功能就已经结束了跳转到调用者,并将具体的问题对象抛给调用者。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值