Java八股文面试
文章平均质量分 85
黑马Java面试专题详细笔记
保持学习ing
记录错误,记录过程,如有漏洞,请多包涵
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
面试题--xxl-job分布式任务调度
服务由调用中心和执行器组成,调用中心负责按任务调度策略向执行器下发任务,执行器负责接收任务执行任务。xxl-job的工作原理是什么?xxl-job是什么怎么工作?原创 2025-07-14 11:37:23 · 275 阅读 · 0 评论 -
面试题--系统如何处理异常
*** 业务异常*/super(msg);捕获后端产生的异常信息/*** 全局异常处理器,处理项目中抛出的业务异常*/@Slf4j/*** 捕获业务异常* @return*/log.error("异常信息:{}", ex.getMessage());// 获取异常信息// 截取到username字段,将其封装成提示信息给前端提示用户// 将错误信息通过空格截取成数组// 获取数组的第三个元素 :zhangsan。原创 2025-07-08 19:24:30 · 430 阅读 · 0 评论 -
黑马Java面试笔记之 技术场景篇
单点登录这块怎么实现的?1,先解释什么是单点登录单点登录的英文名叫做:Single Sign On(简称SSO2,介绍自己项目中涉及到的单点登录(即使没涉及过,也可以说实现的思路)3,介绍单点登录的解决方案,以JWT为例I. 用户访问其他系统,会在网关判断token是否有效II. 如果token无效则会返回401(认证失败)前端跳转到登录页面III. 用户发送登录请求,返回浏览器一个token,浏览器把token保存到cookie。原创 2025-06-06 19:35:42 · 589 阅读 · 0 评论 -
黑马Java面试笔记之 设计模式 篇
1. 简单工厂所有的产品都共有一个工厂,如果新增产品,则需要修改代码,违反开闭原则是一种编程习惯,可以借鉴这种编程思路2. 工厂方法模式给每个产品都提供了一个工厂,让工厂专门负责对应的产品的生产,遵循开闭原则项目中用的最多3. 抽象工厂方法模式如果有多个维度的产品需要配合生产时,优先建议采用抽象工厂(工厂的工厂)一般的企业开发中的较少该模式定义了一系列算法,并将每个算法封装起来,使它们可以相互替换,且算法的变化不会影响使用算法的客户。原创 2025-06-06 19:12:32 · 605 阅读 · 0 评论 -
黑马Java面试笔记之 JVM虚拟机篇(垃圾回收+JVM实践)
1. 对象什么时候可以被垃圾器回收如果一个或多个对象没有任何的引用指向它了,那么这个对象现在就是垃圾,如果定位了垃圾,则有可能会被垃圾回收器回收。2. 定位垃圾的方式有哪些?引用计数法可达性分析算法1.JVM 垃圾回收算法有哪些?标记清除算法:垃圾回收分为2个阶段,分别是标记和清除,效率高,有磁盘碎片,内存不连续标记整理算法:标记清除算法一样,将存活对象都向内存另一端移动,然后清理边界以外的垃圾,无碎片,对象需要移动,效率低复制算法。原创 2025-06-06 18:40:01 · 867 阅读 · 0 评论 -
黑马Java面试笔记之 JVM虚拟机篇(JVM+类加载器)
程序计数器:线程私有的,内部保存的字节码的行号。用于记录正在执行的字节码指令的地址。javap -verbose xx.class 打印堆栈大小,局部变量的数量和方法的参数idea图形化java虚拟机对于多线程是通过线程轮流切换并且分配线程执行时间。在任何的一个时间点上,一个处理器只会处理执行一个线程,如果当前被执行的这个线程它所分配的执行时间用完了【挂起】。处理器会切换到另外的一个线程上来进行执行。并且这个线程的执行时间用完了,接着处理器就会又来执行被挂起的这个线程。原创 2025-06-05 17:39:34 · 1236 阅读 · 0 评论 -
黑马Java面试笔记之 并发编程篇(线程池+使用场景)
核心线程数目 - 池中会保留的最多线程数最大线程数目 - 核心线程+救急线程的最大数目生存时间 - 救急线程的生存时间,生存时间内没有新任务,此线程资源会释放unit时间单位 - 救急线程的生存时间单位,如秒、毫秒等workQueue- 当没有空闲核心线程时,新来任务会加入到此队列排队,队列满会创建救急线程执行任务线程工厂 - 可以定制线程对象的创建,例如设置线程名字、是否是守护线程等handler拒绝策略 - 当所有线程都在繁忙,workQueue 也放满时,会触发拒绝策略拒绝策略有4种。原创 2025-06-05 15:12:13 · 1140 阅读 · 0 评论 -
黑马Java面试笔记之 并发编程篇(线程安全)
synchronized 底层使用的JVM级别中的Monitor 来决定当前线程是否获得了锁,如果某一个线程获得了锁,在没有释放锁之前,其他线程是不能或得到锁的。synchronized 属于悲观锁。synchronized 因为需要依赖于JVM级别的Monitor ,相对性能也比较低。monitor对象存在于每个Java对象的对象头中,synchronized 锁便是通过这种方式获取锁的,也是为什么Java中任意对象可以作为锁的原因monitor内部维护了三个变量。原创 2025-06-05 14:35:03 · 912 阅读 · 0 评论 -
黑马Java面试笔记之 并发编程篇(线程基础)
并行和并发有什么区别候选人:现在都是多核CPU,在多核CPU下并发是同一时间应对多件事情的能力,多个线程轮流使用一个或多个CPU并行是同一时间动手做多件事情的能力,4核CPU同时执行4个线程1. 创建线程的方式有哪些?在java中一共有四种常见的创建方式,分别是:继承Thread类、实现runnable接口、实现Callable接口、线程池创建线程。通常情况下,我们项目中都会采用线程池的方式创建线程。2.runnable和callable有什么区别?Runnable 接口run方法没有返回值;原创 2025-06-04 20:04:00 · 1013 阅读 · 0 评论 -
黑马Java面试笔记之 集合篇(HashMap+底层数据结构)
什么是二叉树每个节点最多有两个“叉”,分别是左子节点和右子节点不要求每个节点都有两个子节点,有的节点只有左子节点,有的节点只有右子节点。二叉树每个节点的左子树和右子树也分别满足二叉树的定义什么是二叉搜索树二叉搜索树,又名二叉查找树,有序二叉树在树中的任意一个节点,其左子树中的每个节点的值,都要小于这个节点的值二右子树节点的值都大于这个节点的值没有键值相等的节点通常情况下二叉搜索树的时间复杂度为O(logn)什么是红黑树红黑树:也是一种自平衡的二叉搜索树。原创 2025-06-04 19:26:23 · 715 阅读 · 0 评论 -
黑马Java面试笔记之 集合篇(算法复杂度+ArrayList+LinkedList)
分析ArrayList源码主要从三个方面去翻阅:成员变量,构造函数,关键方法面试官:面试题-ArrayList和LinkedList的区别是什么?候选人底层数据结构ArrayList 是动态数组的数据结构实现LinkedList 是双向链表的数据结构实现操作数据效率ArrayList按照下标查询的时间复杂度O(1)【内存是连续的,根据寻址公式】, LinkedList不支持下标查询查找(未知索引): ArrayList需要遍历,链表也需要遍历,时间复杂度都是O(n)新增和删除。原创 2025-06-03 15:46:54 · 953 阅读 · 0 评论 -
黑马Java面试笔记之 消息中间件篇(Kafka)
面试官:Kafka如何保证消费的顺序性候选人:Kafka默认存储和消费消息,是不能保证顺序性的,因为一个topic数据可能存储在不同的分区中,每个分区都有一个按照顺序的存储的偏移量,如果消费者关联了多个分区不能保证顺序性如果有这样的需求的话,我们是可以解决的,把消息都存储同一个分区下就行了,有两种方式都可以进行设置,第一个是发送消息时指定分区号,第二个是发送消息时按照相同的业务设置相同的key,因为默认情况下分区也是通过key的hashcode值来选择分区的,hash值如果一样的话,分区肯定也是一样的。原创 2025-06-03 14:45:11 · 1028 阅读 · 0 评论 -
黑马Java面试笔记之 消息中间件篇(RabbitMQ)
面试官:RabbitMQ如何保证消息不丢失?候选人我们使用RabbitMQ来确保MySQL和Redis间数据双写的一致性,这要求我们实现消息的高可用性,具体措施包括:开启生产者确认机制,确保消息能被送达队列,如有错误则记录日志并修复数据。启用持久化功能,保证消息在未消费前不会在队列中丢失,需要对交换机、队列和消息本身都进行持久化。对消费者开启自动确认机制,并设置重试次数。例如,我们设置了3次重试,若失败则将消息发送至异常交换机,由人工处理。面试官:RabbitMQ消息的重复消费问题如何解决?候选人。原创 2025-06-03 14:14:08 · 1076 阅读 · 0 评论 -
黑马Java面试笔记之 微服务篇(业务)
限流常见的算法有哪些?对令牌桶和漏桶进行分析,并解释二者的区别你们采用哪种分布式事务解决方案?根据自己的业务跟面试官进行陈述你们项目中使用了什么分布式任务调度?首先,要先描述但是实在什么场景使用了任务调度。原创 2025-06-03 10:52:43 · 1287 阅读 · 0 评论 -
黑马Java面试笔记之 微服务篇(SpringCloud)
Eureka:注册中心Ribbon:负载均衡Feign:远程调用Hystrix:服务熔断Zuul/Gateway:网关如果项目用到了阿里巴巴(SpringCloudAlibba)的组件,也可以说:随着SpringCloudAlibba在国内兴起,我们项目中使用了一些阿里巴巴的组件注册中心/配置中心 Nacos负载均衡 Ribbon服务调用 Feign服务保护 sentinel服务网关 Gateway我看你之前也用过nacos、你能说下nacos与eureka的区别?原创 2025-06-02 16:42:25 · 1297 阅读 · 0 评论 -
黑马Java面试笔记之框架篇(Spring、SpringMvc、Springboot)
AOP称为面向切面编程,用于将那些与业务无关,但却对多个对象产生影响的公共行为和逻辑,抽取并封装为一个可重用的模块,这个模块被命名为“切面”(Aspect),减少系统中的重复代码,降低了模块间的耦合度,同时提高了系统的可维护性。以下详细说明一下AOP的使用场景有三种事务失效的场景异常捕获处理抛出检查异常非public方法Spring中事务失效的场景有以下几种:1.异常捕获处理,自己处理了异常,没有抛出,解决方法是手动抛出2.抛出检查异常,配置rollbackFor属性为Exception。原创 2025-06-01 16:15:17 · 1465 阅读 · 0 评论 -
黑马Java面试笔记之MySQL篇(事务)
并发事务带来哪些问题?怎么解决这些问题?MySQL的默认隔离级别是?参考回答你们项目用过分库分表吗?6.1 拆分策略垂直分库以表为依据,根据业务将不同表拆分到不同库中。特点按业务对数据分级管理、维护、监控、扩展在高并发下,提高磁盘IO和数据量连接数垂直分表特点冷热数据分离减少IO过渡争抢,两表互不影响水平分库水平分表。原创 2025-05-31 16:48:13 · 732 阅读 · 0 评论 -
黑马Java面试笔记之MySQL篇(优化)
MySQL中,如何定义慢查询?嗯~,我们当时做压测的时候有的接口非常的慢,接口的响应时间超过了2秒以上,因为我们当时的系统部署了运维的监控系统Skywalking,在展示的报表中可以看到是哪一个接口比较慢,并且可以分析这个接口哪部分比较慢,这里可以看到SQL的具体的执行时间,所以可以定位是哪个sql出了问题。原创 2025-05-31 15:03:02 · 1150 阅读 · 0 评论 -
黑马Java面试笔记之Redis篇(分布式锁)
面试官:Redis分布式锁如何实现?候选人:在redis中提供了一个命令setnx(SET if not exists)由于redis是单线程的,用了命令之后,只能有一个客户端对某一个key设置值,在没有过期或者删除key的时候是其他客户端不能设置这个key的面试官:好的,那你如何控制Redis实现分布式锁的有效时长呢?候选人:嗯,的确,redis的setnx指令不好控制这个问题,我们当时采用的redis的一个框架redisson实现的。原创 2025-05-30 17:48:23 · 1315 阅读 · 1 评论 -
黑马Java面试笔记之Redis篇(使用场景)
面试官提问你这个问题一是想验证你的项目场景的真实性,二是为了作为深入发问的切入点缓存三兄弟(穿透、击穿、雪崩)、双写一致、持久化、数据过期策略、数据淘汰策略 查询一个不存在的数据,mysql查询不到数据也不会直接写入缓存,就会导致每次请求都查询数据库解决方案一:缓存空数据,查询返回的数据为空,仍把这个空结果进行缓存解决方案二:布隆过滤器当请求查询时,先在布隆过滤器中查询,如果过滤器中没有的话就直接返回 布隆过滤器是依赖bitmap位图实现的,当存储数据时,通过函数获取hash在数据存储中对应的位原创 2025-05-29 17:15:39 · 1272 阅读 · 0 评论
分享