我掏空了各大搜索引擎,给你整理了 188 道 Java 面试题,满满干货记得收藏
前言:时间不等人,2020 年转眼就过去了,春招在疫情中度过,不知有多少人还在惋惜...
又是一年春招的高峰“金三银四”,估计现在就已经有不少的程序猿(媛)朋友早就踏上刷题之路了吧!从 7 月份开始老光就在整理“Java 一线大厂高岗面试题”,一题一题的抠,整出了这份[188 道 Java 面试题汇总(附解析)]希望能对大家有所帮助。
Java 集合 17 题
1. JDK 和 JRE 有什么区别?
2. == 和 equals 的区别是什么?
3. 两个对象的 hashCode() 相同,则 equals() 也一定为 true,对吗?
4. final 在 Java 中有什么作用?
5. Java 中的 Math. round(-1. 5) 等于多少?
6. String 属于基础的数据类型吗?
7. Java 中操作字符串都有哪些类?它们之间有什么区别?
8. String str="i"与 String str=new String("i")一样吗?
9. 如何将字符串反转?
10. String 类的常用方法都有那些?
11. 抽象类必须要有抽象方法吗?
12. 普通类和抽象类有哪些区别?
13. 抽象类能使用 final 修饰吗?
14. 接口和抽象类有什么区别?
15. Java 中 IO 流分为几种?
16. BIO、NIO、AIO 有什么区别?
17. Files 的常用方法都有哪些?
多线程 22 题
并行和并发有什么区别?
线程和进程的区别?
守护线程是什么?
创建线程有哪几种方式?
说一下 runnable 和 callable 有什么区别?
线程有哪些状态?
sleep() 和 wait() 有什么区别?
notify()和 notifyAll()有什么区别?
线程的 run() 和 start() 有什么区别?
创建线程池有哪几种方式?
线程池都有哪些状态?
线程池中 submit() 和 execute() 方法有什么区别?
在 Java 程序中怎么保证多线程的运行安全?
多线程中 synchronized 锁升级的原理是什么?
什么是死锁?
怎么防止死锁?
ThreadLocal 是什么?有哪些使用场景?
说一下 synchronized 底层实现原理?
synchronized 和 volatile 的区别是什么?
synchronized 和 Lock 有什么区别?
synchronized 和 ReentrantLock 区别是什么?
说一下 atomic 的原理?
JVM 18 题
你知道哪些或者你们线上使用什么 GC 策略? 它有什么优势,适用于什么场景?
JAVA 类加载器包括几种?它们之间的父子关系是怎么样的?双亲委派机制是什么意思?有什么好处?
如何自定义一个类加载器?你使用过哪些或者你在什么场景下需要一个自定义的类加载器吗?
堆内存设置的参数是什么?
Perm Space 中保存什么数据? 会引起 OutOfMemory 吗?
做 gc 时,一个对象在内存各个 Space 中被移动的顺序是什么?
你有没有遇到过 OutOfMemory 问题?你是怎么来处理这个问题的?处理过程中有哪些收获?
1.8 之后 Perm Space 有哪些变动? MetaSpace 大小默认是无限的么? 还是你们会通过什么方式来指定大小?
Jstack 是干什么的? Jstat 呢? 如果线上程序周期性地出现卡顿,你怀疑可能是 gc 导致的,你会怎么来排查这个问题?线程日志一般你会看其中的什么部分?
StackOverFlow 异常有没有遇到过?一般你猜测会在什么情况下被触发?如何指定一个线程的堆栈大小?一般你们写多少?
说一下类装载的执行过程?
怎么判断对象是否可以被回收?
Java 中都有哪些引用类型?
说一下 JVM 有哪些垃圾回收算法?
新生代垃圾回收器和老生代垃圾回收器都有哪些?有什么区别?
简述分代垃圾回收器是怎么工作的?
说一下 JVM 调优的工具?
常用的 JVM 调优的参数都有哪些?
RabbitMQ 17 题
RabbitMQ 的使用场景有哪些?
RabbitMQ 有哪些重要的角色?
RabbitMQ 有哪些重要的组件?
RabbitMQ 中 vhost 的作用是什么?
RabbitMQ 的消息是怎么发送的?
RabbitMQ 怎么保证消息的稳定性?
RabbitMQ 怎么避免消息丢失?
要保证消息持久化成功的条件有哪些?
RabbitMQ 持久化有什么缺点?
RabbitMQ 有几种广播类型?
RabbitMQ 怎么实现延迟消息队列?
RabbitMQ 集群有什么用?
RabbitMQ 节点的类型有哪些?
RabbitMQ 集群搭建需要注意哪些问题?
RabbitMQ 每个节点是其他节点的完整拷贝吗?为什么?
RabbitMQ 集群中唯一一个磁盘节点崩溃了会发生什么情况?
RabbitMQ 对集群节点停止顺序有要求吗?
MySQL 14 题
如果有很多数据插入 MYSQL 你会选择什么方式?
如果查询很慢,你会想到的第一个方式是什么?索引是干嘛的?
如果建了一个单列索引,查询的时候查出 2 列,会用到这个单列索引吗?
如果建了一个包含多个列的索引,查询的时候只用了第一列,能不能用上这个索引?查三列呢?
接上题,如果 where 条件后面带有一个 i + 5 < 100 会使用到这个索引吗?
怎么看是否用到了了某个索引?
like %aaa%会使用索引吗? like aaa%呢?
drop、truncate、delete 的区别?
平时你们是怎么监控数据库的? 慢 SQL 是怎么排查的?
你们数据库是否支持 emoji 表情,如果不支持,如何操作?
你们的数据库单表数据量是多少?一般多大的时候开始出现查询性能急剧下降?
查询死掉了,想要找出执行的查询进程用什么命令?找出来之后一般你会干嘛?
读写分离是怎么做的?你认为中间件会怎么来操作?这样操作跟事务有什么关系?
分库分表有没有做过?线上的迁移过程是怎么样的?如何确定数据是正确的?
springboot 22 题
什么是 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 微服务?
Spring Cloud 8 题
什么是 Spring Cloud?
使用 Spring Cloud 有什么优势?
服务注册和发现是什么意思?Spring Cloud 如何实现?
负载平衡的意义什么?
什么是 Hystrix?它如何实现容错?
什么是 Hystrix 断路器?我们需要它吗?
什么是 Netflix Feign?它的优点是什么?
什么是 Spring Cloud Bus?我们需要它吗?
监控、稳定性 4 题
业务日志是通过什么方式来收集的?
线上机器如何监控?采用什么开源产品或者自研的产品?它是分钟级的还是秒级的?
如果让你来想办法收集一个 JAVA 后端应用的性能数据,你会在意哪些方面? 你会选择什么样的工具、思路来收集?
一般你调用第三方的时候会不会监控调用情况?
Redis - 14 题
缓存穿透可以介绍一下么?你认为应该如何解决这个问题
你是怎么触发缓存更新的?(比如设置超时时间(被动方式), 比如更新的时候主动 update)?如果是被动的方式如何控制多个入口同时触发某个缓存更新?
你们用 Redis 来做什么?为什么不用其他的 KV 存储例例如 Memcached,Cassandra 等?
你们用什么 Redis 客户端? Redis 高性能的原因大概可以讲一些?
你熟悉哪些 Redis 的数据结构? zset 是干什么的? 和 set 有什么区别?
Redis 的 hash, 存储和获取的具体命令叫什么名字?
LPOP 和 BLPOP 的区别?
Redis 的有一些包含 SCAN 关键字的命令是干嘛的? SCAN 返回的数据量是固定的吗?
Redis 中的 Lua 有没有使用过? 可以用来做什么? 为什么可以这么用?
Redis 的 Pipeline 是用来干什么的? -- 运维
Redis 持久化大概有几种方式? aof 和 rdb 的区别是什么? AOF 有什么优缺点吗?
Redis Replication 的大致流程是什么? bgsave 这个命令的执行过程? -- 偏题
如果有很多 KV 数据要存储到 Redis, 但是内存不足, 通过什么方式可以缩减内存? 为什么这样可以缩小内存?
Redis 中 List, HashTable 都用到了 ZipList, 为什么会选择它
一线互联网企业精品面试题 60 道
junit 用法,before,beforeClass,after, afterClass 的执行顺序
分布式锁
nginx 的请求转发算法,如何配置根据权重转发
用 hashmap 实现 redis 有什么问题(死锁,死循环,可用 ConcurrentH ashmap)
线程的状态
线程的阻塞的方式
sleep 和 wait 的区别
hashmap 的底层实现
一万个人抢 100 个红包,如何实现(不用队列),如何保证 2 个人不能抢到同一个红包,可用分布式锁
java 内存模型,垃圾回收机制,不可达算法
两个 Integer 的引用对象传给一个 swap 方法在方法内部交换引用,返回后,两个引用的值是否会发现变化
aop 的底层实现,动态代理是如何动态,假如有 100 个对象,如何动态 的为这 100 个对象代理
是否用过 maven install。 maven test。git(make install 是安装本地 jar 包)
tomcat 的各种配置,如何配置 docBase
spring 的 bean 配置的几种方式
web.xml 的配置
spring 的监听器。
zookeeper 的实现机制,有缓存,如何存储注册服务的
IO 会阻塞吗?readLine 是不是阻塞的
用过 spring 的线程池还是 java 的线程池?
字符串的格式化方法 (20,21 这两个问题问的太低级了)
时间的格式化方法
定时器用什么做的
线程如何退出结束
java 有哪些锁?乐观锁 悲观锁 synchronized 可重入锁 读写锁,用过 reentrantlock 吗?reentrantlock 与 synmchronized 的区别
ThreadLocal 的使用场景
java 的内存模型,垃圾回收机制
为什么线程执行要调用 start 而不是直接 run(直接 run,跟普通方法没 什么区别,先调 start,run 才会作为一个线程方法运行)
qmq 消息的实现机制(qmq 是去哪儿网自己封装的消息队列)
遍历 hashmap 的三种方式
jvm 的一些命令 31. memcache 和 redis 的区别
mysql 的行级锁加在哪个位置
ConcurrentHashmap 的锁是如何加的?是不是分段越多越好
myisam 和 innodb 的区别(innodb 是行级锁,myisam 是表级锁)
mysql 其他的性能优化方式
linux 系统日志在哪里看
如何查看网络进程
统计一个整数的二进制表示中 bit 为 1 的个数
jvm 内存模型,java 内存模型
如何把 java 内存的数据全部 dump 出来
如何手动触发全量回收垃圾,如何立即触发垃圾回收
hashmap 如果只有一个写其他全读会出什么问题
mybatis 如何映射表结构
二叉树遍历
主从复制
mysql 引擎区别
静态内部类加载到了哪个区?方法区
class 文件编译后加载到了哪
web 的 http 请求如何整体响应时间变长导致处理的请求数变少,该如何处理?用队列,当处理不了那么多 http 请求时将请求放到队列中慢慢处理,web 如何实现队列 77. 线程安全的单例模式
快速排序性能考虑
volatile 关键字用法
求表的 size,或做数据统计可用什么存储引擎
需要的朋友一键三连+评论,然后添加我的 VX(tkzl6666)即可免费领取。
评论 (1 条评论)