0
点赞
收藏
分享

微信扫一扫

Java常见面试题 非常实用

张宏涛心理 2022-04-13 阅读 82

java 面试题
    一. 容器部分
    二. 多线程部分
    三. SpringMvc部分
    四. Mybatis部分
    五. MySQL部分
    六. Redis部分
    七. RabbitMQ部分
    八. JVM虚拟机部分
    九. 算法知识部分
    十. 其他面试部分
2|1更新
时间:2022/4/9
内容: JVM虚拟机部分
预更: 算法部分

2|2容器部分面试题

Java 容器都有哪些

Collecion 和 Collections 有什么区别

List、Set、Map 之间的区别

  • Map 适合存储键值对的数据

HashMap 和 HashTable 的区别

  1. 线程安全不同
  1. 是否提供 contains() 方法
  1. key 和 value 是否可以为 null 值
  1. 遍历方式不同
  1. hash 值不同
  1. 内部实现使用的数组初始化和扩容方式不同

如何决定使用 HashMap 还是 TreeMap

HashMap 的实现原理

HashSet 的实现原理

ArrayList 与 LinkList 的区别是什么

如何实现数组与 List 之间的转换

ArrayList 与 Vector 的区别是什么

Array 与 ArrayList 有什么区别

在 Queue 中 poll() 与 remove() 有什么区别

哪些集合类是线程安全的

迭代器 Iterator 是什么

Iterator 怎么使用 ? 有什么特点

Iterator 与 LinkIterator 有什么区别

怎么确保一个集合不能被修改

2|3多线程部分面试题

并发和并行有什么区别

线程和进程的区别

守护线程是什么

创建线程有哪几种方式

  1. 实现Runnable接口创建线程类
  1. 通过 Callable 和 Future 创建线程

runnable 和 callable 有什么区别

  • 不同点

线程有哪些状态

sleep() 和 wait() 的区别

线程的 run() 和 start() 的区别

notify() 和 notifyAll() 有什么区别

创建线程池有哪几种方式

线程池都有哪些状态

  1. 终止 TERMINATED:线程池彻底终止。线程池在 TIDYING 状态执行完 terminated() 方法就会由 TIDYING 转变为 TERMINATED 状态

线程池中的 submit() 和 execute() 有什么区别

在Java程序中怎么确保多线程运行安全

synchronized 和 volatile 的作用什么?有什么区别

  1. 区别

synchronized 和 Lock 有什么区别

2|4Spring Mvc面试题部分

为什么要是使用 Spring

解释一下什么是 aop

解释一下什么是 ioc

Spring 主要有哪些模块

  1. Spring Context
  1. Spring Dao
  1. Spring ORM
  1. Spring Aop
  1. Spring Web
  1. Spring Web Mvc

Spring 常用的注入方式有哪些

  • 基于注解得注入

Spring 中的 bean 是线程安全的吗

Spring 支持几种 bean 的作用域

Spring 自动装配 bean 有哪些方式

Spring 事务实现方式有哪些

Spring 的事务隔离是什么

Spring Mvc 的运行流程

Spring Mvc 有哪些组件

@RequestMapping 的作用是什么

@Autowired 与 @Resource 的区别

2|5Mybatis部分面试题

Mybatis 中 #{} 和 ${} 的区别

  • ${} 表示拼接SQL串

Mybatis 有几种分页方式

  1. LIMIT关键字
  1. RowBounds实现分页
  1. Mybatis的Interceptor实现

RowBounds 是一次性查询全部结果吗?为什么

Mybatis 逻辑分页和物理分页的区别是什么

Myabtis 是否支持延迟加载,延迟加载的原理是什么

Mybatis 一级缓存和二级缓存

  1. 二级缓存
  1. 扩展

Mybatis 和 Hibernate 有哪些区别

Mybatis 有哪些执行器

Mybatis 分页插件的实现原理是什么

Mybatis 如何编写一个自定义插件

 

public interface Interceptor { Object intercept(Invocation invocation) throws Throwable; Object plugin(Object target); void setProperties(Properties properties); }

官方插件实现:

