阿里Java面试题总结

一、Java基础

1、什么是面向对象?

2、JDK JRE JVM

3、==和equals比较

4、hashCode与equals

5、final

6、String、StringBuffer、StringBuilder

7、重载和重写的区别

8、接口和抽象类的区别

9、List和Set的区别

10、ArrayList和LinkedList区别

11、HashMap和HashTable有什么区别?其底层实现是什么?

12、ConcurrentHashMap原理,jdk7和jdk8版本的区别?

13、什么是字节码?采用字节码的好处是什么?

14、Java中的异常体系

15、Java类加载器

16、双亲委托模型

17、GC如何判断对象可以被回收


二、线程、并发相关

1、线程的生命周期?线程有几种状态

2、sleep()、wait()、join()、yield()的区别

3、对线程安全的理解

4、Thread、Runable的区别

5、对守护线程的理解

6、ThreadLocal的原理和使用场景

7、ThreadLocal内存泄露原因,如何避免

8、并发、并行、串行的区别

9、并发的三大特性

10、volatile

11、为什么用线程池?解释下线程池参数?

12、简述线程池处理流程

13、线程池中阻塞队列的作用?为什么是先添加列队而不是先创建最大线程?

14、线程池中线程复用原理


三、spring

1、如何实现一个IOC容器

2、spring是什么?

3、谈谈你对AOP的理解

4、谈谈你对IOC的理解

5、BeanFactory和ApplicationContext有什么区别?

6、描述一下Spring Bean的生命周期?

7、解释下Spring支持的几种bean的作用域。

8、Spring框架中的单例Bean是线程安全的么?

9、Spring 框架中都用到了哪些设计模式?

10、Spring事务的实现方式和原理以及隔离级别?

11、spring事务传播机制

12、spring事务什么时候会失效?

13、什么是bean的自动装配,有哪些方式?


四、springmvc、springBoot、Mybatis

1、Spring Boot、Spring MVC 和 Spring 有什么区别

2、SpringMVC 工作流程

3、Spring MVC的主要组件?

4、Spring Boot 自动配置原理?

5、如何理解 Spring Boot 中的 Starter

6、什么是嵌入式服务器?为什么要使用嵌入式服务器?

7、mybatis的优缺点

8、MyBatis 与Hibernate 有哪些不同?

9、#{}和${}的区别是什么?

10、简述 Mybatis 的插件运行原理,如何编写一个插件。


五、MySQL和Redis

1、索引的基本原理

2、mysql聚簇和非聚簇索引的区别

3、mysql索引的数据结构,各自优劣

4、索引设计的原则?

5、什么是最左前缀原则?什么是最左匹配原则

6、锁的类型有哪些

7、InnoDB存储引擎的锁的算法

8、关心过业务系统里面的sql耗时吗?统计过慢查询吗?对慢查询都怎么优化过?

9、事务的基本特性和隔离级别

10、ACID靠什么保证的?

11、什么是MVCC

12、分表后非sharding_key的查询怎么处理,分表后的排序?

13、mysql主从同步原理

14、简述MyISAM和InnoDB的区别

15、简述mysql中索引类型及对数据库的性能的影响

16、mysql执行计划怎么看


六、Redis

1、RDB 和 AOF 机制

2、Redis的过期键的删除策略

3、Redis线程模型、单线程快的原因

4、简述Redis事务实现

5、redis集群方案

6、redis 主从复制的核心原理

7、缓存雪崩、缓存穿透、缓存击穿


七、分布式与微服务

1、CAP理论,BASE理论

2、负载均衡算法、类型

3、分布式架构下,Session 共享有什么方案

4、简述你对RPC、RMI的理解

5、分布式id生成方案

6、分布式锁解决方案

7、分布式事务解决方案

8、如何实现接口的幂等性

9、简述ZAB 协议

10、简述zk的命名服务、配置管理、集群管理

11、讲下Zookeeper watch机制

12、zk和eureka的区别

13、Spring Cloud和Dubbo的区别

14、什么是Hystrix?简述实现机制

15、springcloud核心组件及其作用

16、Dubbo 的整体架构设计及分层


八、中间件MQ

1、简述RabbitMQ的架构设计

2、RabbitMQ如何确保消息发送 ?消息接收?

3、RabbitMQ事务消息

4、RabbitMQ死信队列、延时队列

5、RabbitMQ镜像队列机制

6、简述kafka架构设计

7、kafka怎么处理消息顺序、重复发送、重复消费、消息丢失

8、Kafka在什么情况下会出现消息丢失及解决方案?

9、Kafka是pull?push?优劣势分析

