首页
AI Coding
NEW
沸点
课程
直播
活动
AI刷题
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
会员
登录
注册
Java 面试宝典
大明哥09
创建于2024-03-10
订阅专栏
一份靠谱、强大、详细、经典的 Java 面试宝典
等 27 人订阅
共21篇文章
创建于2024-03-10
订阅专栏
默认顺序
默认顺序
最早发布
最新发布
面试官:JDBC 是如何打破双亲委派模型的?
回答 在 JDBC 4.0之后使用spi机制才会破坏双亲委派机制。 java.sql.DriverManager 在初始化时会调用 ServiceLoader 的 load() 去加载实现了java.
面试官:Spring解决循环依赖一定需要三级缓存吗?
回答 不一定需要! Spring 三级缓存是解决循环依赖根本所在,但是,并不是说每种情况下解决循环依赖都必须使用三级缓存。对于无代理的单例 Bean,Spring 也可以仅需要二级缓存就可以解决循环依
面试官:HashMap的容量为什么一定是2^n?
回答 HashMap 的容量被设计为 2^n,主要有如下几个优势: 位运算效率:与使用取模(%)操作相比,使用位运算来计算索引位置更加高效。当容量是 2^n 时,计算索引的公式可以从 (hash %
面试官:Spring是如何解决循依赖问题?
Spring 的循环依赖一直都是 Spring 中一个很重要的话题,一方面是 Spring 为了解决循环依赖做了很多工作,另一个方面是因为它是面试 Spring 的常客,因为他要求你看过 Spring
面试官:什么是CAS?存在什么问题?
回答 CAS,Compare And Swap,即比较并交换,它一种无锁编程技术的核心机制。其工作方式分为两步: 比较:它首先会比较内存中的某个值(V)与预期的值(A)是否相等。 **交换:**如果相
面试官:为什么 Redis 6.0 之后引入多线程?
回答 Redis 的性能瓶颈从来都不是 CPU,是网络I/O 和内存。 内存好解决,加机器内存和优化数据结构。 网路 I/O 的优化才是大头,因为读写网络的 read/write 系统调用占用了Red
面试官:synchronized的锁升级过程是怎样的?
回答 在 JDK 1.6之前,synchronized 是一个重量级、效率比较低下的锁,但是在JDK 1.6后,JVM 为了提高锁的获取与释放效,,对 synchronized 进行了优化,引入了偏向
面试官:ThreadLocal为什么会导致内存泄漏?如何解决的?
哪些地方可能存在内存泄露 ThreadLocal 的实现原理:每一个 Thread 维护一个 ThreadLocalMap,key 为使用弱引用的 ThreadLocal 实例,value 为线程变量
Java 面试宝典:线程池的核心线程会被回收吗?
回答 默认情况下,线程池的核心线程是不会被回收的,即使它们处于空闲状态。但是 ThreadPoolExecutor 还是提供了一个参数来控制这个行为,通过 allowCoreThreadTimeOut
Java 面试宝典:怎么使用 Redis 实现一个延时队列?
回答 Redis 本身是不支持延时队列的,但是我们可以利用 Redis 一些特定的数据结构和特性来实现延时队列。 基于 Redis 目前有三种方式可以实现延时队列: 利用 Redis 过期消息实现延时
Java 面试宝典:Redis 中的 List 是如何实现的?
回答 Redis 中的 List 数据结构是一个双向链表,用于存储一个序列的数据,它类似于 Java 中的数组或列表,其底层实现分为两个版本: 3.2 版本以前使用 linkedlist + zipl
Java 面试宝典:synchronized的锁升级过程是怎样的?
在 JDK 1.6之前,synchronized 是一个重量级、效率比较低下的锁,但是在JDK 1.6后,JVM 为了提高锁的获取与释放效,,对 synchronized 进行了优化,引入了偏向锁和轻
Java 面试宝典:你知道多少种解决 hash 冲突的方法?
回答 在使用 hash 表时, hash 冲突是一个非常常见的问题,该问题出现的主要原因是两个不同的输入值,通过 hash 函数计算得到了相同的 hash 值,尝试存储在 hash 表的同一个位置。解
Java 面试宝典:你知道 Thread.sleep(0) 的作用是什么吗?
回答 让当前线程主动让出 CPU,触发操作系统立刻重新进行一次CPU竞争,使其他具有相同或更高优先级的线程有机会运行。 分析 我们都知道 Thread.sleep(n) 表示让线程暂停 n 久,同时让
Java 面试宝典:Redis 的线程模型是怎么样的?
Redis 的线程模型其实是分两块的: Redis 6.0 之前的单线程模型。其实从 4.0 开始,Redis 并不是严格意义上的单线程模型,因为 Redis 除了主线程外,也有一些后台的线程或者子进
Java 面试宝典:你是如何理解常量池的?
回答 常量池是 JVM 的一部分,主要用于存储类和接口中的编译时常量以及运行时被解析的引用。它有如下两种: class 文件常量池 class 文件常量池是指在 Java 代码编译成字节码文件(.cl
Java 面试宝典:请说下你对 Netty 中Reactor 模式的理解
回答 Reactor 模式是一种高效处理并发网络事件的设计模式,它通过一组 Reactor 线程(事件循环组)来监听和分发网络事件(如连接、读取、写入),并结合非阻塞 I/O 和用户定义的事件处理器来
Java 面试宝典:什么是可见性?volatile 是如何保证可见性的?
什么是可见性? 可见性是指一个线程对共享变量所作的修改能够被其他线程及时地看到。 在单核时代,其实是不存在可见性问题的,因为所有的线程都是在一个CPU中工作的,一个线程的写操作对于其他的线程一定是可见
Java 面试宝典:什么是大 key 问题?如何解决?
回答 Redis 大 key 问题是指某个 key 对应的 value 值很大(注意,不是 key 很大)。大 key 会导致 Redis 性能降低、数据倾斜以及主从同步等问题。一般来说我们应该杜绝大
Java 面试宝典:volatile 的使用场景有哪些?
回答 volatile 是一种轻量级的同步机制,它能保证共享变量的可见性,同时禁止重排序保证了操作的有序性,但是它无法保证原子性。所以使用 volatile 必须要满足这两个条件: 写入变量不依赖当前
下一页