前言:时间不等人,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导致的,你会怎么来排查这个问题?线程日志一般你会看其中的什么部分?
- *异常有没有遇到过?一般你猜测会在什么情况下被触发?如何指定一个线程的堆栈大小?一般你们写多少?
-
说一下类装载的执行过程?
-
怎么判断对象是否可以被回收?
-
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)即可免费领取。