@Intercepts({@Signature(type = Executor. class, method = "query", args = {MappedStatement. class, Object. class, RowBounds. class, ResultHandler. class})}) public class TestInterceptor implements Interceptor { public Object intercept(Invocation invocation) throws Throwable { Object target = invocation. getTarget(); //被代理对象 Method method = invocation. getMethod(); //代理方法 Object[] args = invocation. getArgs(); //方法参数 // do something . . . . . . 方法拦截前执行代码块 Object result = invocation. proceed(); // do something . . . . . . . 方法拦截后执行代码块 return result; } public Object plugin(Object target) { return Plugin. wrap(target, this); } }

2|6MySQL部分面试题

数据库的三范式是什么

如何获取当前数据库的版本

说一下 ACID 是什么

char 和 varchar 的区别

  1. 效率不同
  1. 存储不同

float 和 double 的区别

MySQL 内连接、左连接、右连接有什么区别

MySQL 的索引是怎么实现的

MySQL 索引设计原则

怎么验证 MySQL 的索引是否满足需求

事务的隔离级别

MySQL 常用的引擎

MySQL 的行锁、表锁、页锁

  • 行级锁的特点
  • 表级锁
  • 表级锁的特点
  • 页级锁
  • 页级锁的特点
  • 扩展

乐观锁和悲观锁

MySQL 问题排查都有哪些手段

如何做 MySQL 的性能优化

2|7Redis部分面试题

Redis 是什么?有什么优点?都有哪些使用场景

  • 应用场景

Redis 为什么是单线程的

Redis 的缓存预热

redis 缓存雪崩是什么,怎么解决 ?

缓存穿透是什么?如何解决

Redis 支持的数据类型有哪些

Redis 支持的 Java 客户端有哪些

Jedis 与 Redisson 有哪些区别

怎么保证缓存与数据库数据的一致性

Redis 持久化有几种方式

Redis 怎么实现分布式锁

Redis 分布式锁有什么缺陷

  1. 错位解锁
  1. 业务并发执行问题

Redis 如何做内存优化

Redis 淘汰策略有哪些

Redis 常见的问题有哪些? 该如何解决

  1. 缓存穿透问题
  1. 缓存雪崩问题
  1. 缓存的并发竞争问题
  1. 如果对这个 Key 操作,要求顺序
  • 那么,假设这会系统 B 先抢到锁,将 key1 设置为{valueB 3:05}。接下来系统 A 抢到锁,发现自己的 valueA 的时间戳早于缓存中的时间戳,那就不做 set 操作了,以此类推。
  • 其他方法,比如利用队列,将 set 方法变成串行访问也可以。总之,灵活变通。

2|8RabbitMQ部分面试题

RabbitMq 的使用场景有哪些

RabbitMq 有哪些重要的角色

RabbitMq 有哪些重要的组件

RabbitMQ的消息存储方式

RabbitMq 中 vhost 的作用是什么

RabbitMq 的消息是怎么发送的

RabbitMq 怎么保证消息的稳定性

RabbitMq 怎么避免丢失消息

要保证消息持久化成功的条件有哪些

RabbitMq 持久化有什么缺点

RabbitMq 有几种广播方式

RabbitMq 怎么实现延迟消息队列

RabbitMq 集群有什么用

RabbitMq 节点的类型有哪些

RabbitMq 集群搭建需要注意哪些问题

RabbitMq 每个节点是其他节点的完整拷贝吗

RabbitMq 集群中唯一一个磁盘节点崩溃了会发生什么

RabbitMq 对集群停止顺序有要求吗

2|9JVM部分面试题

JVM 主要的组成部分?及其作用

JVM 运行时数据区是什么

堆和栈的区别

队列和栈是什么?有什么区别

  1. 可操作的方式不同

类加载器有哪些?什么是双亲委派模型

类加载的执行过程

  • 链接
  1. 准备
  1. 解析
  • 初始化

怎么判断对象是否可以收回

  • 优缺点
  1. 可达性分析算法

Java 中有哪些引用类型

  1. 软引用(softreference)
  1. 弱引用(weakreference)
  1. 虚引用(phantomreference)

JVM 中垃圾回收算法

JVM 有哪些垃圾回收器

介绍一下 CMS 垃圾回收器

  • CMS收集器的内存回收过程是与用户线程一起并发执行的
  • CMS收集器的缺点:

CMS收集器的工作过程图:

新生代垃圾回收器和老生代垃圾回收器有哪些?有什么区别

简述分代垃圾回收器是怎么工作的

JVM 调优的工具有哪些

JVM 调优的参数有哪些

2|10算法题

2|11其他部分面试题

Api 接口如何实现 ?

MySQL 链接数据库常用的几种方式 ?

SpringBoot 如何集成 Redis ?

<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency>

spring.redis.host=127.0.0.1 #Redis服务器连接端口 spring.redis.port=6379 #Redis服务器连接密码(默认为空) #spring.redis.password=

SpringCloud 的优点 ?

SpringCloud 用了哪些组件 ?

List 和 Set 的区别

Java 中 static 的作用

什么单例模式 ?

  1. 如何保证是单利模式 ?
  1. 单例模式有哪几个 ?
  1. 懒汉模式

SpringBoot 常用的几个注解 ?

Java 八大数据类型

MySQL分页和升序降序如何实现 ?

  1. 升序 order by xx asc
  1. 降序 order by xx desc

maven 是干什么的,它有什么好处 ?

MySQL 如何添加索引 ?

MySQL 索引的实现方式?

Vue的数据双向绑定原理

ActiveMQ的消息存储方式

KahaDB消息存储

举报

相关推荐

0 条评论