2022Java面试题大全(整理版)面试题附答案详解,最全面详细

目录

JAVA八股文

Java基础

  1. String 和StringBuffer和 StringBuilder的区别?

  2. sleep() 区间wait()区间有什么区别?

  3. Object 中有哪些方法?其中clone(),怎么实现一个对象的克隆,Java如何实现深度克隆?

ThreadLocal 相关

  1. ThreadLocal作用和实现方式 ?

ThreadLocal会不会发生内存泄漏?

ThreadLocal为什么使用弱引用?

  1. InheritableThreadLocal作用和实现方式 ?

  2. InheritableThreadLocal所带来的问题?

  3. 如何解决线程池异步值传递问题 (
    transmittable-thread-local)?

HashMap ConcurrentHashMap相关

  1. HashMap为什么线程不安全

  2. HashMap在jdk7和8中的区别

  3. HashMap 为啥将链表改成红黑树?

  4. ConcurrentHashMap在jdk7和8中的区别?

提到synchronized时候,顺便说一下javaSE1.6对锁的优化?

偏向锁

轻量级锁

重量级锁

其他优化

ReentrantLock和synchronized的区别?

Synchronized

ReentrantLock

  1. 为什么重写equals时候被要求重写hashCode()?

  2. 什么时候回发生内存泄露?让你写一段内存泄露的代码你会怎么写?

Java内存模型

Java 内存模型中的 happen-before 是什么?

简单聊聊volatile 的特性?以及内存语义

GC垃圾回收

垃圾回收主要是针对 内存区的哪些区域?

垃圾检查有哪些算法?

垃圾回收方法有哪些?

什么时候会触发Full GC

GC机制简要说明一下,不同区使用的算法。

两个对象循环引用会不会被被GC?

哪些可以算作根节点?

垃圾收集器 G1有什么样的特性了解吗? CMS呢?

CMS收集器和G1收集器的区别

Jvm相关

Jvm内存结构简要说一些,栈里面一般存储了什么?

Java内存模型简要描述一下?

类加载机制简要描述一下?

类的加载方式

类加载的过程

JVM三种预定义类型类加载器

双亲委派加载

由不同的类加载器加载的指定类型还是相同的类型吗(不同)

在代码中直接调用Class.forName(String name)方法,到底会触发那个类加载器进行类加载行为?

在编写自定义类加载器时,如果没有设定父加载器,那么父加载器是?

编写自定义类加载器时,一般有哪些注意点?

如何在运行时判断系统类加载器能加载哪些路径下的类?

在Java的反射中,Class.forName和ClassLoader的区别

Java 类加载机制及常见异常

ClassNotFoundException 发生在加载阶段

ClassNotFoundError 发生在 链接 阶段

NoClassDefFoundError 通常在链接阶段

Exception和Error的区别

平时有没有遇到一些栈溢出或者内存溢出,内存泄露的问题吗?如何去分析这个问题?

如果内存猛增,怎么去排查?

多线程

为什么《阿里巴巴Java开发手册》强制不允许使用Executor创建线程池

ThreadPoolExecutor机制

线程设置越多越好吗?设置到什么值比较合理?

CAS实现机制?

CAS的ABA问题

算法

有哪些常用的排序算法?

RPC框架 DUBBO

dubbo请求流程

dubbo 各个模块?

如果zookeeper挂掉了,dubbo还能正常运行吗?

Dubbo 使用什么通信框架?

Dubbo 支持哪些序列化方式?

Dubbo 有哪些集群容错策略?

Dubbo 服务如何做降级?

Dubbo 如何做限流?

如何自己设计一个类似 Dubbo 的 RPC 框架?

dubbo SPI 机制 与 JAVA SPI?

Zookeeper

zookeeper快速选举描述一下?

有了解过zk的watch机制吗?

那你说说Zookeeper有哪些应用场景?

zookeeper实现分布式锁怎么实现?

zookeeper集群可以部署2台吗?

Redis

redis是单线程还是双线程?

Redis 不仅仅是单线程

Redis6.0为什么网络处理要引入多线程?

为什么redis的性能高?什么决定的?

redis的持久化策略?

redis有哪些数据类型?

你有尝试的去优化redis吗?

rdb和aof工作原理?各有什么优缺点

如何选择合适的持久化方式

Redis持久化数据和缓存怎么做扩容?

Redis 对过期数据的处理

LRU(the least recently used 最近最少使用)算法

Redis线程模型

官方Redis Cluster 方案(服务端路由查询)

Redis的哨兵模式

基于代理服务器分片

redis的有哪些主从同步方式?

redis集群扩容与收缩

Redis底层ZSet跳表是如何设计与实现的

Redis底层ZSet实现压缩列表和跳表如何选择

Redis高并发场景热点缓存如何重建

高并发场景缓存穿透&失效&雪崩如何解决

Redis集群架构如何抗住双十一的洪峰流量

Redis缓存与数据库双写不一致如何解决

Redis分布式锁主从架构锁失效问题如何解决

