- 博客(58)
- 收藏
- 关注
原创 深入理解JVM(③)JVM运行时数据区域
前言Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域。这些区域有各自的用途,以及创建和销毁的时机,有的区域随着虚拟机进程的启动而一直存在,有些区域则是依赖用户线程的穷的和结束而建立和销毁。Java虚拟机将其管理的内存分为以下几个运行时区域。程序计数器程序计数器是一块较小的内存空间,它可以看作是当前线程所执行的字节码的行号指示器。由于Java虚拟机...
2020-03-22 23:02:49
312
原创 技术面:MySQL(一条SQL在MySQL的执行过程?、MyISAM和InnoDB的区别?数据库事务机制?)
MyISAM和InnoDB的区别?一条SQL在MySQL的执行过程?什么是数据库的事务机制?
2025-11-24 21:07:08
924
原创 技术面:MySQL篇(为啥会有非关系型数据库?MySQL的数据存储一定在磁盘吗?)
有了关系型数据库,为什么还需要NoSQL这种非关系型数据库?MySQL的数据存储一定是基于磁盘的吗?
2025-11-13 17:04:27
986
原创 技术面:SpringCloud(SpringCloud有哪些组件,SpringCloud与Dubbo的区别)
SpringCloud有哪些组件?SpringCloud与Dubbo有什么区别?
2025-11-11 11:24:53
577
原创 技术面:SpringBoot(springboot的类加载和传统的双亲委派有什么区别、如何按顺序实例化Bean)
SpringBoot的类加载和传统的双亲委派有什么区别?SpringBoot如何指定在其他Bean之前实例化指定的Bean?
2025-11-04 16:20:57
1151
原创 技术面:Spring(循环依赖,spring与springboot的区别)
什么是spring的循环依赖?什么是spring的三级缓存?三级缓存怎么解决的循环依赖?解决循环依赖一定要三级缓存吗?spring默认是否支持循环依赖?spring与springboot的区别是什么?
2025-10-21 23:00:35
767
原创 技术面:Spring (事务传播机制、事务失效的原因、BeanFactory和FactoryBean的关系)
Spring事务传播机制是什么?有哪些事务传播机制?Spring事务失效的可能原因有哪些?Spring的BeanFactory和FactoryBean的关系?
2025-10-10 17:26:50
1066
原创 A公司一面:类加载的过程是怎么样的? 双亲委派的优点和缺点? 产生fullGC的情况有哪些? spring的动态代理有哪些?区别是什么? 如何排查CPU使用率过高?
A公司一面:类加载的过程是怎么样的? 双亲委派的优点和缺点? 产生fullGC的情况有哪些? spring的动态代理有哪些?区别是什么? 如何排查CPU使用率过高?
2025-09-18 17:32:10
698
原创 技术面:Spring (bean的生命周期、创建方式、注入方式、作用域)
Spring Bean的生命周期是什么样的?Spring中创建Bean的方式有哪些?Spring Bean的注入方式有哪些?Spring Bean的作用域有哪些?
2025-09-13 21:42:49
835
原创 技术面:Java并发(线程同步、死锁、多线程编排)
线程同步的方式有哪些?什么情况下会产生死锁?如何解决死锁?死锁如何恢复?数据库操作中如何避免死锁?CompletableFuture怎么实现多线程异步编排?
2025-09-10 10:03:48
633
原创 技术面:Java并发(线程池、ForkJoinPool)
线程池的原理?线程池是怎么执行任务的?线程池的核心线程数量应该设置成多少?ForkJoinPool和ThreadPoolExecutor有什么区别?
2025-09-05 21:34:12
649
原创 技术面:Java并发(上下文切换、线程安全、并发与并行、守护线程、虚拟线程)
多线程中的上下文切换是什么?你觉得什么是线程安全?并行和并发有什么区别?守护线程与普通线程有什么区别?JDK21中的虚拟线程是什么?
2025-09-04 12:10:07
954
原创 DDD领域驱动设计的理解
领域驱动设计(DDD,Domain-Driven Design)是一套以业务领域知识为中心、以统一语言和模型为驱动的复杂软件系统设计方法学。它的核心思想是:把技术实现与业务知识深度融合,让代码成为业务概念的忠实映射,从而持续交付真正解决业务问题的软件。
2025-08-22 16:54:04
933
原创 Kafka如何保证「消息不丢失」,「顺序传输」,「不重复消费」,以及为什么会发生重平衡(reblanace)
上一篇文章总结了kafka为什么快,下面来总结一下,kafka高频的常见的问题。内容有点多,全部看完需要有一定的耐心。
2025-08-20 22:29:18
961
1
原创 Kafka为什么吞吐量大,速度快?
根据个人的经历,无论在工作中,还是即将要经历的面试,MQ这部分是肯定要了解的,虽然之前工作中一直使用Kafka但是一些详细的细节知识还是了解的不深,所以这次总结一波。
2025-07-18 00:08:37
821
原创 春节做的2021年终总结
2021年对我来说是波折多事的一年,这一年经历了很多,终于在能在过年放假的时候抽出时间来写一下年终总结了。无论是在工作还是生活上都经历不少的波折。来吧,流水账开始了
2022-02-01 16:57:39
7729
原创 Elasticsearch写入数据的过程是什么样的?以及是如何快速更新索引数据的?
前言最近面试过程中遇到问Elasticsearch的问题不少,这次总结一下,然后顺便也了解一下Elasticsearch内部是一个什么样的结构,毕竟总不能就只了解个倒排索引吧。本文标题就是我遇到过的两个问题,所以此次基本上只是围绕着这两个问题来总结。ES写入数据在介绍写入数据的过程时,先明确一下ES中的一些关键性的概念:Clouster:集群,由一到N个Elasticsearch服务节点组成。Node:节点,组成Elasticsearch集群的基本单元,单个集群内节点名称唯一。通常一个节点中分配
2021-11-18 23:04:13
1949
4
原创 你说说RPC的一个请求的流程是怎么样的?
前言面试的时候经常被问到RPC相关的问题,例如:你说说RPC实现原理、让你实现一个RPC框架应该考虑哪些地方、RPC框架基础上发起一个请求是怎样一个流程等等。所以这次我就总结一波RPC的相关知识点,提前说明一下,本篇文章只是为了回答一些面试问题,所以只是解释原理,并不会深入挖掘细节。注册中心RPC(Remote Procedure Call)翻译成中文就是远程过程调用\color{red}{远程过程调用}远程过程调用。RPC框架起到的作用就是为了实现,调用远程方法时,能够做到和调用本地方法一样,让开发
2021-11-04 16:40:30
1593
原创 用Java如何设计一个阻塞队列,然后说说ArrayBlockingQueue和LinkedBlockingQueue
前言用Java如何设计一个阻塞队列,这个问题是在面滴滴的时候被问到的。当时确实没回答好,只是说了用个List,然后消费者再用个死循环一直去监控list的是否有值,有值的话就处理List里面的内容。回头想想,自己真是一个大傻X,也只有我才会这么设计一个阻塞队列(再说,我这也不是阻塞的队列)。结果自己面试完之后,也没去总结这部分知识,然后过了一段时间,某教育机构的面试又被问到类似的问题了,只不过是换了一个形式,“请用wait方法和notify方法实现一套有生产者和消费者的这种逻辑”。然后我就又蒙圈了,追悔莫
2021-06-15 18:32:07
1541
2
原创 Java中的线程池用过吧?来说说你是怎么理解线程池吧?
前言Java中的线程池用过吧?来说说你是怎么使用线程池的?这句话在面试过程中遇到过好几次了。我甚至这次标题都想写成【Java八股文之线程池】,但是有点太俗套了。虽然,线程池是一个已经被说烂的知识点了,但是还是要写这一篇用来加深自己的印象,但是想使用一个特殊的方式写出来。线程池使用线程池的目的先说一下我们为什么要使用线程池?线程是稀缺资源,不能频繁的创建。而且创建和销毁线程也是比较耗资源的。为了做到解耦,线程的创建与执行任务分开,方便对线程进行维护。为了复用,前面也说了创建和销毁线程比较耗资源
2021-05-06 07:03:54
360
1
原创 MySQL的半同步是什么?
前言年后在进行腾讯二面的时候,写完算法的后问的第一个问题就是,MySQL的半同步是什么?我当时直接懵了,我以为是问的MySQL的两阶段提交的问题呢?结果确认了一下后不是两阶段提交,然后面试官看我连问的是啥都不知道,就直接跳过这个问题,直接聊下一个问题了。MySQL的主从复制我们的一般在大规模、高性能的项目上,都是使用MySQL的复制功能来创建MySQL的主从集群的。主要是可以通过为服务器配置一个或多个备库的方式来进行数据同步。复制的功能不仅有利于构建高性能应用,同时也是高可用、可扩展性、灾难恢复、备份
2021-04-18 15:41:59
907
1
原创 Java实现十个经典排序算法(带动态效果图)
排序算法是老生常谈的了,但是在面试中也有会被问到,例如有时候,在考察算法能力的时候,不让你写算法,就让你描述一下,某个排序算法的思想以及时间复杂度或空间复杂度。我就遇到过,直接问快排的,所以这次我就总结梳理一下经典的十大排序算法以及它们的模板代码。算法分析一个排序算法的好坏,一般是通过下面几个关键信息来分析的,下面先介绍一下这几个关键信息,然后再将常见的排序算法的这些关键信息统计出来。名词介绍时间复杂度:指对数据操作的次数(或是简单的理解为某段代码的执行次数)。举例:O(1):常数时间复杂度
2021-03-14 13:15:13
1570
原创 迟到的2020年终总结:责任与能力
其实很早就想写一篇年终总结了,可碍于最近一直在骑驴找马,白天工作,晚上面试,周末总结面试的知识点。今天终于放假了,才能够抽出时间来总结一下自己的2020。过去一年的经历受疫情影响,正月初十才回到北京,回到北京后又居家办公了大概一两个月,后面又变成了,单双号去单位办公,五一过后才基本上就恢复正常工作了。个人生活——结婚本来是一开始订的3月底的婚期,结果因为疫情的原因就延期了,疫情反反复复所以一直也没确定下来具体的时间。后面到七八月份的时候,总算是确定了几个日期。然后两家商量了一下,本来打算把日.
2021-02-05 18:34:18
437
7
原创 MySQL的索引为什么用B+Tree?InnoDB的数据存储文件和MyISAM的有何不同?
前言这篇文章的题目,是我真实在面试过程中遇到的问题,某互联网众筹公司在考察面试者MySQL相关知识的第一个问题,我当时还是比较懵的,没想到这年轻人不讲武德,不按套路出牌,一般的问MySQL的相关知识的时候,不都是问索引优化以及索引失效等相关问题吗?怎么还出来了,存储文件的不同?哪怕考察个MVCC机制也行啊。所以这次我就好好总结总结这部分知识点。为什么需要建立索引首先,我们都知道建立索引的目的是为了提高查询速度,那么为什么有了索引就能提高查询速度呢?我们来看一下,一个索引的示意图。如果我有一个SQ
2021-01-31 20:48:30
464
2
原创 你都用过SpringCloud的哪些组件,它们的原理是什么?
前言看到文章的题目了吗?就是这么抽象和笼统的一个问题,确实是我面试中真实被问到的,某共享货车平台的真实面试问题。springcloud确实是用过,但是那是三四年前了,那个时候springcloud刚兴起,我们技术总监让我们调研一下,然后算上我在内的三个同事就一人买了一本springcloud的书籍,开始看,开始研究,正好那个时候DDD也比较火,然后我们就一边研究的springcloud一边按照DDD的模型搭建自己的项目。但是这个项目最后做了三个月,才完成了一期。后面二期还没开始,我就撤了。所以sprin
2021-01-17 18:17:38
1149
11
原创 DFS(深度优先遍历)和BFS(广度优先遍历)Java模板代码
前言这次终于把深度优先-DFS和广度优先遍历-BFS弄明白了,用最基础的递归实现方式来记录一下。先贴一下,二叉树基础节点代码TreeNode,以及N叉树的基础节点代码TreeNode2。// 二叉树节点public class TreeNode { /* 当前节点值 */ int val; /* 左节点 */ TreeNode left; /* 右节点 */ TreeNode right; TreeNode(int val){
2021-01-05 08:35:15
2442
1
原创 Redis的批量操作是什么?怎么实现的延时队列?以及订阅模式、LRU。
前言这次的内容是我自己为了总结Redis知识而扩充的,上一篇其实已经总结了几点知识了,但是Redis的强大,以及适用范围之广可不是单单一篇博文就能总结清的。所以这次准备继续总结,因为第一个问题,Redis的批量操作,是我在面试过程中被真实问到的,当时没答上来,也是因为确实没了解过Redis的批量操作。当时的问题,我还记得比较清晰:Redis执行批量操作的功能是什么?使用场景就是搞促销活动时,会做预缓存,会往缓存里放大批数据,如果直接放的话那么会很慢,怎么能提高效率呢?Redis的批量操作-管道(pip
2021-01-04 08:31:49
589
原创 你说一下Redis为什么快吧,怎么实现高可用,还有持久化怎么做的。
前言作为Java程序员,在面试过程中,缓存相关的问题是躲不掉的,肯定会问,例如缓存一致性问题,缓存雪崩、击穿、穿透等。说到缓存,那肯定少不了Redis,我在面试的时候也是被问了很多关于Redis相关的知识,但是Redis的功能太强大了,并不是一时半会儿能掌握好的,因为有些高级特性或是知识平时并不会用到。所以回答的不好,人家就会觉得你对自己平时使用的工具都没有了解,自然就凉凉了。其实很早就有这个打算,打算好好总结一下Redis的知识,但也是由于自己都没有好好的了解Redis呢,所以一直没有开始。这次准备慢
2020-12-28 23:54:46
295
原创 分布式事务了解吗?你们的多个服务间数据一致性解决方案是什么?
前言看标题就知道,这个又是个在面试中被问到的问题。这个问题其实是在我上次换工作的时候面试被问到过几次,之前也没在意过,觉得这个东西可能比较深奥,我直接说不理解吧。但是随着Java开发这个行业越来越卷,这次换工作一定要做好充足的准备。把之前落下的坑都填好,再出去受虐(面试)。什么是分布式事务我们都知道本地事务是有四个特性的:原子性(atomicity)、一致性(consistency)、隔离性(isolation)和持久性(durability)。本地事务的ACID一般都是靠关系型数据库来完成的,非关
2020-12-20 17:56:58
1986
3
原创 你来讲一下springboot的启动时的一个自动装配过程吧
前言继续总结吧,没有面试就继续夯实自己的基础,前阵子的在面试过程中遇到的各种问题陆陆续续都会总结出来分享给大家,这次要说的也是面试中被问到的一个高频的问题,我当时其实没答好,因为很早之前是看到springboot的启动的一个过程的源码的,但是时间隔得有点久了(两年多没用过springboot),所以当时也没答好。这次好好总结这部分知识。SpringApplication.run()我看网上好多介绍springboot自动装配过的文章时,上来就直接说@SpringBootApplication注解是一个
2020-12-14 00:12:48
366
原创 你说说对Java的SPI的理解吧
前言最近在面试的时候被问到SPI了,没回答上来,主要也是自己的原因,把自己给带沟里去了,因为讲到了类加载器的双亲委派模型,后面就被问到了有哪些是破坏了双亲委派模型的场景,然后我就说到了SPI,JNDI,以及JDK9的模块化都破坏了双亲委派。然后就被问,那你说说对Java中的SPI的理解吧。然后我就一脸懵逼了,之前只是知道它会破坏双亲委派,也知道是个怎么回事,但是并没有深入了解,那么这次我就好好的来总结一下这个知识吧。什么是SPISPI全称Service Provider Interface,字面意思
2020-12-07 00:33:57
290
原创 Redis的基础数据结构总结
前言面试被问到Redis相关知识,总是被虐的很惨。但是人就是这样,越挫越勇,就这块儿被虐的惨那我就要啃下这个硬骨头。从这次开始就要总结Redis的相关知识。Redis基础数据类型stringstring是一个可变的字节数组,内部结构类似于Java的ArrayList,采用预分配冗余空间的方式,来减少内存的频繁分配。当字符串小于1M时,扩容都是加倍现有的空间,如果超过1M,扩容时一次最多只扩容1M的空间。string最大空间为512M。当string类型的数据为一个整数时,还可以做计数器使用。例如
2020-12-01 23:40:25
327
原创 你说一下对Java中的volatile的理解吧,以及它是怎么保证可见性的。
前言volatile相关的知识其实自己一直都是有掌握的,能大概讲出一些知识,例如:它可以保证可见性;禁止指令重排。这两个特性张口就来,但要再往深了问,具体是如何实现这两个特性的,以及在什么场景下使用volatile,为什么不直接用synchronized这种深入和扩展相关的问题,就回答的不好了。因为volatile是面试必问的知识,所以这次准备把这部分也给啃掉。系统处理效率与Java内存模型在计算机中,每条程序指令都是在CPU中执行的,而CPU执行指令的数据都是临时存储在内存中的,但是CPU的执行速度
2020-11-05 23:56:07
1008
1
原创 你来讲讲AQS是什么吧?都是怎么用的?
前言在Java面试的时候,多线程相关的知识是躲不掉的,肯定会被问。我就被问到了AQS的知识,就直接了当的问,AQS知道是什么吧,来讲讲它是怎么实现的,以及哪些地方用到了它。当时自己确实没有讲好,所以这次来总结一下这个知识点。什么是AQSAQS全称是AbstractQueuedSynchronizer,形如其名,抽象队列同步器。AQS定义了两种资源共享模式:独占式,每次只能有一个线程持有锁,例如ReentrantLock实现的就是独占式的锁资源。共享式,允许多个线程同时获取锁,并发访问共享资源,
2020-09-30 08:05:46
1311
1
原创 来说说缓存穿透、缓存击穿、缓存雪崩都是什么?怎么解决?
前言看到题目就知道了,这又是我在面试中遇到的,最近面试,把我的博文质量感觉都提上来了。面一次试感觉够我总结一周的,但还是每次都能遇到知识盲点,那以后就当面试总结是个扫盲的过程吧。缓存穿透面试的时候就被问到了这个问题,具体描述就是,正常的请求都是先请求到缓存(就当我们的缓存是Redis吧),如果缓存中存在数据,就直接返回,如果缓存中不存在请求的数据,就查询数据库,然后将查询到的数据再放到缓存中。那么如果现在有一堆的请求,在缓存中没有,数据库中也没有,怎么办?这种垃圾请求还特别多,而且因为是在数据库没有
2020-09-16 08:35:32
180
原创 synchronized底层是怎么实现的?
前言面试的时候有被问到,synchronized底层是怎么实现的,回答的比较浅,面试官也不是太满意,所以觉得要好好总结一下,啃啃这个硬骨头。synchronized使用场景我们在使用synchronized的时候都知道它是可以使用在方法上的也可以使用在代码块上的,那么使用在这两个地方有什么区别呢?synchronized用在方法上使用在静态方法上,synchronized锁住的是类对象。public class SynchronizedTest { /** * synchro
2020-09-15 22:09:23
438
原创 来讲讲你对ThreadLocal的理解
前言面试的时候被问到ThreadLocal的相关知识,没有回答好(奶奶的,现在感觉问啥都能被问倒),所以我决定先解决这几次面试中都遇到的高频问题,把这几个硬骨头都能理解的透彻的说出来了,感觉最起码就不是一轮游了。ThreadLocal介绍ThreadLocal是JDK1.2开始就提供的一个用来存储线程本地变量的类。ThreadLocal中的变量是在每个线程中独立存在的,当多个线程访问ThreadLocal中的变量的时候,其实都是访问的自己当前线程的内存中的变量,从而保证的变量的线程安全。我们一般在使
2020-09-10 23:05:28
275
2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