又到了秋招的高峰“金九银十”,估计现在就已经有不少的程序猿(媛)朋友早就踏上刷题之路了吧!从 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 导致的,你会怎么来排查这个问题?线程日志一般你会看其中的什么部分?
-
* 异常有没有遇到过?一般你猜测会在什么情况下被触发?如何指定一个线程的堆栈大小?一般你们写多少?
-
说一下类装载的执行过程?
-
怎么判断对象是否可以被回收?
-
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,或做数据统计可用什么存储引擎
关注公众号(骑着猪追马的程序员),领取即可啦