2020三月大厂java面试题汇总

220 阅读4分钟

1.JVM篇

1.1、类加载机制

1.2、类初始化原理

1.3、如何防止class文件反编译后导致源码泄漏

2.13、java对象内存结构

2.13、如何动态计算Java对象的占用内存

2.13、jvm内存结构

2.13、jvm栈内都有什么

2.13、堆内存结构

2.13、新生代和老年代的gc算法

2.13、如何判断一个元素是否可被回收

2.13、gcroot是什么

2.13、一个对象什么时候会进入老年区

2.13、对象最大年龄可以调整为20吗

2.13、cms收集器的gc过程

2.13、g1收集器原理

2.13、一个jvm进程有3个线程,其中一个线程oom了,该进程的三个线程以及jvm中的其他进程的状态

2.13、使用过哪些jvm提供的监控工具

2.多线程篇

2.1、线程的几种状态

2.2、wait和sleep的区别

2.3、线程什么时候会进入sleep状态

2.4、线程的同步机制

2.5、java线程工作内存模型

2.6、volatile的原理 内存屏障 happenbefore

2.7、synchronized原理 monitorenter monitorexit

2.8、jvm对锁进行了什么优化

2.9、无锁 偏向锁 轻量级锁 重量级锁的升级过程

2.10、为什么要有自旋锁

2.11、用户态切换内核态为什么代价大

2.12、原子类实现原理

2.13、cas是什么

2.13、如何评估线程池参数

2.13、线程池核心参数及其原理

2.13、线程池能不能动态修改容量

2.13、线程池 等待队列中的任务何时被执行

3.缓存篇

2.13、redis的对外数据结构

2.13、redis的底层数据结构

2.13、了解渐进式hash吗

2.13、了解expire的具体实现原理吗

2.13、aof和rdb有什么区别

2.13、一个最大容量16g的redis实例,当前容量8g,发生了rdb,可以成功吗

2.13、redis高可用

2.13、redis横向扩展有哪些方式

2.13、twemproxy了解吗

2.13、缓存db数据一致怎么解决

2.13、db主从架构下 先改db后删缓存有什么问题

2.13、分布式锁怎么实现

2.13、pipeline用过吗 集群环境如何pipeline

2.13、redis cluster如何解决批量操作的问题

2.13、缓存击穿 大量查询 key失效 走db

2.13、缓存穿透 大量无效key查询 走db

2.13、缓存雪崩 大批量key失效

4.Java基础篇

2.13、java里有哪些引用

2.13、四种引用的区别分别是什么

2.13、collection下的直接子接口

2.13、exception层次结构

2.13、字节流和字符流的区别

2.13、字节流如何转化成字符流

5.线上故障篇

2.13、线上cpu较高,目前定位是jvm进程导致,请问如何找到具体原因

6.服务治理篇

2.13、dubbo支持的数据序列化协议

2.13、什么是协议

2.13、什么是序列化和反序列化

2.13、dubbo远程接口调用实现原理

2.13、rpc的实现原理

2.13、dubbo和thrift的区别

2.13、dubbo和spring cloud区别

2.13、spi机制

7.Spring篇

2.13、spring的ioc与aop的实现原理

8.网络协议篇

2.13、tcp三次握手四次挥手时,client和server共有哪些状态

2.13、time_wait状态下,如果丢包了,client和server会进行什么处理

2.13、tcp流量控制

2.13、tcp拥塞控制 拥塞避免 慢启动 快速恢复 快速重传

2.13、IP路由过程中,上一个包刚被当前路由器转发后,当前路由器挂了,TCP链路断了吗

2.13、https建立连接过程

2.13、cookie和session的区别联系

2.13、session一致性问题

9.数据库篇

2.13、mybatis interface spring原理

2.13、mysql的事务隔离级别

2.13、mysql的索引实现原理

2.13、hash,二叉搜索树,b树,b+树的区别

2.13、b+树实现范围查询

2.13、聚簇索引和非聚簇索引

2.13、最左前缀匹配原则

2.13、如何优化sql性能

2.13、分表分库

10.中间件篇

2.13、kafka介绍一下

2.13、kafka为什么吞吐量高

2.13、kafka为什么使用分区的概念

2.13、kafka高可用 非controller当机 controller当机

2.13、怎样保证kafka不丢消息

2.13、kafka获取消息是推还是拉

2.13、为什么使用拉取模式

2.13、推拉模式的优缺点 push更关注实时性,pull更关注消费者消费能力

2.13、怎样保证不重复消费

2.13、kafka消费者重启后可以得到当机期间丢掉的消息吗

2.13、kafka如何一个消息多次消费,广播

2.13、rabbitmq介绍一下

2.13、rabbitmq与kafka的区别

2.13、vhost作用

2.13、rabbitmq 怎么避免消息丢失?

2.13、设置了durable就一定不会丢消息吗

2.13、rabbitmq如何实现广播

2.13、延迟队列了解吗 mq redis jdk

11.负载均衡篇

2.13、负载均衡了解吗

2.13、nginx支持的路由策略 轮询 加权轮询 ip_hash 第三方(fair 根据server响应时间智能分配 url_hash 根据url的hash结果分配)

2.13、nginx高可用

2.13、nginx扛不住怎么扩展

2.13、lvs了解吗

2.13、亿级流量怎么负载 lvs+keepalived nginx高可用集群

2.13、cdn了解吗

2.13、10wqps的查询,怎么设计

2.13、千万级高并发下的秒杀系统,怎么设计

12.中间件篇

2.13、nio和bio的区别

2.13、netty的组成

2.13、io多路复用里的多路是指什么

13.算法篇

2.13、lru

2.13、数据流中位数

2.13、波峰波谷

2.13、快排