程序员真是个赚钱的行业?北漂3年的Java开发,那是真的惨

前言

我先后拜访了一二十家互联网公司,与不同的面试官和面试者进行面对面探讨,深入了解了企业对于面试者的要求和常见的 Java 面试题型。之后我花了大半年的时间,结合自己 4 年多作为面试官的经历,把这些内容整理成文,对 Java 的核心知识点和常见的多道面试题,做了详细的介绍,也是小编的全部分享,希望对你能有所帮助。

一、RabbitMQ架构设计面试题

Broker:rabbitmq的服务节点

Queue:队列,是RabbitMQ的内部对象,用于存储消息。RabbitMQ中消息只能存储在队列中。生产者投递消息到队列,消费者从队列中获取消息并消费。多个消费者可以订阅同一个队列,这时队列中的消息会被平均分摊(轮询)给多个消费者进行消费,而不是每个消费者都收到所有的消息进行消费。

Exchange:交换器。生产者将消息发送到Exchange,由交换器将消息路由到一个或多个队列中。如果路由不到,或返回给生产者,或直接丢弃,或做其它处理。

RoutingKey:路由Key。生产者将消息发送给交换器的时候,一般会指定一个RoutingKey,用来指定这个消息的路由规则。这个路由Key需要与交换器类型和绑定键(BindingKey)联合使用才能最终生效。

Binding:通过绑定将交换器和队列关联起来,在绑定的时候一般会指定一个绑定键,这样RabbitMQ就可以指定如何正确的路由到队列了。

信道:信道是建立在Connection 之上的虚拟连接。当应用程序与Rabbit Broker建立TCP连接的时候,客户端紧接着可以创建一个AMQP 信道(Channel) ,每个信道都会被指派一个唯一的D。

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

  • 消息被消费方否定确认,使用 channel.basicNack 或 channel.basicReject ,并且此时requeue 属性被设置为 false 。
  • 消息在队列的存活时间超过设置的TTL时间。
  • 消息队列的消息数量已经超过最大队列长度。

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

发送方确认机制:

接收方确认机制:

3、简述kafka架构设计

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

5、RabbitMQ镜像队列机制

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

7、RabbitMQ事务消息

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

9、简述kafka的rebalance机制

10、Kafka中zk的作用

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

二、Redis面试题

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?简述实现机制

四、Mybatis面试题

1、MyBatis 与Hibernate 有哪些不同?

  • 开发速度的对比:
  • 开发工作量的对比:
  • sql优化方面:
  • 对象管理的对比:
  • 缓存机制对比:

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

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

4、mybatis的优缺点

五、MySQL数据库面试题

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的区别

六、Spring面试题

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有什么区别?

七、Spring MVC、Spring Boot面试题

1、SpringMVC 工作流程

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

3、Spring Boot 自动配置原理?

4、Spring MVC的主要组件?

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

6、如何理解 Spring Boot 中的 Starter

八、Java基础

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、简述线程池处理流程

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值