接口

0.01访问

  • 接口
  • 在这里插入图片描述
  • 继承接口
  • 在这里插入图片描述
  • 利用多态的形式使用接口
  • 在这里插入图片描述
  • 初级:
    https://www.cnblogs.com/kevingrace/p/6710136.html
  1. 介绍一下你在项目中所做的模块。
  2. 单点登录的原理,你们jwt中包含哪些信息?
  3. Feign客户端的远程调用是怎么实现的?协议是什么?Hystrics熔断保护的实现原理?
  4. Redis的有哪些模式?
  5. 项目中的搜索功能是怎么实现的?ES+kibana ik分词
  6. MQ怎么知道消息被指定的消费者消费?怎么使不同的生产者生产的消息被不同的消费者消费?
  7. 引入第三方登录时,怎么使得你自己的token和第三方的token关联起来?
  8. 讲一下为什么JVM要分为堆、方法区等?原理是什么?
  9. GC算法都有哪些?他们之间的区别是什么?各自的适用场景?
  10. 讲一下Servlet是什么东西?
  11. Spring和springboot的区别?
  12. Redis的击穿、雪崩和穿透讲一下。
    https://blog.csdn.net/lala12d/article/details/82777742
    1、String有最大长度限制吗?
    2、mysql对哪些建立索引?调优
    3、mq中一条消息出现了异常,怎么处理
    4、spring有哪些常用注解?(我一紧张说了springboot的注解)
    5、elasticsearch的主从、字符串类型是哪个、nested类型是什么、聚合怎么写、查询某个id的语句、创建es的索引、时间类型怎么存的(我说了个utc…他说utc的话你的时间得+8,我蒙了)
    6、int a = 1;jvm如何取得a的值
    7、知道哪些设计模式?
    8、mq1000个消息始终不被消费怎么处理(我说不处理…她笑了)
    9、捕获异常在catch块里一定会进入finally吗?catch里能return吗?catch里return还会进finally吗?在try里return呢是什么情况?
    10、jvm调优调的哪些参数?我说初始堆大小和最大堆大小一样,问这样有什么好处?在哪里写这些参数
    11、redis主从原理
    12、知道哪些锁?公平锁和非公平锁区别?可重入锁是什么?我说是sychronized里还有个synchronized

中级:
jvm内存原型,
gc机制和原理
gc分为哪两种?
mincg和fullcg有什么区别?
什么时候触发fullgc?
分别采用什么算法?
jvm有几种classloader,为什么有多种

什么是双亲委派
介绍运作过程?
双亲委派好处
什么情况需要破坏双亲委派

jvm常见调油方法
可以具体到那些参数,调成什么值

hashmap:
hashmap数据结构是什么,底层怎么实现
hashmap有什么并发问题
有可能还会拓展到ConcurrentHashMap

了解 LinkedHashmap应用吗

红黑树的实现原理和应用场景

多线程:
为什么需要线程池
创建线程池的方式有哪些
创建线程池的方式有哪些

线程的生命周期:
什么时候出现线程僵死

什么是线程安全
如何去实现线程安全

线程池的几个重要参数
如何合理配置线程池大小?

线程池的实现原理和线程的调度过程

threadLocal,volatie的实现原理和应用场景

threadLocal会出现OOM的情况,为什么

voliatile,sychronized区别
sychronized锁粒度
模拟死锁场景
原子性和可见性

spring有哪些优势?

有没有读过spring源码?有没有进行解析进行再进行封装?

springboot比spring做了哪些改进?
spring5比spring4做了哪些改进?

分布式技术栈
你有写过分布式的业务吗/
分布式是怎么存储的?
你觉得分布式会遇到什么问题

你了解几种消息中间件产品
各产品优缺点介绍

消息的中间件如何保证消息的一致性和进行消息的重试机制

redis为什么这么快?
redis采用多线程会有哪些问题

Redis分布式锁操作的原子性,Reids内部是如何实现的?

springcLoud对比duboo场景下使用springcloud

数据库锁机制的介绍:
在并发访问的情况下,数据库中的数据是一种共享的资源。为了处理并发访问过程中出现的问题,并且合理的控制资源的访问规则,就设计出了锁机制。

