前言
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 。如下图所示:
最后
考虑篇幅,就着重挑了一些常见的重要的面试题展示出来了。
所有的面试题目都不是一成不变的,上面的面试题只是给大家一个借鉴作用,最主要的是给自己增加知识的储备,有备无患。
资料获取方式:点赞+转发之后,【戳此处】即可获取!