
JAVA后端高级工程师面试题专栏
文章平均质量分 69
RobertTeacher
As long as you dare to be yourself, someone will fall in love with you.
展开
-
分布式事务XA协议2PC、3PC流程解析
分布式事务XA协议2PC、3PC、TCC流程解析分布式事务XA协议2PC、3PC、TCC流程解析分布式事务XA协议2PC、3PC、TCC流程解析分布式事务XA协议2PC、3PC、TCC流程解析XA协议两阶段提交1、X/OpenDTP 事务模型2、XA协议3、JTA4、AP5、RM6、TM7、事务模型总结提示:以下是本篇文章正文内容,下面案例可供参考XA协议两阶段提交1、X/OpenDTP 事务模型是X/Open 这个组织定义的一套分布式事务的标准,也就是定义了规范和 API 接口,由各个厂原创 2021-10-04 12:01:00 · 750 阅读 · 0 评论 -
分布式缓存Redis——面试专题
分布式缓存Redis——面试专题分布式缓存Redis——面试专题分布式缓存Redis——面试专题分布式缓存Redis——面试专题前言一、为什么用redis而不用memcached二、你用过Redis哪些数据结构? 说下这些结构的使用场景有哪些Stringhashlistset三、redis是单线程,为什么这么快?四、redis有哪些持久化方式,分别说下他们的区别?AOFRDB五、缓存的淘汰策略有没看过缓存框架的源码,缓存空间不够怎么办?能分别说下FIFO、LRU、LFU这些策略不FIFOLRULFU六原创 2021-09-24 20:23:39 · 5906 阅读 · 0 评论 -
Spring框架——面试专题
Spring框架——面试专题Spring框架——面试专题Spring框架——面试专题Spring框架——面试专题前言一、Spring框架的DI和IOCIOCDI二、Spring里面 bean的scope作用域有哪些,能否解释下singleton:prototype:其他少用 (作用域 只在 WebApplicationContext)三、 AOP面向切面编程1、AOP和使用场景2、AOP里面常见的概念横切关注点通知 Advice连接点 JointPoint切入点 Pointcut切面 Aspect目标原创 2021-09-24 20:00:32 · 1355 阅读 · 0 评论 -
HTTP协议——面试专题
HTTP协议——面试专题HTTP协议——面试专题HTTP协议——面试专题HTTP协议——面试专题前言一、http状态码和method知识点考查1、常见的Http Method有哪些,使用场景分别是?http1.0定义了三种:http1.1定义了六种2、常见http状态码解析1XX:2XX:3XX:4XX:5XX:二、 http协议无状态解决方法1、Cookie和Session的区别和联系2、你们公司C端业务登录的是怎样做的(业务量大,集群部署)三、 分布式业务场景的常见登录解决方案JWT1、JWT定义原创 2021-09-24 16:14:14 · 1266 阅读 · 0 评论 -
生产环境数据库性能监控和优化面试环节——面试专题
生产环境数据库性能监控和优化面试环节——面试专题生产环境数据库性能监控和优化面试环节——面试专题生产环境数据库性能监控和优化面试环节——面试专题生产环境数据库性能监控和优化面试环节——面试专题前言一、线上数据库监控业务性能数据安全二、MySQL常见日志redo 重做日志undo 回滚日志errorlog 错误日志slow query log 慢查询日志binlog 二进制日志relay log 中继日志general log 普通日志三、数据库主从,原理流程1、你们数据库是单点的吗?有没做多节点优化原创 2021-09-24 12:11:42 · 1573 阅读 · 0 评论 -
数据库设计查询和上线——面试专题
数据库设计查询和上线——面试专题数据库设计查询和上线——面试专题数据库设计查询和上线——面试专题前言一、数据库查询指令的执行顺序二、设计数据库的时候相似类型的字段区分1、char和varcharvarchar(len) char(len) len存储的是字符还是字节MySQL中的varchar和char有什么区别,应该怎么选择2、datetime和timestamp三、针对大数据量sql分页优化思路1、后端、前端缓存2、使用ElasticSearch分页搜索3、合理使用 mysql 查询缓存,覆盖索引进原创 2021-09-23 22:13:55 · 1436 阅读 · 0 评论 -
MySQL——面试专题
MySQL——面试专题MySQL——面试专题MySQL——面试专题MySQL——面试专题前言一、事务的四大特性ACID原子性Atomicity:一致性Consistency:隔离性Isolation:持久性Durability:二、脏读、不可重复读、幻读脏读:不可重复读:幻读:幻读和不可重复读的区别:三、常见的隔离级别(由低到高)Read Uncommitted(未提交读,读取未提交内容)Read Committed(提交读,读取提交内容)Repeatable Read(可重复读,mysql默认的事务原创 2021-09-23 17:19:05 · 1877 阅读 · 0 评论 -
消息队列——面试知识专题
消息队列消息队列消息队列——面试专题消息队列——面试知识专题消息队列前言一、消息队列的作用,常见的消息队列区别和应用场景1、消息队列2、常见的消息队列Apache ActiveMQKafkaRabbitMQRocketMQ二、消息队列发送的几种方式以及使用场景SYNC 同步发送ASYNC 异步发送ONEWAY 无需要等待响应三、延迟消息以及使用场景延迟消息使用场景四、顺序消息顺序发布顺序消费五、消息队列重复消费幂等性避免重复消费的几种方式Redis的setNX()redis的 Incr 原子操作数据原创 2021-09-22 14:24:18 · 2288 阅读 · 0 评论 -
并发操作之——ThreadPoolExecutor核心参数
并发操作并发操作之——ThreadPoolExecutor核心参数。并发操作之——ThreadPoolExecutor核心参数并发操作一、ThreadPoolExecutor代码二、ThreadPoolExecutor核心参数1、corePoolSize2、maximumPoolSize3、keepAliveTime4、unit5、workQueue6、threadFactory7、handler总结一、ThreadPoolExecutor代码ThreadPoolExecutor代码:pub原创 2021-09-17 17:22:31 · 3383 阅读 · 0 评论 -
并发操作之——线程池遇到的坑
并发操作并发操作之——线程池遇到的坑.并发操作之——线程池遇到的坑并发操作一、线程池不允许使用 Executors 去创建,要通过 ThreadPoolExecutor的方式原因二、常见的线程池问题1、newFixedThreadPool和newSingleThreadExecutor:2、newScheduledThreadPool和newCachedThreadPool:总结一、线程池不允许使用 Executors 去创建,要通过 ThreadPoolExecutor的方式原因Execut原创 2021-09-17 16:03:12 · 3430 阅读 · 0 评论 -
并发操作之——并发编程实践
并发操作并发操作之——BlockingQueue.并发操作之——BlockingQueue并发操作一、编程里面解决生产消费者模型的几种方式1、wait() / notify()方法2、await() / signal()方法3、Semaphore信号量4、BlockingQueue阻塞队列二、synchronized和ReenTrantLock的使用场景1、synchronized2、ReenTrantLock总结一、编程里面解决生产消费者模型的几种方式核心:要保证生产者不会在缓冲区满时放入数原创 2021-09-17 15:35:54 · 3399 阅读 · 0 评论 -
并发操作之——ConcurrentLinkedQueue
并发操作并发操作之——ConcurrentLinkedQueue.并发操作之——ConcurrentLinkedQueue并发操作一、ConcurrentLinkedQueue二、ConcurrentQueue怎么实现线程安全的1、底层结构2、无锁操作3、for循环插入总结一、ConcurrentLinkedQueue非阻塞队列ConcurrentLinkedQueue是基于链表实现的无界线程安全队列,采用FIFO进行排序二、ConcurrentQueue怎么实现线程安全的保证线程安全的三原创 2021-09-17 15:04:18 · 3488 阅读 · 0 评论 -
并发操作之——BlockingQueue
并发操作并发操作之——BlockingQueue.并发操作之——BlockingQueue并发操作一、编程里面解决生产消费者模型的几种方式1、wait() / notify()方法2、await() / signal()方法3、Semaphore信号量4、BlockingQueue阻塞队列二、BlockingQueue和常见的阻塞队列BlockingQueue:1、ArrayBlockingQueue2、LinkedBlockingQueue3、PriorityBlockingQueue:4、Dela原创 2021-09-16 19:44:51 · 3657 阅读 · 0 评论 -
并发操作之——ReentrantReadWriteLock
并发操作并发操作之——ReentrantReadWriteLock.并发操作之——ReentrantReadWriteLock并发操作并发操作之——ReentrantReadWriteLock一、ReentrantReadWriteLock1、读写锁2、公平和非公平锁3、锁降级4、重入5、核心二、ReentrantReadWriteLock和ReenTrantLock的区别1、synchronized2、ReenTrantLock总结并发操作之——ReentrantReadWriteLock高原创 2021-09-16 17:02:56 · 3517 阅读 · 0 评论 -
并发操作之——ReenTrantLock和synchronized的区别
并发操作并发操作之——ReenTrantLock和synchronized的区别.并发操作之——ReenTrantLock和synchronized的区别并发操作Synchronized和ReenTrantLock的区别和使用场景一、synchronized和ReenTrantLock的区别?1、synchronized2、ReenTrantLock二、synchronized和ReenTrantLock的使用场景1、synchronized2、ReenTrantLock总结Synchroniz原创 2021-09-15 14:23:03 · 4396 阅读 · 0 评论 -
并发操作之——公平锁和非公平锁的区别以及ReenTrantLock源码
并发操作并发操作之——公平锁和非公平锁的区别并发操作之——公平锁和非公平锁的区别并发操作一、公平锁和非公平锁的区别二、ReenTrantLock源码总结一、公平锁和非公平锁的区别公平锁是先入先出原则,先申请的先加锁,轮流加锁非公平锁是每个线程都去抢锁,谁抢到锁,谁就加锁。二、ReenTrantLock源码非公平锁 static final class NonfairSync extends Sync { private static final long ser原创 2021-09-11 18:27:00 · 3734 阅读 · 0 评论 -
并发操作之——AQS
并发操作并发操作之——AQS并发操作之——AQS并发操作一、AQS1、AQS介绍2、acquire(int arg) 源码讲解,好比加锁lock操作二、AQS同步方式,实现同步器一般要覆盖哪个方法?总结一、AQS1、AQS介绍AQS的全称为(AbstractQueuedSynchronizer),这个类在java.util.concurrent.locks包下面。它是一个Java提高的底层同步工具类,比如CountDownLatch、ReentrantLock,Semaphore,Reent原创 2021-09-11 10:56:47 · 3700 阅读 · 0 评论 -
并发操作之——CAS
并发操作并发操作之——CAS并发操作之——CAS并发操作一、CAS二、CAS存在的问题1、CPU资源占用问题2、ABA问题一、CASCompare And Swap即比较再交换,是实现并发应用到的一种技术底层通过Unsafe类实现原子性操作操作包含三个操作数 —— 内存地址(V)、预期原值(A)和新值(B)。如果内存位置的值与预期原值相匹配,那么处理器会自动将该位置值更新为新值 ,若果在第一轮循环中,a线程获取地址里面的值被b线程修改了,那么a线程需要自旋,到下次循环才有可能机会执行。原创 2021-09-10 13:26:06 · 3852 阅读 · 0 评论 -
并发操作之——synchronized
并发操作并发操作之——synchronized并发操作之——synchronized并发操作一、sychronized1、方法加锁:2、代码块加锁:二、JDK1.6后的优化部分1、JVM对象在内存中的组成2、对象头模型一、sychronizedsynchronized是解决线程安全的问题,常用在 同步普通方法、静态方法、代码块 中非公平、可重入每个对象有一个锁和一个等待队列,锁只能被一个线程持有,其他需要锁的线程需要阻塞等待。锁被释放后,对象会从队列中取出一个并唤醒,唤醒哪个线程是原创 2021-09-08 16:03:38 · 4534 阅读 · 0 评论 -
并发操作之——手写单线程可重入锁实战
并发操作之——手写单线程可重入锁实战并发操作之——手写单线程可重入锁实战单线程不可重入锁代码实战单线程不可重入锁代码实战不可重入锁: 若当前线程执行某个方法已经获取了该锁,那么在方法中尝试再次获取锁时,就会获取不到被阻塞。package net.xdclass.xdclasssp.lock;/** * @author Cym * @date 2021/9/8 */public class ReentryLock { /** * 判断是否已经锁定 */原创 2021-09-08 10:29:36 · 4344 阅读 · 0 评论 -
并发操作之——手写单线程不可重入锁实战
并发操作之——手写单线程不可重入锁实战并发操作之——手写单线程不可重入锁实战单线程不可重入锁代码实战单线程不可重入锁代码实战不可重入锁: 若当前线程执行某个方法已经获取了该锁,那么在方法中尝试再次获取锁时,就会获取不到被阻塞。package net.xdclass.xdclasssp.lock;/** * @author Cym * @date 2021/9/7 * 不可重入锁 */public class UnReneeTrentLock { /** * 判原创 2021-09-07 21:21:41 · 4633 阅读 · 0 评论 -
并发操作之——手写多线程不可重入锁实战
并发操作之——手写多线程不可重入锁实战并发操作之——手写多线程不可重入锁实战多线程不可重入锁代码实战多线程不可重入锁代码实战不可重入锁: 若当前线程执行某个方法已经获取了该锁,那么在方法中尝试再次获取锁时,就会获取不到被阻塞。package net.xdclass.xdclasssp.lock;/** * @author Cym * @date 2021/9/7 * 不可重入锁 */public class UnReenTrantLock { /** * 判断原创 2021-09-07 21:11:28 · 4646 阅读 · 0 评论 -
并发操作之——手写死锁实战
并发操作并发操作之——手写死锁实战并发操作之——手写死锁实战并发操作一、死锁代码实战二、死锁的四个必要条件1、互斥条件2、请求与保持条件3、不可抢占4、循环等待条件三、死锁的解决办法,以及上面死锁的代码优化总结一、死锁代码实战死锁: 线程在获得了锁A并且没有释放的情况下去申请锁B,这时另一个线程已经获得了锁B,在释放锁B之前又要先获得锁A因此闭环发生,陷入死锁循环package net.xdclass.xdclasssp.lock;/** * @author Cym * @dat原创 2021-09-07 20:36:47 · 4931 阅读 · 0 评论 -
并发操作之——java多线程常用的锁
并发操作并发操作之——java多线程常用的锁并发操作之——java多线程常用的锁并发操作前言一、共享锁二、互斥锁三、死锁1、偏向锁2、轻量锁3、重量级锁总结前言并发操作之——java多线程常用的锁。一、共享锁也叫S锁/读锁,能查看但无法修改和删除的一种数据锁,加锁后其它用户可以并发读取、查询数据,但不能修改,增加,删除数据,该锁可被多个线程所持有,用于资源数据共享二、互斥锁也叫X锁/排它锁/写锁/独占锁/独享锁/ 该锁每一次只能被一个线程所持有,加锁后任何线程试图再次加锁的线程会被原创 2021-09-07 19:49:56 · 5727 阅读 · 0 评论 -
并发操作之——java中常用的锁
并发操作并发操作之——java中常用的锁。并发操作之——java中常用的锁并发操作前言一、悲观锁二、乐观锁三、公平锁四、非公平锁五、可重入锁六、不可重入锁七、自旋锁总结前言并发操作之——java中常用的锁。一、悲观锁线程去操作数据的时候,总认为别的线程会去修改数据,所以它每次拿数据的时候都会上锁,别的线程去拿数据的时候就会阻塞,比如synchronized。二、乐观锁每次去拿数据的时候都认为别人不会修改,更新的时候会判断是别人是否回去更新数据,通过版本来判断,如果数据被修改了就拒绝更原创 2021-09-07 19:05:12 · 4893 阅读 · 0 评论 -
并发操作之——进程和线程间的调度算法下——线程之间的调度算法
并发操作并发操作之——进程和线程间的调度算法下——线程之间的调度算法并发操作之——进程和线程间的调度算法下——线程之间的调度算法并发操作前言一、协同式线程调度二、抢占式线程调度总结前言<font color=#999AAA 并发操作之——进程和线程间的调度算法。一、协同式线程调度线程执行时间由线程本身来控制,线程把自己的工作执行完后,要主动通知系统切换到另外一个线程上.优点: 实现简单,且切换操作对线程自己是可知的没有线程同步的问题.缺点: 线程执行时间不可控制,如果有一个线程原创 2021-09-07 16:17:39 · 4944 阅读 · 0 评论 -
java基础——面试篇上
计算机基础运算知识计算机基础运算知识——运算符。计算机基础运算知识——运算符计算机基础运算知识前言一、运算符 &和&&、|和||的区别?& 按位与操作| 按位或操作二、实现变量交换的几种方式写个方法,传递两个非0的int数值进去,实现变量交换的方式,有几种方式?方式一:利用算术运算符加减进行变量交换方式二:利用异或运算来进行变量交换总结前言计算机基础运算知识——运算符。一、运算符 &和&&、|和||的区别?& 按位与操作只原创 2021-09-06 12:31:32 · 5293 阅读 · 0 评论 -
MyBatis一级缓存和二级缓存使用场景和失效策略
MyBatis一级缓存和二级缓存使用场景和失效策略一级缓存:默认为一级缓存,作用域为SqlSessison,基于PerpetualCache的HashMap本地缓存。实现方式:mysql第一次去数据库查数据的时候会往sqlsession里面写一份,第二次查的时候就直接去sqlsession里面取数据了。失效策略:第一次和第二次缓存查询中间有增删改的操作commit提交之后会清空或者销毁sqlsession。二级缓存: 级别为namespace,多个sqlsession可以指向一个namespac原创 2021-08-13 16:16:00 · 1969 阅读 · 0 评论