vlambda博客
学习文章列表

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 的区别是什么?

  • 微服务中,那些做法你会觉得比较好(最佳实践)