面试题
文章平均质量分 89
coderyeah
Where there is a will, there is a way.
展开
-
一篇带你了解什么是事务及其原理
指作为单个逻辑工作单元(Service方法)执行的一系列操作(数据库操作),要么全部执行,要么全部不执行。事务可以看做是一组任务,通常对应了一个业务方法,这些任务要么全部成功,要么全部失败。本地事务有这么几个特征:一次事务只连接一个支持事务的数据库(一般来说都是关系型数据库)事务的执行结果保证[ACID]会用到数据库锁事务具有原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)四个特性,简称 ACID,缺一不可。原创 2022-12-11 16:47:13 · 1199 阅读 · 0 评论 -
常见中间件ES和RocketMQ的面试题
MQ的消息生成到消费主要经历三个阶段:MQ消息生产、RocketMQ Broker存储消息、消费者消息对应的消息。如下图:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8dqqseoF-1670469665756)(https://raw.githubusercontent.com/lqs-blog/picgo/main/img/20221208092750.png)]消息生产者将消息发送到RocketMQ Broker的这个过程可能出现消息丢失。生产者只要接收到返回的ack原创 2022-12-08 11:22:28 · 1232 阅读 · 0 评论 -
常见的并发线程面试题
继承Thread类:需要实现 run() 方法。通过 Thread 调用 start() 方法来启动线程。实现Runnable接口:同样也是需要实现 run() 方法,并且最后也是调用 start() 方法来启动线程。实现Runnable接口:与 Runnable 相比,Callable 可以有返回值,返回值通过 FutureTask 进行封装。使用ExecutorService、Callable、Future实现有返回结果的多线程。实现接口会更好一些,因为:Java 不支持多继承,因此继承了 Thread原创 2022-12-07 15:07:49 · 579 阅读 · 0 评论 -
JVM常见面试题
程序计数器(Program Counter Register)是一块较小的内存空间,它可以看作是当前线程所执行的字节码的行号指示器。虚拟机栈与程序计数器一样,Java虚拟机栈(Java Virtual Machine Stack)也是线程私有的,它的生命周期与线程相同。每个方法被执行的时候,Java虚拟机都会同步创建一个栈帧(Stack Frame)用于存储局部变量表、操作数栈、动态连接、方法出口等信息。每一个方法被调用直至执行完毕的过程,就对应着一个栈帧在虚拟机栈中从入栈到出栈的过程。本地方原创 2022-12-06 15:49:07 · 454 阅读 · 1 评论 -
常见数据库优化面试题
在 SQL 语句前加上 explain,结果中的 key 就是实际用到的索引产生场景锁表通常发生在 DML( insert 、update 、delete )语句中,例如:程序 A 对 A 表的 a 数据 进行修改,修改过程中产生错误,没有 commit 也没有 rollback ,这个时候程序 B 对 A 表的 a 数据进行修改,会产生资源正忙的异常,也就是锁表。DDL也会引发锁表,例如在 MySql 操作一张大表,利用 alter 语句修改或新增字段的时候,恰巧有一个长事务(包括读)在操作此表,会触发修原创 2022-12-05 20:01:10 · 7552 阅读 · 1 评论 -
java面试题大全必备神器
哈希冲突,也叫哈希碰撞,指的是两个不同的值,计算出了相同的hash,也就是两个不同的数据计算出同一个下标,通常解决方案有:拉链法,把哈希碰撞的元素指向一个链表开放寻址法,把产生冲突的哈希值作为值,再进行哈希运算,直到不冲突再散列法,就是换一种哈希算法重来一次建立公共溢出区,把哈希表分为基本表和溢出表,将产生哈希冲突的元素移到溢出表。原创 2022-10-20 09:28:17 · 493 阅读 · 0 评论