随笔分类 -  Java高频面试题

摘要:高级Java程序员必问,Redis事务终极篇Redis事务(Transaction)通过将多个Redis操作封装为一个原子性的操作序列,确保在事务执行过程中,不会受到其他客户端的干扰。从而在保证数据一致性的同时,协调并发,提高数据操作的效率和性能 阅读全文
posted @ 2023-05-05 11:45 一灯架构 阅读(942) 评论(0) 推荐(2) 编辑
摘要:Redis性能瓶颈揭秘:如何优化大key问题?Redis大key问题指的是某个key对应的value值所占的内存空间比较大,导致Redis的性能下降、内存不足、数据不均衡以及主从同步延迟等问题。 到底多大的数据量才算是大key? 阅读全文
posted @ 2023-04-17 10:20 一灯架构 阅读(2160) 评论(0) 推荐(5) 编辑
摘要:为什么Redis不直接使用C语言的字符串?看完直接吊打面试官!众所周知Redis有以下几种常见的数据类型 String(字符串)、List(列表)、Set(集合)、Hash(哈希)、Sorted set(有序集合)、Stream(流)、Geo(地理空间索引)、Bitmap(位图)、HyperLogLog(基数统计)等。 我们最常用的就是String(字符串)类型,String类型既可以存储字符串,也可以存储数字,甚至可以直接进行数值运算。 阅读全文
posted @ 2023-03-21 10:44 一灯架构 阅读(255) 评论(1) 推荐(0) 编辑
摘要:Java阻塞队列中的异类,SynchronousQueue底层实现原理剖析上篇文章谈到BlockingQueue的使用场景,并重点分析了ArrayBlockingQueue的实现原理,了解到ArrayBlockingQueue底层是基于数组实现的阻塞队列。 但是BlockingQueue的实现类中,有一种阻塞队列比较特殊,就是SynchronousQueue(同步移交队列),队列长度为0。 阅读全文
posted @ 2022-11-23 17:43 一灯架构 阅读(926) 评论(1) 推荐(3) 编辑
摘要: 面试官不按套路,竟然问我Java线程池是怎么统计线程空闲时间?面试官: 小伙子,我看你简历上写的项目中用到了线程池,你知道线程池是怎样实现复用线程的? 这面试官是不是想坑我?是不是摆明了不让我通过? 难道你不应该问线程池有哪些核心参数?每个参数具体作用是什么? 阅读全文
posted @ 2022-11-18 10:14 一灯架构 阅读(1879) 评论(14) 推荐(4) 编辑
摘要:还不懂Java线程池实现原理,看这一篇文章就够了线程池无论是工作还是面试都是必备的技能,但是很多人对于线程池的实现原理却一知半解,并不了解线程池内部的工作原理,今天一灯就带大家一块剖析线程池底层实现原理。 阅读全文
posted @ 2022-11-16 10:30 一灯架构 阅读(1826) 评论(1) 推荐(0) 编辑
摘要:干货,深入剖析ReentrantLock源码,推荐收藏ReentrantLock和Synchronized都是Java开发中最常用的锁,与Synchronized这种JVM内置锁不同的是,ReentrantLock提供了更丰富的语义。可以创建公平锁或非公平锁、响应中断、超时等待、按条件唤醒等。在某些场景下,使用ReentrantLock更适合,功能更强大。 阅读全文
posted @ 2022-11-14 10:08 一灯架构 阅读(625) 评论(0) 推荐(1) 编辑
摘要:硬核剖析Java锁底层AQS源码,深入理解底层架构设计我们常见的并发锁ReentrantLock、CountDownLatch、Semaphore、CyclicBarrier都是基于AQS实现的,所以说不懂AQS实现原理的,就不能说了解Java锁。 上篇文章讲了AQS的加锁流程,这篇文章再一块看一下AQS具体源码实现。 阅读全文
posted @ 2022-11-11 10:04 一灯架构 阅读(710) 评论(0) 推荐(4) 编辑
摘要:重大发现,AQS加锁机制竟然跟Synchronized有惊人的相似在并发多线程的情况下,为了保证数据安全性,一般我们会对数据进行加锁,通常使用Synchronized或者ReentrantLock同步锁。Synchronized是基于JVM实现,而ReentrantLock是基于Java代码层面实现的,底层是继承的AQS。 AQS全称AbstractQueuedSynchronizer,即抽象队列同步器,是一种用来构建锁和同步器的框架。 阅读全文
posted @ 2022-11-09 10:32 一灯架构 阅读(565) 评论(4) 推荐(0) 编辑
摘要:死磕Java面试系列:深拷贝与浅拷贝的实现原理深拷贝与浅拷贝的问题,也是面试中的常客。虽然大家都知道两者表现形式不同点在哪里,但是很少去深究其底层原理,也不知道怎么才能优雅的实现一个深拷贝。其实工作中也常常需要实现深拷贝,今天一灯就带大家一块深入剖析一下深拷贝与浅拷贝的实现原理,并手把手教你怎么优雅的实现深拷贝。 阅读全文
posted @ 2022-11-07 11:19 一灯架构 阅读(633) 评论(2) 推荐(0) 编辑
摘要:死磕面试系列,Java到底是值传递还是引用传递?Java到底是值传递还是引用传递? 这虽然是一个老生常谈的问题,但是对于没有深入研究过这块,或者Java基础不牢的同学,还是很难回答得让人满意。 可能很多同学能够很轻松的背出JVM、分布式事务、高并发、秒杀系统、领域模型等高难度问题,但是对于Java基础问题不屑一顾。这种抓大放小的初衷是对的,要是碰到深究基础细节的面试官,就抓瞎了。 阅读全文
posted @ 2022-11-04 10:32 一灯架构 阅读(559) 评论(0) 推荐(1) 编辑
摘要:夯实Java基础,一篇文章全解析线程问题操作系统支持多个应用程序并发执行,每个应用程序至少对应一个进程 ,彼此之间的操作和数据不受干扰,彼此通信一般采用管道通信、消息队列、共享内存等方式。当一个进程需要磁盘IO的时候,CPU就切换到另外的进程,提高了CPU利用率。 有了进程,为什么还要线程?因为进程的成本太高了。 启动新的进程必须分配独立的内存空间,建立数据表维护它的代码段、堆栈段和数据段,这是昂贵的多任务工作方式。线程可以看作轻量化的进程。线程之间使用相同的地址空间,切换线程的时间远小于切换进程的时间。 进程是资源分配的最小单位,而线程是CPU调度的最小单位。每一个进程中至少有一个线程,同一进程的所有线程共享该进程的所有资源,多个线程可以完成多个不同的任务,也就是我们常说的并发多线程。 阅读全文
posted @ 2022-11-02 14:27 一灯架构 阅读(536) 评论(0) 推荐(0) 编辑
摘要:深度剖析Java的volatile实现原理,再也不怕面试官问了上篇文章我们讲了synchronized的用法和实现原理,我们总爱说synchronized是重量级锁,volatile是轻量级锁。为什么volatile是轻量级锁,体现在哪些方面?以及volatile的作用和实现原理是怎样的?本篇带你一块学习一下。 阅读全文
posted @ 2022-10-31 10:12 一灯架构 阅读(632) 评论(0) 推荐(1) 编辑
摘要:硬核剖析ThreadLocal源码,面试官看了直呼内行工作面试中经常遇到ThreadLocal,但是很多同学并不了解ThreadLocal实现原理,到底为什么会发生内存泄漏也是一知半解?今天一灯带你深入剖析ThreadLocal源码,总结ThreadLocal使用规范,解析ThreadLocal高频面试题。 ThreadLocal是线程本地变量,就是线程的私有变量,不同线程之间相互隔离,无法共享,相当于每个线程拷贝了一份变量的副本。 目的就是在多线程环境中,无需加锁,也能保证数据的安全性。 阅读全文
posted @ 2022-10-25 09:59 一灯架构 阅读(592) 评论(1) 推荐(1) 编辑
摘要:再有人说synchronized是重量级锁,就把这篇文章扔给他看synchronized作为Java程序员最常用同步工具,很多人却对它的用法和实现原理一知半解,以至于还有不少人认为synchronized是重量级锁,性能较差,尽量少用。 但不可否认的是synchronized依然是并发首选工具,连volatile、CAS、ReentrantLock都无法动摇synchronized的地位。synchronized是工作面试中的必备技能,今天就跟着一灯一块深入剖析synchronized底层到底做了哪些优化? synchronized是用来加锁的,而锁是加在对象上面,所以需要先聊一下JVM中对象构成。 阅读全文
posted @ 2022-10-21 10:20 一灯架构 阅读(708) 评论(1) 推荐(1) 编辑
摘要:Java程序员必会Synchronized底层原理剖析synchronized作为Java程序员最常用同步工具,很多人却对它的用法和实现原理一知半解,以至于还有不少人认为synchronized是重量级锁,性能较差,尽量少用。 但不可否认的是synchronized依然是并发首选工具,连volatile、CAS、ReentrantLock都无法动摇synchronized的地位。synchronized是工作面试中的必备技能,今天就跟着一灯一块深入剖析synchronized的底层原理。 阅读全文
posted @ 2022-10-19 15:13 一灯架构 阅读(1250) 评论(1) 推荐(0) 编辑
摘要:不允许还有Java程序员不了解BlockingQueue阻塞队列的实现原理我们平时开发中好像很少使用到BlockingQueue(阻塞队列),比如我们想要存储一组数据的时候会使用ArrayList,想要存储**键值对**数据会使用HashMap,在什么场景下需要用到BlockingQueue呢? 1. BlockingQueue的应用场景 当我们处理完一批数据之后,需要把这批数据发给下游方法接着处理,但是下游方法的处理速率不受控制,可能时快时慢。如果下游方法的处理速率较慢,会拖慢当前方法的处理速率,这时候该怎么办呢? 阅读全文
posted @ 2022-10-17 14:19 一灯架构 阅读(750) 评论(1) 推荐(3) 编辑
摘要:我说HashMap初始容量是16,面试官让我回去等通知众所周知HashMap是工作和面试中最常遇到的数据类型,但很多人对HashMap的知识止步于会用的程度,对它的底层实现原理一知半解,了解过很多HashMap的知识点,却都是散乱不成体系,今天一灯带你一块深入浅出的剖析HashMap底层实现原理。 看下面这些面试题,你能完整的答对几道? 阅读全文
posted @ 2022-10-13 10:02 一灯架构 阅读(1992) 评论(10) 推荐(2) 编辑
摘要:如何优雅的备份MySQL数据?看这篇文章就够了先说一下为什么需要备份MySQL数据? 一句话总结就是:为了保证数据的安全性。 如果我们把数据只存储在一个地方,如果物理机器损坏,会导致数据丢失,无法恢复。 还有就是我们每次手动修改线上数据之前,为了安全起见,都需要先备份数据。防止人为的误操作,导致弄脏数据或弄丢数据。 阅读全文
posted @ 2022-10-10 09:33 一灯架构 阅读(1305) 评论(1) 推荐(0) 编辑
摘要:线上服务宕机,码农试用期被毕业,原因竟是给MySQL加个字段工作中最常遇到的问题,怎么给线上频繁使用的大表添加字段? 比如:给下面的用户表(user)添加年龄(age)字段。 有同学会说,这还不简单,直接加不加完了,用下面的命令: 阅读全文
posted @ 2022-10-08 15:47 一灯架构 阅读(2921) 评论(7) 推荐(12) 编辑

点击右上角即可分享
微信分享提示