面试复习2024/12/30

java基础篇:

我把面试问烂了的⭐Java基础篇⭐总结了一下(带答案,万字总结,精心打磨,建议收藏)-优快云博客

1、String、StringBuffer、StringBuilder的区别

String是用final修饰的不可变对象,可以理解为常量,线程安全,对String进行改变每次都会新生成一个String对象,然后把指针指向新对象。

StringBuffer线程安全,StringBuilder线程不安全

多线程篇:

多线程(看这一篇就够了,超详细,满满的干货)_csdn线程-优快云博客

1、线程是什么

⼀个线程就是⼀个 “执行流”. 每个线程之间都可以按照顺序执行自己的代码. 多个线程之间 “同时” 执行着多份代码,main()⼀般被称为主线程(Main Thread)

2、相比进程的优势:
  • 创建线程比创建进程更快.

  • 销毁线程比销毁进程更快.

  • 调度线程比调度进程更快.

3、创建线程:
  • 继承Thread类

  • 实现Runnable接口

  • 线程池

设计模式篇:

23 种设计模式详解(全23种)_23种设计模式-优快云博客

总体来说设计模式分为三大类:

(1)创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。

(2)结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。

(3)行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。

springCloud篇:

【SpringCloud】最全最细!微服务框架_springcloud微服务架构-优快云博客

1、服务发现与注册:

服务实例向注册中心注册自身,并定期发送心跳保持注册状态

2、分布式架构的优缺点:

优点:

降低服务耦合、有利于升级拓展

缺点:

架构复杂,运维部署难度高

3、nacos与eureka的区别

(1)Nacos与eureka的共同点
   都支持服务注册和服务拉取
   都支持服务提供者心跳方式做健康检测
(2)Nacos与Eureka的区别
   Nacos支持服务端主动检测提供者状态:临时实例采用心跳模式,非临时实例采用主动检测模式
   临时实例心跳不正常会被剔除,非临时实例则不会被剔除
   Nacos支持服务列表变更的消息推送模式,服务列表更新更及时
   Nacos集群默认采用AP方式,当集群中存在非临时实例时,采用CP模式 ; Eureka采用AP方式

mysql篇:

MySQL 有这一篇就够(呕心狂敲37k字,只为博君一点赞!!!)_mysql有这一篇幅就够了-优快云博客

底层原理分为6个步骤:

1、连接:客户端像mysql发送请求,与connector交互,连接池认证处理

2、缓存:服务器首先检查查询缓存,如果命中缓存,则返回缓存中的结果,否则进入下一阶段

3、解析:服务器进行sql解析(语法、词法)、预处理

4、优化:由优化器生成最优的执行计划

5、执行:mysql根据执行计划调存储引擎的api接口

6、结果:将查询结果返回给客户端,并缓存查询结果

mvcc篇:

【MySQL笔记】正确的理解MySQL的MVCC及实现原理_mysqlmvcc实现原理-优快云博客

是一种在数据库系统中用于实现并发控制的技术,允许多个事务并发的修改和读取数据,而不会发生数据冲突和不一致的问题。核心是保存数据的多个版本,这样不同的数据可以读取或修改不同的数据版本,从而避免了锁机制带来的性能瓶颈。

实现原理:

1、版本号和时间戳:每个数据都有自己的版本号,标识其创建时间(包括读版本号、写版本号)

2、数据版本管理:

  • 每一行数据都有多个版本,每个版本有自己的版本号。
  • 当一个事务开始时,它会读取数据的当前版本,并在此基础上进行修改。
  • 修改后的数据会被保存为一个新的版本。

3、读写分离

快照读:不会阻塞写操作

当前读:可能会阻塞写操作,因为需要确保读取的是最新提交的数据

4、垃圾回收

无效版本清理:旧的数据版本会被标记为无效,并在适当的时候进行清理

sql调化篇:

【数据库调优】屡试不爽的面试连环combo-优快云博客

1、使用索引:为经常用于查询条件的列添加索引,减少全表扫描

2、优化join操作:确保join操作中的连接条件有合适的索引,避免笛卡尔积

3、减少子查询:尽量将子查询转为join操作,减少嵌套查询的开销

4、选择合适的数据类型,减少存储空间和i/o开销

5、优化排序和分组:使用合适的索引,减少排序和分组开销

6、避免join太多张表,如果join的表太多,拆分为多条sql

索引篇:

什么是 MySQL 索引?_**什么是mysql索引?-优快云博客

什么是索引?

类似目录,key-value,底层是b+tree,优势,层级少,查询速度快,非叶子节点只存key,叶子节点存值,相同内存下比btree存更多的索引

哪些情况不走索引:

1、索引参与计算

2、使用like的时候,通配符放在最前面或中间

3、列的数据类型与值不同,例如列为字符串或字符,用整数找 不走索引

4、数据太少时,mysql评估使用全表扫描要比索引快

5、条件中有or关键字,必须所有条件都建索引,否则不走索引

6、正则表达式不走索引

redis篇:

Redis深度解析:特性、缓存策略、持久化与集群实战-优快云博客

JVM篇:

一篇文章掌握整个JVM,JVM超详细解析!!!-优快云博客

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值