从CAP角度解释下Redis&Zookeeper锁架构异同

超大并发的分布式锁架构该如何设计

双十一亿级用户日活统计如何用Redis快速计算

双十一电商推荐系统如何用Redis实现

双十一电商购物车系统如何用Redis实现

类似微信的社交App朋友圈关注模型如何设计实现

美团单车如何基于Redis快速找到附近的车

Redis 6.0 多线程模型比单线程优化在哪里了

Spring

请简要描述一下IOC 和AOP?

Spring是怎么解决的循环依赖?

为啥Spring不能解决“A的构造方法中依赖了B的实例对象

Spring 中使用的那种方式来实现动态代理的?

Spring中的事务传播机制?事务嵌套

Spring中同一个类中有方法A 和 B 两个方法都被标记了@Transtional,在A中调用了B,那么B的事务会生效吗?为什么?在此我向大家推荐一个架构学习交流圈。交流学习指导伪鑫:1253431195(里面有大量的面试题及答案)里面会分享一些资深架构师录制的视频录像:有Spring,MyBatis,Netty源码分析,高并发、高性能、分布式、微服务架构的原理,JVM性能优化、分布式架构等这些成为架构师必备的知识体系。还能领取免费的学习资源,目前受益良多

Spring 中IOC 和工厂模式的区别,为啥不用工厂模式?

网络

select、poll、epoll之间的区别

BIO、NIO、AIO

BIO

NIO

NIO 和 BIO 对比

netty是用select 还是 epoll

Channel 的基本介绍

说说Reactor线程模型的理解

AIO

Reactor 单线程

Reactor 多线程

Reactor 主从

TCP三次握手四次挥手

四次挥手中TIME_WAIT状态存在的目的是什么?

TCP是通过什么机制保障可靠性的?

TCP粘包,拆包及解决方法

操作系统虚拟内存换页的过程

kafka

Sentinel的简单原理

服务隔离机制:线程池隔离或者信号量隔离机制

分布式锁

数据库乐观锁

Redis分布式锁

Mysql

本地事务

隔离型(Isolation) 主要由MVCC和锁实现

MVCC 多版本并发控制

回滚日志 undo log

事务日志 REDO LOG Write Ahead Log(WAL)策略

索引

索引类型

高性能索引的一些策略

什么是联合索引,为什么建议尽量用联合索引

什么是覆盖索引,以及优点?

为什么使用B+树,而不用其他的例如红黑树做索引

InnoDB 与 MyISAM 结构上的区别

什么是索引下推

分区分表分库

秒杀系统

你做的这个秒杀系统QPS怎么样

你怎么判断需要多少机器来承受?

如果判断一个机器达到了极限?CPU IO 磁盘?

缓存穿透 缓存击穿 缓存雪崩

漏桶算法和令牌桶算法

操作系统

什么是零拷贝

什么是 DMA (DMA控制器Direct Memory Access)

传统拷贝方式

利用 mmap()实现零拷贝 应用程序跟操作系统共享这个缓冲区(地址映射) 用户空间可以修改数据

sendfile() 方式零拷贝 不仅减少了数据拷贝操作,它也减少了上下文切换 但是用户空间不可修改数据

带有 DMA 收集拷贝功能的 sendfile() 不拷贝内容,只拷贝描述符(带地址和偏移量)

利用写时复制

Java NIO对文件映射mmap的支持

Java NIO对sendfile的支持就是

Spring

Spring cloud

开放性问题

你觉得一个好的团队应该是什么样的?

解决问题的能力

[平时会使用设计模式吗?请讲一个使用的情景] (
https://blog.csdn.net/qq_39207963/article/details/121488991#_1112)

工作中有碰到过线上的问题吗?怎么解决的?

你有过Jvm调优经验吗?

你做了这么多系统,是怎么做系统监控的,系统的稳定性?内存满了,磁盘满了,和cpu高了之类的?

有碰到过数据库死锁的问题吗?怎么解决的?

算法

滑动窗口

反转单链表

复杂链表复制

数组a,先单调地址再单调递减,输出数组中不同元素个数。要求:O(1)空间复杂度,不能改变原数组

给出两个升序数组A、B和长度m、n,求第k个大的数

给出数组A,长度为n,数组中元素的值位于[0, n - 1]之间,求是否有重复元素

镜像二叉树

二叉树多个节点的最近公共祖先

树的非递归先序遍历。

可以说这一篇(宝典)说实话,熟知本文80%以上内容,找个开发工作问题不大。对3-5年经验的朋友,也是快速温习的利器。

最主要的是给自己增加知识的储备,有备无患。最后给大家分享Spring系列的学习笔记和面试题,包含spring面试题、spring cloud面试题、spring boot面试题、spring教程笔记、spring boot教程笔记、最新阿里巴巴开发手册(63页PDF总结)、2022年Java面试手册。一共整理了1184页PDF文档。 祝大家更上一层楼!!!

你可能感兴趣的:(java,面试,经验分享,分布式,架构)