前言
锁是一种用来控制多线程访问共享资源的工具。通常,锁可以独占共享资源:同一时间只有一个线程可以获得锁,并且所有访问共享资源的线程都必须首先获得锁。前面我们介绍过了synchronized,使用synchronized的方法和代码块作用域机制使得使用监视器锁更加简单,并且帮助避免了许多关于锁的常见编程错误,比如锁未及时释放等问题。但是有时候我们需要更灵活的使用锁资源,例如,一些遍历并发访问的数据结构的算法需要使用“手动”方法,或者“锁链”:你先获得节点A的锁,然后是节点B,然后释放A获得C,再释放B获得D,以此类推。这种方式如果要使用synchronized就不是很好实现,但是有了Lock就不一样了,Lock接口允许以不同的范围去获取和释放锁,并且允许同时获得多把锁,也可以以任意的顺序释放。
第一轮 40min 自我介绍、项目介绍占了一半
- cms和g1收集器的机制和区别
- hotspot内存模型
- cas的汇编指令
- 墙钟时间和cpu时间的区别
- 结合大促业务谈谈hbase rowkey的设计
- 缓存的单元化场景
- 存hotkey的解决方案
- tcc型事务介绍
第二轮 1小时
- 自我介绍
- Skiplist原理描述
- 简述nio原理
- 几个算法场景题, 要求描述思路
- 信号量原理简述
- forkjoin原理简述
- 尾递归原理
- 一致性哈希原理
第三轮
- 怎么解决消息队列重复消费
- MQ为什么能单机抗很高的并发量
- Netty里序列化的方式
- 如果说想提高性能 用什么序列化方案?
- Netty线程池:nioeventloopgroup 串行无锁化 thread和selector的封装
- 线程池的设置参数
- 线程数量怎么定的:n+1 和 2*n+1
- 有没有测过不同线程数量对于性能的影响
- 你的web项目有几个表 分别是什么。
- 分布式事务实现方法?
那么如何才能正确的掌握Redis呢?
为了让大家能够在Redis上能够加深,所以这次给大家准备了一些Redis的学习资料,还有一些大厂的面试题,包括以下这些面试题
-
并发编程面试题汇总
-
JVM面试题汇总
-
Netty常被问到的那些面试题汇总
-
Tomcat面试题整理汇总
-
Mysql面试题汇总
-
Spring源码深度解析
-
Mybatis常见面试题汇总
-
Nginx那些面试题汇总
-
Zookeeper面试题汇总
- RabbitMQ常见面试题汇总
JVM常频面试:
Mysql面试题汇总(一)
Mysql面试题汇总(二)
Redis常见面试题汇总(300+题)
本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录