金九银十已经过半还没拿到 offer?阿里大牛熬夜整理的 Java 面试总结,网友已被震惊到说不出话!
2021 年已经过半了,我们所说的“金九银十”也已经过半了,时间晃眼就过去了,有的人为了 2021 跳槽早早做足了准备,有的人在临阵磨刀,想必屏幕前的你也想在 2021 年涨薪吧,那么问题来了,怎么才能达到目标呢,不妨跟我来看看为大家盘点整理的一些高频面试问题吧!!!
一、Java 基础
1.Java 有哪些数据类型?
2.final 有什么用?
3.介绍下 static。
4."=="和 equals 方法究竟有什么区别?
5.java 中有没有引用传递?
6.String s = "Hello";s = s + " world!";这两行代码执行后,原始的 String 对象中的内容到底变了没有?
7.Error 和 Exception 的区别是什么?
8.java 程序初始化顺序是怎样的?
9.java 中 IO 流分为几种?它们的区别是什么?
10.String 为什么使用 final 修饰?
11.BIO,NIO,AIO 有什么区别?
12.如何自定义注解?
13.什么是 hashCode()?
二、Java 进阶
1.什么是多态?java 中实现多态的机制是什么?
2.重载和重写的区别有哪些?
3.java 重载为什么与返回值无关?
4.抽象类和普通类的区别
5.抽象类和接口的区别
6.什么是反射?反射的实现方式?反射的应用。
7.创建对象有几种方式?
8.如何提高反射效率?
9.类加载器有哪些?
10.类加载的方式有几种,它们的区别是什么?
11.JVM 加载 class 文件的原理机制是什么(JVM 的类加载的原理机制是什么)?
12.什么是集合?集合和数组的区别。
13.常用的集合类有哪些?它们的区别是什么?
14.集合如何安全地批量删除元素?
15.java 怎么实现动态代理?有什么意义?
16.什么是死锁?死锁产生的原因是什么?如何避免死锁?
17.synchronized 的作用。
18.volatile 关键字的作用
19.线程怎么保持同步?
20.什么是 CAS?
21.乐观锁与悲观锁?乐观锁的实现方式?
22.Lock 与 synchronized 的区别。
三、MyBatis
1.MyBatis 是什么?
2.ORM 是什么?
3.为什么说 Mybatis 是半自动 ORM 映射工具?它与全自动的区别在哪里?
4.传统 JDBC 开发存在的问题。
5.JDBC 编程有哪些不足之处,MyBatis 是如何解决这些问题的?
6.Mybatis 优缺点。
7.MyBatis 框架适用场景。
8.Hibernate 和 MyBatis 的区别。
9.MyBatis 的解析和运行原理。
10.MyBatis 编程步骤是什么样的?
11.请说说 MyBatis 的工作原理。
12.MyBatis 的功能架构是怎样的?
13.MyBatis 的框架架构设计是怎么样的?
14.Mybatis 都有哪些 Executor 执行器?它们之间的区别是什么?
15.Mybatis 中如何指定使用哪一种 Executor 执行器?
16.Mybatis 是否支持延迟加载?如果支持,它的实现原理是什么?
17.#{}和 ${}的区别。
18.模糊查询 like 语句该怎么写?
19.在 mapper 中如何传递多个参数?
20.Mybatis 如何执行批量操作?
21.简述 Mybatis 的 Xml 映射文件和 Mybatis 内部数据结构之间的映射关系?
四、Spring
1.什么是 spring?Spring 是什么?
2.Spring 的优缺点是什么?为什么要用 Spring?
3.什么是控制反转(IOC)和依赖注入(DI)?意义是什么?实现机制是什么
4.什么是依赖注入--DI,依赖注入,是 IOC 的重要实现
5.什么是 AOP?意义是什么?实现原理是什么?具体怎么使用?Spring AOP 的通知类型和顺序是怎样的?
6.什么是 AOP--面向切面编程?
7.静态代理和动态代理的区别是什么?
8.如何强制 Spring AOP 使用 CGLIB 实现动态代理?
9.依赖注入实现原理和实现方式?
10.@Qualifier 注解有什么作用?
11.Spring 中对象的作用域是怎样的?怎么改变 Spring 中对象的作用域?
12.Spring 中对象是线程安全的吗?如何保证 Spring 中的对象线程安全?
13.如何保证 Spring 中的对象线程安全?
14.Spring Framework 中有多少个模块,它们分别是什么?
五、并发编程
基础知识
1.线程和进程区别
2.创建线程的四种方式
3.as-if-serial 规则和 happens-before 规则的区别
......
Lock 体系
1.Lock 简介与初识 AQS
2.乐观锁的实现方式,什么是 CAS?
3.什么是死锁?
4.死锁与活锁的区别,死锁与饥饿的区别?
5.AQS(AbstractQueuedSynchronizer)详解与源码分析
并发容器
1.并发容器之 CopyOnWriteArrayList 详解
2.并发容器之 ThreadLocal 详解
3.并发容器之 ConcurrentHashMap 详解(JDK1.8 版本)与源码分析
4.并发容器之 BlockingQueue 详解
5.ThreadLocal 内存泄漏分析与解决方案
线程池
1.Executors 类创建四种常见线程池
2.线程池之 ThreadPoolExecutor 详解
六、中间件
RabbitMQ
1.rabbitmq 的使用场景有哪些?
2.rabbitmq 有哪些重要的角色?
3.rabbitmq 有哪些重要的组件?
4.rabbitmq 中 vhost 的作用是什么?
5.rabbitmq 的消息是怎么发送的?
6.rabbitmq 怎么保证消息的稳定性?
7.rabbitmq 怎么避免消息丢失?
8.要保证消息持久化成功的条件有哪些?
9.rabbitmq 持久化有什么缺点?
10.rabbitmq 怎么实现延迟消息队列?
11.rabbitmq 对集群节点停止顺序有要求吗?
Kafka
1.kafka 可以脱离 zookeeper 单独使用吗?为什么?
2.kafka 有几种数据保留的策略?
3.kafka 同时设置了 7 天和 10G 清除数据,到第五天的时候消息达到了 10G,这个时候 kafka 将如何处理?
4.什么情况会导致 kafka 运行变慢?
5.使用 kafka 集群需要注意什么?
Zookeeper
1.zookeeper 是什么?
2.zookeeper 都有哪些功能?
3.zookeeper 有几种部署模式?
4.zookeeper 怎么保证主从节点的状态同步?
5.集群中为什么要有主节点?
6.集群中有 3 台服务器,其中一个节点宕机,这个时候 zookeeper 还可以使用吗?
7.说一下 zookeeper 的通知机制?
七、数据库
MySql
1.说一下数据库的事务隔离?
2.说一下 mysql 常用的引擎?
3.说一下 mysql 的行锁和表锁?
4.说一下乐观锁和悲观锁?
5.mysql 问题排查都有哪些手段?
6.如何做 mysql 的性能优化?
7.怎么验证 mysql 的索引是否满足需求?
8.数据库的三范式是什么?
9.说一下 ACID 是什么?
10.如何获取当前数据库版本?
Redis
1.redis 是什么?都有哪些使用场景?
2.redis 和 memecache 有什么区别?
3.redis 为什么是单线程的?
4.edis 和 redisson 有哪些区别?
5.怎么保证缓存和数据库数据的一致性?
6.redis 持久化有几种方式?
7.redis 怎么实现分布式锁?
8.redis 分布式锁有什么缺陷?
9.redis 如何做内存优化?
10.redis 淘汰策略有哪些?
JVM
1.说一下 jvm 运行时数据区?
2.说一下堆栈的区别?
3.队列和栈是什么?有什么区别?
4.什么是双亲委派模型?
5.说一下类加载的执行过程?
6.怎么判断对象是否可以被回收?
7.java 中都有哪些引用类型?
8.说一下 jvm 有哪些垃圾回收算法?
9.说一下 jvm 有哪些垃圾回收器?
10.详细介绍一下 CMS 垃圾回收器?
总结
面试题包括以下十九个模块: Java 基础、容器、多线程、反射、对象拷贝、Java Web 模块、异常、网络、设计模式、Spring/Spring MVC、Spring Boot/Spring Cloud、Hibernate、Mybatis、RabbitMQ、Kafka、Zookeeper、MySql、Redis、JVM 。如下图所示:
最后
考虑篇幅,就着重挑了一些常见的重要的面试题展示出来了。
所有的面试题目都不是一成不变的,上面的面试题只是给大家一个借鉴作用,最主要的是给自己增加知识的储备,有备无患。
资料获取方式:仅需添加小助理 vx:XIaonan00000621 即可获取免费下载方式!
重要的事情说三遍,转发+转发+转发,一定要记得转发哦!!!
评论