又到了秋招的高峰“金九银十”,估计现在就已经有不少的程序猿(媛)朋友早就踏上刷题之路了吧!从 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,或做数据统计可用什么存储引擎
 
点击此处,即可领取啦

京公网安备 11010502036488号