java面试常问的问题分类 ,欢迎补充
大家可以补充常见问题,以下是几个老IT
Redis
说说你对redis的理解
在项目中为什要使用Redis?
如果不用redis,你会选择什么框架来代替
缓存如果使用不当会造成什么后果?
Redis都有哪些数据类型?分别在哪些场景下使用比较合适?
Redis 支持的数据类型有哪些?
缓存雪崩和缓存穿透问题解决方案 ?
如何保证缓存与数据库双写时的数据一致性?
Redis 持久化有几种方式?
redis 内存淘汰机制?
为什么 Redis 需要把所有数据放到内存中?
Redis 集群方案应该怎么做?都有哪些方案?
Redis 集群方案什么情况下会导致整个集群不可用?
使用过 Redis 分布式锁么,它是怎么实现的?
redis 和 memcached 什么区别?为什么高并发下有时单线程的 redis 比多线程的memcached 效率要高?
Redis 常见的性能问题和解决方案
Redis 的数据淘汰策略有哪些
使用 Redis 做过异步队列吗,是如何实现的
Redis 如何实现延时队列
说说你使用redis的最佳实践
Redis 支持的 Java 客户端都有哪些?官方推荐用哪个?
Redis 回收进程如何工作的?
Mysql
你是如何生成唯一键的?自增ID的作用是什么?
你是如何理解mysql utf8的?
说一下ACID是什么?
MySQL的内连接、左连接、右连接有什么区别?
如何获取当前数据库版本?
如何做 MySQL的性能优化?
mysql的事务是怎么理解的?
哪些情况需要用到事务,哪些可以不必使用事务?
为什么会有最左前缀原则 ?
数据库索引为什么要使用B+树?
如何实现mysql的读写分离?
MySQL主从复制原理的是啥?
如何解决mysql主从同步的延时问题?
MySQL 用 limit 为什么会影响性能?
说一下MySQL常用的引擎?
说一下MySQL的行锁和表锁?
说说如果性能不好,你会怎么做,如何优化?
优化的步骤是什么?
说说你使用Mysql的最佳实践
JAVA
String 和 StringBuffer、StringBuilder 的区别是什么?
Arraylist 与 LinkedList 异同?
Java的基本类型?
String 属于基础的数据类型吗?
Java中IO流分为几种?
BIO、NIO、AIO 有什么区别?
Files的常用方法都有哪些?
如何理解线程的?线程和进程的区别子啊哪里
哪些集合类是线程安全的?
Array 和 ArrayList 有何区别?
如何实现数组和 List 之间的转换?
并行和并发有什么区别?
创建线程有哪几种方式?
线程有哪些状态?
throw 和 throws 的区别?
HashMap 的工作原理是什么?
Hashmap 什么时候进行扩容呢?
heap 和 stack 有什么区别。
Java 集合类框架的基本接口有哪些?
什么是迭代器 (Iterator)?
Iterator 和 ListIterator 的区别是什么?
Java 集合类框架的最佳实践有哪些?
简述 Java 垃圾回收机制
如何判断一个对象是否存活?(或者 GC 对象的判定方法)
垃圾回收的优点和原理。并考虑 2 种回收机制
垃圾回收器的基本原理是什么?垃圾回收器可以马上回收内存吗?有什么办法主动通知虚拟机进行垃圾回收?
Java 中会存在内存泄漏吗,请简单描述
Synchronized 用过吗,其原理是什么?
你刚才提到获取对象的锁,这个“锁”到底是什么?如何确定对象的锁?
什么是可重入性,为什么说 Synchronized 是可重入锁?
JVM 对 Java 的原生锁做了哪些优化?
为什么说 Synchronized 是非公平锁?
什么是锁消除和锁粗化?
线程池中的线程是怎么创建的?是一开始就随着线程池的启动创建好的吗?
如何在 Java 线程池中提交线程?
什么是 Java 的内存模型,Java 中各个线程是怎么彼此看到对方的变量的?
请谈谈 volatile 有什么特点,为什么它能保证变量对所有线程的可见性?
既然 volatile 能够保证线程间的变量可见性,是不是就意味着基于 volatile 变量的运算就是并发安全的?
请对比下 volatile 对比 Synchronized 的异同。
请谈谈 ThreadLocal 是怎么解决并发安全的?
很多人都说要慎用 ThreadLocal,谈谈你的理解,使用 ThreadLocal 需要注意些什么?
为什么说 Synchronized 是一个悲观锁?乐观锁的实现原理又是什么?什么是 CAS,它有什么特性?
跟 Synchronized 相比,可重入锁 ReentrantLock 其实现原理有什么不同?
那么请谈谈 AQS 框架是怎么回事儿?
请尽可能详尽地对比下 Synchronized 和 ReentrantLock 的异同。
Java 中的线程池是如何实现的?
创建线程池的几个核心构造参数?
设计模式
请列举出在 JDK 中几个常用的设计模式?
什么是设计模式?你是否在你的代码里面使用过任何设计模式?
Java 中什么叫单例设计模式?请用 Java 写出线程安全的单例模式
在 Java 中,什么叫观察者设计模式(observer design pattern)?
使用工厂模式最主要的好处是什么?在哪里使用?
举一个用 Java 实现的装饰模式(decorator design pattern)?它是作用于对象层次还是类层次?
在 Java 中,为什么不允许从静态方法中访问非静态变量?
在 Java 中,什么时候用重载,什么时候用重写?
举例说明什么情况下会更倾向于使用抽象类而不是接口
消息队列MQ
你在系统里用过消息队列吗?
那你说一下你们在项目里是怎么用消息队列的?
那你们为什么使用消息队列啊?
那你说说用消息队列都有什么优点和缺点?
kafka、activemq、rabbitmq、rocketmq都有什么区别?
那你们是如何保证消息队列的高可用啊?
如何保证消息不被重复消费啊?如何保证消费的时候是幂等的啊?
如何保证消息的可靠性传输啊?要是消息丢失了怎么办啊?
那如何保证消息的顺序性?
如何解决消息队列的延时以及过期失效问题?
消息队列满了以后该怎么处理?
为什么要使用 RabbitMQ?
RabbitMQ 应用场景?
MQ 的空间与时间解耦是什么?
常用的主流消息中间件都有哪些?
如何构建一个简单的生产者与消费者模型?
Netty
BIO、NIO和AIO的区别?
NIO的组成?
Netty的特点?
Netty的线程模型?
TCP 粘包/拆包的原因及解决方法?
了解哪几种序列化协议?
如何选择序列化协议?
Netty的零拷贝实现?
Netty的高性能表现在哪些方面?
NIOEventLoopGroup源码?
网络
说说 TCP 三次握手和四次挥手?
Nginx 反向代理实现高并发的具体步骤是什么?
Nginx 搭建 Tomcat 集群的核心配置应该怎么写?
nginx服务器的web请求处理机制是怎么样的
如何优化nginx?
Spring
什么是 Spring 框架?Spring 框架有哪些主要模块?
使用 Spring 框架能带来哪些好处?
BeanFactory 和 ApplicationContext 有什么区别?
请解释 Spring Bean 的生命周期?
IoC 属于哪种设计模式?
谈谈你对 Spring IoC 和 DI 的理解,它们有什么区别?
简单谈谈IoC 容器的原理。
Spring Bean 的作用域之间有什么区别?
IoC 容器自动完成装载,默认的方式是?
Spring AOP 的原理是什么?都有哪些具体的应用场景?
Spring 框架中有哪些不同类型的事件?
FileSystemResource 和 ClassPathResource 有何区别?
Spring 框架中都用到了哪些设计模式?
Spring 有几种配置方式?
bean的scope有几种类型?请详细列举。
说说 IoC中的继承和 Java 继承的区别。
IoC中car 对象的配置如下,现在要添加 user 对象,并且将 car 注入到 user 中,正确的配置是?
请分别写出 IoC 静态工厂方法和实例工厂方法的配置。
IoC 自动装载有几种方式?
请解释 Spring Bean 的自动装配?
请解释自动装配模式的区别?
如何开启基于注解的自动装配?
Spring MVC
简单谈谈你对 MVC 的理解。
什么是 Spring MVC ?简单介绍下你对 Spring MVC 的理解?
Spring MVC 的优点有哪些?Spring MVC
Spring MVC 的核心组件有哪些?
Spring MVC 的实现流程是什么?Spring MVC
Spring MVC 怎么样设定重定向和转发的?
如何解决 POST 请求和 GET 请求的中文乱码问题?
@ModelAttribute 注解应该如何使用?
Spring Boot
谈谈你对 Spring Boot 的理解?
Spring Boot 的优势是什么?为什么要使用 Spring Boot?
Spring Boot 的配置文件有几种格式?区别是什么?
谈谈你知道的 Spring Boot 核心注解。
如何自动开启 Spring Boot 各个组件?
Spring Boot 中 starter 的原理是什么?
Spring Boot 不能使用 XML 配置,这句话对吗?
什么是 Thymeleaf?
Spring Cloud
什么是 Spring Cloud?
Spring Cloud 和 Spring 之间有什么关联关系?
Spring Cloud 实现服务注册和发现的原理是什么?
Ribbon 和 Feign 有什么区别?
为什么要使用 Spring Cloud 熔断器,它的作用是什么?
什么是 Hystrix?
Eureka 和 ZooKeeper 有哪些区别?
为什么要使用负载均衡?
Spring Cloud 实现服务注册和发现的具体流程是什么?
为什么要使用 Spring Cloud ,它有哪些优势?
MyBatis
简单谈谈你对 Mybatis 的理解?
说说你项目中用到mybatis的架构?
如果不用mybatis,你会选择什么框架来代替
MyBatis 有几种分页方式?
MyBatis 在实际项目开发中会与 Spring MVC 整合使用。
除了和spring整合之外,你还和哪些框架做过整合,如何实现的?
MyBatis 接口绑定的优点是什么?
实现 MyBatis 接口绑定分别有哪几种方式?
MyBatis 如何实现一对一关联关系?
MyBatis 如何实现一对多关联关系?
说说 MyBatis 动态 SQL 的具体使用步骤?
MyBatis 与 Hibernate 的区别是什么?
MyBatis 如何实现模糊查询?
dubbo
dubbo是什么
dubbo能做什么
dubbo如何解决服务调用链过长的问题?
dubbo说说核心的配置有哪些?
dubbo集群容错怎么做?
dubbo在使用过程中都遇到了些什么问题?如何解决的?
dubbodubbo 和 dubbox 之间的区别?
dubbo默认使用的是什么通信框架,还有别的选择吗?
dubbo一般使用什么注册中心?还有别的选择吗?
dubbo默认使用什么序列化框架,你知道的还有哪些?
dubbo服务提供者能实现失效踢出是什么原理?
dubbo服务上线怎么不影响旧版本?
微服务
谈谈你对微服务的理解。
使用 layui 的数据表格组件展示业务数据,后台实体类应该如何定义?
JPA 和 Spring Data JPA 是一回事吗?
如果要给项目添加权限管理系统,一般包含哪些需求?
微服务分别有哪些优点,哪些缺点?
谈谈微服务之间是如何实现通信的。
Spring Boot 如何集成 MyBatis?
微服务架构的拆分都有哪些原则?
Feign 和 Ribbon+RestTemplate 的区别是什么?
微服务中,那些做法你会觉得比较好(最佳实践)