根据加锁的范围,MySQL 里面的锁大致可以分成全局锁、表级锁和行锁三类。
行锁:排他锁,共享锁以及更新锁;
表级锁:表锁,元数据锁MDL
从程序的角度上,又可以分为悲观锁和乐观锁;
行锁,表锁,共享锁,排他锁
全局锁就是对整个数据库实例加锁. MySQL 提供了一个加全局读锁的方法,命令是 Flush tables with read lock (FTWRL)。当你需要让整个库处于只读状态的时候,可以使用这个命令,之后其他线程的以下语句会被阻塞:数据更新语句(数据的增删改)、数据定义语句(包括建表、修改表结构等)和更新类事务的提交语句。
全局锁的典型使用场景是,做全库逻辑备份。也就是把整库每个表都 select 出来存成文本。
表锁:对一个表进行加锁,允许当前线程对表进行读或写操作,其他线程无法对表进行操作。
当对表加读锁后,自己也不能对其进行修改;自己和其他线程只能读取该表;
当对某个表执加上写锁后(lock table t1 write),该线程可以对这个表进行读写,其他线程对该表的读和写都受到阻塞;
加锁命令: lock tables 表名 read/write
释放锁的命令:unlock tables;
当还没有出现更细粒度的锁时,表锁是常用的处理并发问题的方式
对某个表加表锁,不仅影响其他线程对该表的对应操作,也会影响当前线程对这张表的操作,
元数据锁:MDL 的作用是,保证读写的正确性。你可以想象一下,如果一个查询正在遍历一个表中的数据,而执行期间另一个线程对这个表结构做变更,删了一列,那么查询线程拿到的结果跟表结构对不上,肯定是不行的。

当对一个表做增删改查操作的时候,加 MDL 读锁;当要对表做结构变更操作的时候,加 MDL 写锁。
行级锁包括共享锁、排他锁和更新锁。
共享锁,简称S锁(Shared Lock)。共享锁锁定的资源可以被该用户读取,但其它用户不能修改它。当一个事务执行select语句时,数据库系统会为这个事务分配一把共享锁,来锁定被查询的数据。在默认情况下,数据被读取后,数据库系统立即解除共享锁。
排他锁,也叫独占锁,简称X锁(Exclusive Lock)。独占锁锁定的资源只允许进行锁定操作的程序使用,其它任何对它的操作均不会被接受。执行数据更新命令,即INSERT、UPDATE 或DELETE 命令时,MySQL 会自动使用独占锁。但当对象上有其它锁存在时,无法对其加独占锁。独占锁一直到事务结束才能被释放
 乐观锁的业务场景以及实现方式
乐观锁:数据只有我在用,我先尽管用,最后发现不行时,再回滚
悲观锁:生怕数据被其他人更新掉,所以在操作时,先对数据进行锁定。
 乐观锁:每次获取数据的时候,都不会担心数据被修改,所以每次获取数据的时候都不会进行加锁,但是在更新数据的时候需要判断该数据是否被别人修改过。如果数据被其他线程修改,则不进行数据更新,如果数据没有被其他线程修改,则进行数据更新。由于数据没有进行加锁,期间该数据可以被其他线程进行读写操作。
(理解:乐观锁是一种思想,具体实现是,表中有一个版本字段,第一次读的时候,获取到这个字段。处理完业务逻辑开始更新的时候,需要再次查看该字段的值是否和第一次的一样。如果一样更新,反之拒绝。之所以叫乐观,因为这个模式没有从数据库加锁。)
 实现方式:
版本号机制: 一般是在数据表中加上一个版本号version字段,表示数据被修改的次数,当数据被修改时,version值会加一。当线程A要更新数据值时,在读取数据的同时也会读取version值,在提交更新时,若刚才读到的version值与当前数据库中的version值相等时才更新,否则重试更新操作,直到更新成功。

 适用场景
悲观:并发量很高的情况下
如果并发量很高的话适用乐观,则会有需要事务需要回滚,、操作失败。
分布式事务的理解,常见的解决方案有哪些,什么是二阶段提交

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值