我先后拜访了一二十家互联网公司,与不同的面试官和面试者进行面对面探讨,深入了解了企业对于面试者的要求和常见的 Java 面试题型。之后我花了大半年的时间,结合自己 4 年多作为面试官的经历,把这些内容整理成文,对 Java 的核心知识点和常见的多道面试题,做了详细的介绍,也是小编的全部分享,希望对你能有所帮助。
Broker:rabbitmq的服务节点
Queue:队列,是RabbitMQ的内部对象,用于存储消息。RabbitMQ中消息只能存储在队列中。生产者投递消息到队列,消费者从队列中获取消息并消费。多个消费者可以订阅同一个队列,这时队列中的消息会被平均分摊(轮询)给多个消费者进行消费,而不是每个消费者都收到所有的消息进行消费。
Exchange:交换器。生产者将消息发送到Exchange,由交换器将消息路由到一个或多个队列中。如果路由不到,或返回给生产者,或直接丢弃,或做其它处理。
RoutingKey:路由Key。生产者将消息发送给交换器的时候,一般会指定一个RoutingKey,用来指定这个消息的路由规则。这个路由Key需要与交换器类型和绑定键(BindingKey)联合使用才能最终生效。
Binding:通过绑定将交换器和队列关联起来,在绑定的时候一般会指定一个绑定键,这样RabbitMQ就可以指定如何正确的路由到队列了。
信道:信道是建立在Connection 之上的虚拟连接。当应用程序与Rabbit Broker建立TCP连接的时候,客户端紧接着可以创建一个AMQP 信道(Channel) ,每个信道都会被指派一个唯一的D。
1、RabbitMQ死信队列、延时队列
2、RabbitMQ如何确保消息发送 ? 消息接收?
发送方确认机制:
接收方确认机制:
3、简述kafka架构设计
4、Kafka在什么情况下会出现消息丢失及解决方案?
5、RabbitMQ镜像队列机制
6、Kafka是pull?push?优劣势分析
7、RabbitMQ事务消息
8、Kafka的性能好在什么地方
9、简述kafka的rebalance机制
10、Kafka中zk的作用
11、kafka怎么处理消息顺序、重复发送、重复消费、消息丢失
RDB(Redis Data Base) 和 AOF(Append Only File) 机制
RDB:在指定的时间间隔内将内存中的数据集快照写入磁盘,实际操作过程是fork一个子进程,先将数据集写入临时文件,写入成功后,再替换之前的文件,用二进制压缩存储。
AOF:以日志的形式记录服务器所处理的每一个写、删除操作,查询操作不会记录,以文本的方式记录,可以打开文件看到详细的操作记录。
1、redis 主从复制的核心原理
2、简述Redis事务实现
3、Redis线程模型、单线程快的原因
4、缓存雪崩、缓存穿透、缓存击穿
5、Redis的过期键的删除策略
6、redis集群方案
1、分布式架构下,Session 共享有什么方案
2、分布式锁解决方案
3、如何实现接口的幂等性
4、分布式id生成方案
5、CAP理论,BASE理论
6、简述你对RPC、RMI的理解
7、负载均衡算法、类型
8、简述ZAB 协议
9、zk的数据模型和节点类型
10、Dubbo 的整体架构设计及分层
11、zk和eureka的区别
12、简述zk的命名服务、配置管理、集群管理
13、讲下Zookeeper watch机制
14、分布式事务解决方案
15、springcloud核心组件及其作用
16、Spring Cloud和Dubbo的区别
17、什么是Hystrix?简述实现机制
1、MyBatis 与Hibernate 有哪些不同?
2、简述 Mybatis 的插件运行原理,如何编写一个插件。
3、#{}和${}的区别是什么?
4、mybatis的优缺点
1、mysql聚簇和非聚簇索引的区别
2、索引的基本原理
3、mysql索引的数据结构,各自优劣
4、什么是最左前缀原则?什么是最左匹配原则
5、索引设计的原则?
6、关心过业务系统里面的sql耗时吗?统计过慢查询吗?对慢查询都怎么优化过?
7、InnoDB存储引擎的锁的算法
8、ACID靠什么保证的?
9、事务的基本特性和隔离级别
10、什么是MVCC
11、mysql主从同步原理
12、分表后非sharding_key的查询怎么处理,分表后的排序?
13、简述mysql中索引类型及对数据库的性能的影响
14、mysql执行计划怎么看
15、简述MyISAM和InnoDB的区别
1、什么是bean的自动装配,有哪些方式?
2、如何实现一个IOC容器
3、spring事务什么时候会失效?
4、spring是什么?
5、spring事务传播机制
6、谈谈你对IOC的理解
7、谈谈你对AOP的理解
8、Spring事务的实现方式和原理以及隔离级别?
9、Spring框架中的单例Bean是线程安全的么?
10、Spring 框架中都用到了哪些设计模式?
11、解释下Spring支持的几种bean的作用域。
12、描述一下Spring Bean的生命周期?
13、BeanFactory和ApplicationContext有什么区别?
1、SpringMVC 工作流程
2、Spring Boot、Spring MVC 和 Spring 有什么区别
3、Spring Boot 自动配置原理?
4、Spring MVC的主要组件?
5、什么是嵌入式服务器?为什么要使用嵌入式服务器?
6、如何理解 Spring Boot 中的 Starter
1、GC如何判断对象可以被回收
2、Java类加载器
3、双亲委托模型
4、Java中的异常体系
5、ConcurrentHashMap原理,jdk7和jdk8版本的区别
6、什么是字节码?采用字节码的好处是什么?
7、==和equals比较
8、JDK JRE JVM
9、final
10、hashCode与equals
11、重载和重写的区别
12、String、StringBuffer、StringBuilder
13、接口和抽象类的区别
14、面向对象
15、HashMap和HashTable有什么区别?其底层实现是什么?
16、ArrayList和LinkedList区别
17、List和Set的区别
1、sleep()、wait()、join()、yield()的区别
2、对线程安全的理解
3、线程的生命周期?线程有几种状态
4、对守护线程的理解
5、Thread、Runable的区别
6、ThreadLocal内存泄露原因,如何避免
7、并发的三大特性
8、并发、并行、串行的区别
9、ThreadLocal的原理和使用场景
10、为什么用线程池?解释下线程池参数?
11、volatile
12、线程池中阻塞队列的作用?为什么是先添加列队而不是先创建最大线程?
13、简述线程池处理流程