10、Kafka中zk的作用

11、简述kafka的rebalance机制

12、Kafka的性能好在什么地方

Java面试题的答案已经整理成了PDF文档,如下图:

 

 大家私信我,我发给大家

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
1. Java中的四种访问修饰符分别是什么?它们的作用是什么? 答:Java中的四种访问修饰符是public、protected、default和private。它们的作用如下: - public:公共的,可以被任何类访问; - protected:受保护的,可以被同一包内的类和不同包中的子类访问; - default:默认的,可以被同一包内的类访问; - private:私有的,只能被同一类内部的方法访问。 2. Java中的final关键字有什么作用? 答:Java中的final关键字有以下作用: - 可以用来修饰类、方法和变量,表示它们不可被继承、重写或修改; - 在多线程编程中,可以用来表示一个变量或对象不可被修改,从而保证线程安全; - 在常量声明中,可以用来表示一个常量不可被修改。 3. Java中的静态关键字有什么作用? 答:Java中的静态关键字有以下作用: - 可以用来修饰变量和方法,表示它们属于类级别而非对象级别,即所有对象共享同一个静态变量或方法; - 可以用来定义静态代码块,用于在类加载时执行一些初始化代码; - 可以用来定义静态内部类,表示这个内部类只与外部类相关,与具体的对象无关; - 可以用来定义静态导入,用于导入一个类的静态成员,使其可以直接访问。 4. Java中的抽象类和接口有什么区别? 答:Java中的抽象类和接口有以下区别: - 抽象类可以有构造方法,而接口不能有构造方法; - 抽象类可以有非抽象方法,而接口只能有抽象方法; - 一个类只能继承一个抽象类,而一个类可以实现多个接口; - 抽象类的子类必须实现父类的抽象方法,而实现接口的类必须实现接口中的所有方法。 5. Java中的重载和重写有什么区别? 答:Java中的重载和重写有以下区别: - 重载是指在同一个类中定义多个同名的方法,但它们的参数列表不同,返回值可以相同也可以不同;重写是指在子类中重新定义父类中已有的方法,方法名、参数列表和返回值都要相同; - 重载是编译时的多态,根据传入的参数类型来决定调用哪个方法;重写是运行时的多态,根据实际的对象类型来决定调用哪个方法; - 重载可以发生在同一个类中或不同的类中;重写只能发生在父子类之间。 6. Java中的异常处理机制是什么? 答:Java中的异常处理机制是指当程序出现异常时,程序可以自动捕获异常并进行相应的处理。Java中的异常分为编译时异常和运行时异常,其中编译时异常必须在代码中进行处理,而运行时异常可以不处理。Java中的异常处理机制包括以下关键字: - try:用于捕获异常的代码块; - catch:用于捕获异常并进行处理的代码块; - finally:用于在try或catch块执行完毕后执行的代码块; - throw:用于手动抛出一个异常; - throws:用于声明方法可能抛出的异常。 7. Java中的线程有哪些状态? 答:Java中的线程有以下状态: - 新建状态(New):线程对象被创建但还未调用start()方法; - 就绪状态(Runnable):线程对象调用了start()方法,但还未获得CPU资源; - 运行状态(Running):线程对象获得CPU资源并开始执行run()方法; - 阻塞状态(Blocked):线程对象因为某些原因无法获得需要的资源,如等待I/O操作、等待获取锁等; - 终止状态(Terminated):线程对象执行完了run()方法或者因为异常而中断了运行。 8. Java中的HashMap和Hashtable有什么区别? 答:Java中的HashMap和Hashtable都实现了Map接口,但它们有以下区别: - HashMap是非线程安全的,Hashtable是线程安全的; - HashMap允许null作为key或value,而Hashtable不允许; - HashMap是不保证元素的顺序,而Hashtable是按插入顺序排序的; - HashMap的迭代器是fail-fast的,而Hashtable的迭代器不是。 9. Java中的反射机制是什么? 答:Java中的反射机制是指在程序运行时动态地获取类的信息并操作它们的属性、方法和构造函数。Java中的反射机制可以利用Class类来获取一个类的信息,可以通过Class类来获取类的名称、属性、方法、构造函数等信息,并可以在运行时动态地创建对象、访问属性和调用方法。 10. Java中的泛型是什么? 答:Java中的泛型是指在编译时不确定具体类型的变量或方法,在运行时才确定具体的类型。Java中的泛型可以用来增强程序的类型安全性和可读性,可以通过定义泛型类、泛型接口和泛型方法来实现。泛型还可以用来实现集合框架中的容器类,如ArrayList、LinkedList等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值