2021 最全 Java 面试笔试题汇总 (附详细答案) 持续更新

在最近的面试准备中,发现网上很多 Java 面试题非常零散,没有归纳总结,所以花了很长时间搜集整理出来了这套 Java 面试题大全,希望对大家有帮助哈~

java 基础

集合

HashMap 和 ConcurrentHashMap 的实现原理是怎样的?ConcurrentHashMap 是如何保证线程安全的?

简述 ArrayList 和 LinkedList 的底层实现以及常见操作的时间复杂度

hashmap 和 hashtable 的区别是什么?

HashMap 实现原理,为什么使用红黑树?

HashMap 中的“死锁”是怎么回事?

HashMap 中能 put 两个相同的 key 吗?为什么?

HashMap 中的键值可以为 Null 吗?原理是什么?

HashMap 扩容机制?

hashmap1.7/1.8 实现区别

集合类中的 List 和 Map 的线程安全版本是什么,如何保证线程安全的?

HashMap 的数据结构是什么?如何实现的。和 HashTable,ConcurrentHashMap 的区别

ArrayList 是如何实现的,ArrayList 和 LinedList 的区别?ArrayList 如何实现扩容

简述 BIO、NIO、AIO 的区别

IO 和 NIO 的区别,NIO 优点

其他

hashcode 和 equals 方法的联系

什么是重写和重载?

简述 java 中 final 关键字的作用

简述 java 的反射机制

java 如何高效进行数组拷贝?

成员变量和方法的区别?

java 中接口和抽象类的区别

简述一致性哈希算法的实现及原理

String 类能不能被继承?为什么?

hashcode 和 equals 方法的联系

==和 equals()的区别?

equals 方法实现

面向对象

java web

Cookie 和 Session 的关系和区别是什么?

HTTP 连接池实现原理

JVM

java 中垃圾回收机制中如何判断对象需要回收?常见的 GC 回收算法有哪些?

java 如何防止内存溢出?

java 类的加载流程是怎样的?什么是双亲委派机制?

简述 JVM 内存模型,JVM 内存是如何对应操作系统内存的?

JVM 内存模型是怎样的,简述新生代和老年代的区别

CAS 实现原理是什么?

JVM 是怎么去调优的?简述过程和调优结果

简述 java 的 happer before 原则

JVM 如何加载字节码文件

类加载器如何卸载字节码

有没有看过 JDK 源码,看过的类实现原理是什么

JVM 如何加载字节码文件

JVM GC,GC 算法。

什么情况会出现 Full GC,什么情况会出现 yong GC。

JVM 内存模型

Java 运行时数据区

并发&多线程

java 中的线程有哪些状态,转换关系是怎样的?

synchroinzed 关键字底层是如何实现的?它与 Lock 相比优缺点分别是什么?

volatile 关键字解决了什么问题,它的实现原理是什么?

什么情况下会发生死锁,如何解决死锁?

ThreadLocal 的实现原理是什么?

并发事务会引发哪些问题?如何解决?

java 线程间有多少种通信方式?

简述 synchroinzed、volatile、可重入锁的不同使用场景及优缺点

java 中常见锁有哪些?ReetrantLock 是怎样实现的?

简述生产者消费者模型

手写生产者消费者模型

java 是如何实现线程安全的

java 中的 sleep()和 wait()的区别

java 线程池里的 arrayblockingqueue 与 linkeblockingqueue 的使用场景和区别

Netty 是如何使用线程池的,为什么这么使用

Java 线程池的实现原理,keepAliveTime 等参数的作用

Java 线程的状态

进程和线程的区别,进程间如何通讯,线程间如何通讯

线程状态,BLOCKED 和 WAITING 有什么区别

设计模式

简述常见的工厂模式以及单例模式的使用场景

简述装饰者模式以及适配器模式

实现单例设计模式(懒汉、饿汉)

介绍设计模式,如模板模式,命令模式,策略模式,适配器模式、桥接模式、装饰模式,观察者模式,状态模式,访问者模式

数据库

简述乐观锁以及悲观锁的区别以及使用场景

简述 mysql 常见索引数据,介绍一下覆盖索引

简述事务的四大特性

mysql 为什么用 B+ 树来做索引,对比 B 树它的优点和缺点是什么?

简述脏读和幻读的发生场景,innodb 是如何解决幻读的?

数据库的事务的隔离级别有哪些?各有哪些优缺点?

聚簇索引和非聚簇索引有什么区别?什么情况用聚集索引?

什么是数据库事务,MySQL 为什么会使用 innoDB 作为默认选项?

Mysql 有哪些常见的存储引擎?

数据库有哪些常见索引?数据库设计的范式是什么?

简述数据库中的 ACID 分别是什么?

MySQL 中 Join 和 left join 的区别是什么?

简述 MySQL 三种日志的使用场景

模糊匹配查询是如何实现的?

SQL 优化的方案有哪些,如何定位问题并解决问题?

简述数据库什么情况下进行分库,什么情况下进行分表?

数据库索引的实现原理是什么?

