互联网科技

冲击双十一,我是怎么拿下蚂蚁金服的offer的,Java面试题分

2019-11-06  本文已影响0人  Java_苏先生

一、JVM面试题

1. 说说你对JVM内存模型的了解,每个区的作用是什么?

栈区

堆区

方法区

程序计数器

2. JVM什么情况下会发生栈内存溢出

类的加载指的是将类的.class文件中的二进制数据读入到内存中,将其放在运行时数据区的方法区内,然后在堆区创建一个java.lang.Class对象,用来封装类在方法区内的数据结构。类的加载的最终产品是位于堆区中的Class对象,Class对象封装了类在方法区内的数据结构,并且向Java程序员提供了访问方法区内的数据结构的接口。

3. 类的生命周期

类的生命周期包括这几个部分,加载、连接、初始化、使用和卸载

4. JVM对象分配规则

5. JVM如何判断对象是否存活

判断对象是否存活一般有两种方式:

6. 介绍一下GC算法有哪些

GC最基础的算法有三种:标记 -清除算法、复制算法、标记-压缩算法,我们常用的垃圾回收器一般都采用分代收集算法。

7. JVM有哪些垃圾回收器

8. JVM常用调优命令

Sun JDK监控和故障处理命令有jps jstat jmap jhat jstack jinfo

9. JVM常用性能调优参数

10. Java内存模型中堆和栈的区别

11. JVM中有几种类加载器

类加载器负责读取 Java 字节代码,并转换成java.lang.Class类的一个实例;有以下几张类加载去:

12. 什么是双亲委派模型

13. 类加载过程

类从被加载到虚拟机内存中开始,到卸载出内存为止,它的整个生命周期包括:加载(Loading)、验证(Verification)、准备(Preparation)、解析(Resolution)、初始化(Initialization)、使用(Using)和卸载(Unloading)7个阶段。其中准备、验证、解析3个部分统称为连接(Linking)

加载、验证、准备、初始化和卸载这5个阶段的顺序是确定的,类的加载过程必须按照这种顺序按部就班地开始,而解析阶段则不一定:它在某些情况下可以在初始化阶段之后再开始,这是为了支持Java语言的运行时绑定(也称为动态绑定或晚期绑定)。以下陈述的内容都已HotSpot为基准。

14. 栈溢出的原因

15. 方法区溢出的原因

二、消息中间件面试题

1. 说说RabbitMQ的结构

2. RabbitMQ交换器种类

3. RabbitMQ队列与消费者的关系

4. 如何保证消息的顺序性

三、数据库面试题

1. InnoDB中的事务隔离级别

SQL标准中的事务四种隔离级别

2. 解释下脏读、不可重复读、幻读

3. MyISAM和InnoDB两者之间的区别

InnoDB是一个事务型的存储引擎,支持回滚,设计目标是处理大数量数据时提供高性能的服务,它在运行时会在内存中建立缓冲池,用于缓冲数据和索引。

优点

缺点

MyISAM 是 MySQL 5.5.5 之前的默认引擎,它的设计目标是快速读取。

优点

缺点

适用场景

4. 说说事务的四种特性(ACID)

四、NoSQL面试题

1. Memcache和Redis的区别

Memcache

Redis

2. 为什么Redis能这么快

3. 说说你用过的Redis的数据类型

4. 如何通过Redis实现分布式锁

SET key value [EX seconds] [PX milliseconds] [NX|XX]

5. Redis中大量的key同时过期的注意事项

6. 如何使用Redis做异步队列

使用List作为队列,RPUSH生产消息,LPOP消费消息

缺点:没有等待队列里面有值就直接消费

解决方案

五、分布式面试题

1. 说说SpringCloud的工作原理

Spring Cloud是一个全家桶式的技术栈,包含了很多组件,其中比较核心的有Eureka、Ribbon、Feign、Hystrix、Zuul这几个组件。

2. Eureka的心跳时间

3. Eureka的缺点

4. 说说分布式事务有哪些解决方案

5. rpc和http的区别

六、常用框架面试题

1. 说说Spring事务什么情况下才会回滚

当所拦截的方法有指定异常抛出,事务才会自动进行回滚。默认情况下是捕获到方法的RuntimeException异常,也就是说抛出只要属于运行时的异常(即RuntimeException及其子类)都能回滚;但当抛出一个不属于运行时异常时,事务是不会回滚的。如果是其他异常想要实现回滚,可以进行配置。

2. 说说Spring事务的传播属性

事务的传播性一般在事务嵌套时候使用,比如在事务A里面调用了另外一个使用事务的方法,那么这俩个事务是各自作为独立的事务执行提交,还是内层的事务合并到外层的事务一块提交那,这就是事务传播性要确定的问题。spring支持7种事务传播行为:

备注:常用的两个事务传播属性是1和4,即PROPAGATION_REQUIRED,PROPAGATION_REQUIRES_NEW

3. 说说Spring事务的隔离性

事务的隔离性是指多个事务并发执行的时候相互之间不受到彼此的干扰。

事务的隔离级别也分为四种,由低到高依次分别为:read uncommited(读未提交)、read commited(读提交)、read repeatable(读重复)、serializable(序列化),这四个级别可以逐个解决脏读、不可重复读、幻读这几类问题。

4. 说说Spring事务的特性

事务特性分为四个:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持续性(Durability)简称ACID。

5. 说说你对SpringIOC容器的理解

SpringIOC负责创建对象,管理对象(通过依赖注入(DI),装配对象,配置对象,并且管理这些对象的整个生命周期。

6. 什么是Spring的依赖注入

依赖注入,是IOC的一个方面。这概念是说你不用创建对象,而只需要描述它如何被创建。你不在代码里直接组装你的组件和服务,但是要在配置文件里描述哪些组件需要哪些服务,之后一个容器(IOC容器)负责把他们组装起来。

7. IOC(依赖注入)方式

8. Springboot启动过程

9. spring的bean的生命周期

我们这里描述的是应用Spring上下文Bean的生命周期,如果应用Spring的工厂也就是BeanFactory的话去掉第5步就Ok了。

11. spring事件的实现原理,写出常用的几个事件

写在最后

本次面试题分享到此为止,限于篇幅,没法在这里给大家分享更多的面试题; 之前很多粉丝一直私信我让我整理一些面试题,近些天终于整理好了,笔者整理了一份包含Kafka、Mysql、Tomcat、Docker、Spring、MyBatis、Nginx、Netty、Dubbo、Redis、Netty、Spring cloud、分布式、高并发、性能调优、微服务等架构技术的面试题和部分视频学习资料;

需要的朋友点击下方传送门, 即可免费领取面试资料和视频学习资料

传送门

以下是部分面试题截图


图片 (140).jpg
上一篇下一篇

猜你喜欢

热点阅读