独家!精挑细选三个月的臻品 Java 面试题,无糟粕!高质量
前言:
在各大 IT 交流平台上都搜索不到的最新最完整详细的 Java 面试题文档,文章概括:
“Spring+JVM+Spring Boot+Dubbo+MySQL+Redis+Linux+并发面试”,足够详细!足够完整!足够精选!没有那么多糟粕,留下的都是精华!行与不行,看完说话!
Spring 面试专题
Spring 框架是一个为 Java 应用程序的开发提供了综合、广泛的基础性支持的 Java 平台。
什么是 Spring 框架?Spring 框架有哪些主要模块?
使用 Spring 框架能带来哪些好处?
什么是控制反转(IOC)?什么是依赖注入?
请解释下 Spring 框架中的 IoC?
BeanFactory 和 ApplicationContext 有什么区别?
Spring 有几种配置方式?
如何用基于 XML 配置的方式配置 Spring?
如何用基于 Java 配置的方式配置 Spring?
怎样用注解的方式配置 Spring?
请解释 Spring Bean 的生命周期?
Spring Bean 的作用域之间有什么区别?
什么是 Spring inner beans?
Spring 框架中的单例 Beans 是线程安全的么?
请举例说明如何在 Spring 中注入一个 Java Collection?
如何向 Spring Bean 中注入一个 Java.util.Properties?
请解释 Spring Bean 的自动装配?
请解释自动装配模式的区别?
如何开启基于注解的自动装配?
请举例解释 @Required 注解?
请举例解释 @Autowired 注解?
请举例说明 @Qualifier 注解?
构造方法注入和设值注入有什么区别?
Spring 框架中有哪些不同类型的事件?
FileSystemResource 和 ClassPathResource 有何区别?
Spring 框架中都用到了哪些设计模式?
Spring Boot 面试专题
Spring Boot 已经建立在现有 spring 框架之上。使用 spring 启动,我们避免了之前我们必须做的所有样板代码和配置。因此,Spring Boot 可以帮助我们以最少的工作量,更加健壮地使用现有的 Spring 功能。
什么是 Spring Boot?
Spring Boot 有哪些优点?
什么是 JavaConfig?
如何重新加载 Spring Boot 上的更改,而无需重新启动服务器?
Spring Boot 中的监视器是什么?
如何在 Spring Boot 中禁用 Actuator 端点安全性?
如何在自定义端口上运行 Spring Boot 应用程序?
什么是 YAML?
如何实现 Spring Boot 应用程序的安全性?
如何集成 Spring Boot 和 ActiveMQ?
如何使用 Spring Boot 实现分页和排序?
什么是 Swagger?你用 Spring Boot 实现了它吗?
什么是 Spring Profiles?
什么是 Spring Batch?
什么是 FreeMarker 模板?
如何使用 Spring Boot 实现异常处理?
您使用了哪些 starter maven 依赖项?
什么是 CSRF 攻击?
什么是 WebSockets?
什么是 AOP?
什么是 Apache Kafka?
我们如何监视所有 Spring Boot 微服务?
JVM 面试专题
JVM 是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。
内存模型以及分区,需要详细到每个区放什么。
堆里面的分区:Eden,survival (from+ to),老年代,各自的特点。
对象创建方法,对象的内存分配,对象的访问定位。
GC 的两种判定方法:
SafePoint 是什么
GC 第三种收集方法:标记清除、标记整理、复制算法的原理与特点,分别用在什么地方,如果让你优化收集方法,有什么思路?
GC 收集器有哪些?CMS 收集器与 G1 收集器的特点。
Minor GC 与 Full GC 分别在什么时候发生?
几种常用的内存调试工具:jmap、jstack、jconsole、jhat
类加载的几个过程:
JVM 内存分哪几个区,每个区的作用是什么?
如何判断一个对象是否存活?(或者 GC 对象的判定方法)
简述 java 垃圾回收机制?
java 中垃圾收集的方法有哪些?
java 内存模型
java 类加载过程?
简述 java 类加载机制?
类加载器双亲委派模型机制?
什么是类加载器,类加载器有哪些?
简述 java 内存分配与回收策略以及 Minor GC 和 Major GC
Dubbo 面试专题
Dubbo 是国内最出名的分布式服务框架,也是 Java 程序员必备的必会的框架之。
dubbo 服务集群配置(集群容错模式)
dubbo 通信协议 dubbo 协议为什么要消费者比提供者个数多:
dubbo 通信协议 dubbo 协议为什么不能传大包:
dubbo 通信协议 dubbo 协议为什么采用异步单一长连接:
dubbo 通信协议 dubbo 协议适用范围和适用场景
RMI 协议
Hessian 协议
http
Webservice
Thrif
Dubbo 中 zookeeper 做注册中心,如果注册中心集群都挂掉,发布者和订阅者之间还能通信么?
dubbo 服务负载均衡策略?
Dubbo 在安全机制方面是如何解决的
dubbo 连接注册中心和直连的区别
MySQL 面试专题
MySQL 是一种关系型数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。
数据库三范式是什么?
有哪些数据库优化方面的经验?
请简述常用的索引有哪些种类?
以及在 mysql 数据库中索引的工作机制是什么?
MySQL 的基础操作命令:
mysql 的复制原理以及流程。
mysql 支持的复制类型?
mysql 中 myisam 与 innodb 的区别?
mysql 中 varchar 与 char 的区别以及 varchar(50)中的 50 代表的涵义?
MySQL 中 InnoDB 支持的四种事务隔离级别名称,以及逐级之间的区别?
表中有大字段 X(例如:text 类型),且字段 X 不会经常更新,以读为为主,将该字段拆成子表好处是什么?
MySQL 中 InnoDB 引擎的行锁是通过加在什么上完成(或称实现)的?
MySQL 中控制内存分配的全局参数,有哪些?
若一张表中只有一个字段 VARCHAR(N)类型,utf8 编码,则 N 最大值为多少(精确到数量级即可)
[SELECT *] 和[SELECT 全部字段]的 2 种写法有何优缺点?
HAVNG 子句 和 WHERE 的异同点?
MySQL 当记录不存在时 insert,当记录存在时 update,语句怎么写?
MySQL 的 insert 和 update 的 select 语句语法
Redis 面试专题
Redis 即远程字典服务,是一个开源的使用 ANSI C 语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value 数据库,并提供多种语言的 API。
什么是 Redis?简述它的优缺点?
Redis 与 memcached 相比有哪些优势?
Redis 支持哪几种数据类型?
Redis 主要消耗什么物理资源?
Redis 有哪几种数据淘汰策略?
Redis 官方为什么不提供 Windows 版本?
为什么 Redis 需要把所有数据放到内存中?
Redis 集群方案应该怎么做?都有哪些方案?
Redis 集群方案什么情况下会导致整个集群不可用?
MySQL 里有 2000w 数据,redis 中只存 20w 的数据,如何保证 redis 中的数据都是热点数据?
redis 内存数据集大小上升到一定大小的时候,就会施行数据淘汰策略。
Redis 有哪些适合的场景?
Redis 支持的 Java 客户端都有哪些?官方推荐用哪个?
Redis 和 Redisson 有什么关系?
Jedis 与 Redisson 对比有什么优缺点?
说说 Redis 哈希槽的概念?
Redis 集群的主从复制模型是怎样的?
Redis 集群会有些操作丢失吗?为什么?
Redis 集群之间是如何复制的?
Redis 集群最大节点个数是多少?
Redis 集群如何选择数据库?
Redis 中的管道有什么用?
怎么理解 Redis 事务?
Redis 事务相关的命令有哪几个?
Redis key 的过期时间和永久有效分别怎么设置?
Redis 如何做内存优化?
Redis 回收进程如何工作的?
加锁机制
锁互斥机制
watch dog 自动延期机制
可重入加锁机制
释放锁机制
上述 Redis 分布式锁的缺点
使用过 Redis 分布式锁么,它是怎么实现的?
使用过 Redis 做异步队列么,你是怎么用的?有什么缺点?
什么是缓存穿透?如何避免?什么是缓存雪崩?何如避免?
Linux 面试专题
Linux,全称 GNU/Linux,是一套免费使用和自由传播的类 UNIX 操作系统
Linux 中主要有哪几种内核锁?
Linux 中的用户模式和内核模式是什么含义?
怎样申请大块内核内存?
用户进程间通信主要哪几种方式?
通过伙伴系统申请内核内存的函数有哪些?
Linux 虚拟文件系统的关键数据结构有哪些?(至少写出四个)
对文件或设备的操作函数保存在哪个数据结构中?
Linux 中的文件包括哪些?
创建进程的系统调用有哪些?
调用 schedule()进行进程切换的方式有几种?
Linux 调度程序是根据进程的动态优先级还是静态优先级来调度进程的?
进程调度的核心数据结构是哪个?
如何加载、卸载一个模块?
模块和应用程序分别运行在什么空间?
Linux 中的浮点运算由应用程序实现还是内核实现?
模块程序能否使用可连接的库函数?
TLB 中缓存的是什么内容?
Linux 中有哪几种设备?
字符设备驱动程序的关键数据结构是哪个?
设备驱动程序包括哪些功能函数?
如何唯一标识一个设备?
Linux 通过什么方式实现系统调用?
Linux 软中断和工作队列的作用是什么?
并发面试专题
所谓并发编程是指在一台处理器上“同时”处理多个任务。并发生在同一实体上的多个事件。多个事件在同一时间间隔发生。
Synchronized 相 关 问 题
问 题 一 : Synchronized 用过吗,其原理是什么?
问 题 二 : 你刚才提到获取对象的锁,这个 “ 锁 ” 到底是什么?如何确定对象的锁?
问 题 三 : 什么是可重入性,为什么说 Synchronized 是可重入锁?
问 题 四 : JVM 对 Java 的原生锁做了哪些优化?
问 题 五 : 为什么说 Synchronized 是非公平锁?
问 题 六 : 什么是锁消除和锁粗化?
问 题 七 : 为什么说 Synchronized 是一个悲观锁?乐观锁的实现原理又是什么?什么是 CAS,它有什么特性?
问 题 八 : 乐观锁一定就是好的吗?
可重入锁 ReentrantLock 及其他显式锁相关问题
问 题 一 :跟 Synchronized 相比, 可重入锁 ReentrantLock 其实现原理有什么不同?
问 题 二 : 那么请谈谈 AQS 框架是怎么回事儿?
问 题 三 : 请尽可能详尽地对比下 Synchronized 和 ReentrantLock 的异同。
问 题 四 : ReentrantLock 是如何实现可重复性的?
问 题 五 : 除了 ReetrantLock,你还接触过 JUC 中的哪些并发工具?
问 题 六 : 请谈谈 ReadWriteLock 和 StampedLock。
问 题 七 : 如何让 Java 的线程彼此同步?你了解过哪些同步器? 请分别介绍下。
问 题 八 : CyclicBarrier 和 CountDownLatch 看起来很相似,请对比下呢?
Java 线 程 池 相 关 问 题
问 题 一 : Java 中的线程池是如何实现的?
问 题 二 : 创建线程池的几个核心构造参数?
问 题 三 : 线程池中的线程是怎么创建的?是一开始就随着线程池的启动创建好的吗?
问 题 四 : 既然提到可以通过配置不同参数创建出不同的线程池,那么 Java 中默认实现好的线程池又有哪些呢?请比较它们的异同。
问 题 五 : 如何在 Java 线程池中提交线程?
Java 内存模型相关问题
问 题 一 : 什么是 Java 的内存模型, Java 中各个线程是怎么彼此看到对方的变量的?
问 题 二 : 请谈谈 volatile 有什么特点,为什么它能保证变量对所有线程的可见性?
问 题 三 : 既然 volatile 能够保证线程间的变量可见性,是不是就意味着基于 volatile 变量的运算就是并发安全的?
问 题 四 : 请对比下 volatile 对比 Synchronized 的异同。
问 题 五 : 请谈谈 ThreadLocal 是怎么解决并发安全的?
问 题 六 : 很多人都说要慎用 ThreadLocal,谈谈你的理解,使用 ThreadLocal 需要注意些什么?
由于文章篇幅原因,这里只展示了部分文档和答案,需要完整面试资料的,点击此处即可免费获取到
评论