简述什么是最左匹配原则?

数据库的读写分离的作用是什么?如何实现?

唯一索引与普通索引的区别是什么?使用索引会有哪些优缺点?

MySQL 的索引什么情况下会失效?

简述 MySQL 的主从同步机制,如果同步失败会怎么样?

假设建立联合索引(a,b,c),如果对字段 a 和 c 查询,会用到这个联合索引吗?

数据库连接池实现原理

数据库的实现原理

事务的实现原理

索引有什么用?如何建索引?

Redis

redis 如何实现分布式锁?

简述 Redis 的线程模型及底层架构设计

简述 Redis 持久化中的 rdb 以及 aof 方案的优缺点

为什么 Redis 在单线程下能如此的快?

简述 Redis 的过期机制和内存淘汰策略

简述 Redis 哨兵机制

简述 Redis 如何处理热点 key 访问

简述 Redis 中常见类型的底层数据结构

Redis 序列化有哪些方式?

简述 Redis 中如何防止缓存雪崩和缓存击穿

Redis 有几种数据结构?Zset 是如何实现的?

Redis 中 key 的过期策略有哪些?

简述 Redis 跳表的应用以及优缺点

Redis 中 sentinel 和 cluster 的区别和适用场景是什么?

Redis 如何实现延时队列,分布式锁的实现原理

假设 Redis 中的 master 节点宕机了,你会怎么进行数据恢复?

为什么要用 Redis,Redis 有哪些优缺点?Redis 如何实现扩容?

Redis 缓存和数据库数据一致性

Mq

kafka 发送消息是如何保证可靠性的?

消息中间件是如何实现的,技术难点有哪些

Spring

简述 Spring 的初始化流程

简述 SpringAOP 原理

SpringMVC 的原理和流程

spring 循环依赖,为什么要用三级缓存,二级缓存行不行

为什么要使用 Spring,Spring 的优缺点有哪些

Spring 的 IOC 容器初始化流程

Spring 的 IOC 容器实现原理,为什么可以通过 byName 和 ByType 找到 Bean

Spring AOP 实现原理

spring 中 bean 的生命周期

spring 创建 bean 的流程

什么是 spring 的循环依赖问题

spring 循环依赖问题如何解决

为什么 spring 使用三级缓存解决循环依赖问题

spring 循环依赖源码解析

修改 spring 源码尝试二级缓存是否解决循环依赖问题

Spring boot

springboot 是如何进行自动配置的

分布式

分布式事务,两阶段提交。

如何实现分布式锁

如何实现分布式 Session

如何保证消息的一致性

负载均衡

正向代理(客户端代理)和反向代理(服务器端代理)

CDN 实现原理

怎么提升系统的 QPS 和吞吐量

系统设计

电商系统中,如何实现秒杀功能?如何解决商品超卖问题?

简述 CAP 理论

什么是最终一致性?

什么是幂等操作?

简述生产者消费者模式的流程

设计一个阻塞队列

简述 MapReduce 的原理

停车场有有限个车位,有多个车来抢车位,设计一个系统需要根据车辆进入和离开停车场的时间进行计费

假如明天是活动高峰?QPS 预计会翻 10 倍,你要怎么做?

如何搭建一个高可用系统

哪些设计模式可以增加系统的可扩展性

抽象能力,怎么提高研发效率。

什么是高内聚低耦合,请举例子如何实现

什么情况用接口,什么情况用消息

如果 AB 两个系统互相依赖,如何解除依赖

如何写一篇设计文档,目录是什么

什么场景应该拆分系统,什么场景应该合并系统

系统和模块的区别,分别在什么场景下使用

实战

有没有处理过线上问题?出现内存泄露,CPU 利用率标高,应用无响应时如何处理的

开发中有没有遇到什么技术问题?如何解决的

如果有几十亿的白名单,每天白天需要高并发查询,晚上需要更新一次,如何设计这个功能。

新浪微博是如何实现把微博推给订阅者

Google 是如何在一秒内把搜索结果返回给用户的。

12306 网站的订票系统如何实现,如何保证不会票不被超卖。

如何实现一个秒杀系统,保证只有几位用户能买到某件商品

看过哪些开源框架的源码

网络

HTTP 协议

TCP 协议

非技术

项目中最难的地方是哪里?你学到了什么?

对加班有什么看法?

你的优势和劣势是什么?

与同事沟通的时候,如果遇到冲突了如何解决?

最近一年内遇到的最有挑战的事情是什么?

如何学习一项新技术,比如如何学习 Java 的,重点学习什么

有关注哪些新的技术

工作任务非常多非常杂时如何处理

项目出现延迟如何处理

和同事的设计思路不一样怎么处理

如何保证开发质量

职业规划是什么?短期,长期目标是什么

团队的规划是什么

能介绍下从工作到现在自己的成长在那里

  • 面试

    面试造航母,上班拧螺丝。多面试,少加班。

    287 引用 • 1378 回帖 • 123 关注
1 操作
GilesLv 在 2021-01-04 22:37:42 更新了该帖

广告 我要投放

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...