前言
开发人员面对突如其来的变化,无论在架构选型,还是在日常开发中,总会面临各种挑战和考验。唯有系统性地掌握 Java 核心编程思想、设计理念,以及具体的实现方式,方可游刃有余,以免进退失据。
作为 Java 技术生态的基石,Dubbo 、ElasticSearch 、JVM 、多线程/高并发 、消息中间件 、Spring Cloud 都是你进军大厂、获得更好的职业发展必须跨过的一道难关。
作为面向人民币编程社群的一份子,我们不但要关注技术面的发展,而且也要重视经济面的收益。
所以,为了大家更好的提升自己,更好的备战面试,笔者从朋友那要来了他珍藏的宝藏级 BATJ互联网公司高级面经笔记,出自阿里一线架构师之手,下面我们花几分钟来看看究竟有些什么不同之处。
由于篇幅过长,为使得文章看起来美观悦目**【+jcc4261获取】**本文章仅展示笔记的部分核心内容
正文
一、Dubbo
-
服务调用超时问题怎么解决?
-
Dubbo支持哪些序列化方式?
-
Dubbo和SpringCloud的关系?
-
Dubbo的架构设计?
-
Dubbo的默认集群容错方案?
-
Dubbo使用的是什么通信框架?
-
Dubbo的主要应用场景?
-
Dubbo服务注册与发现的流程?
-
Dubbo的四大组件
-
Dubbo在安全机制方面是如何解决的
-
Dubbo和SpringCloud的区别?
-
Dubbo支持哪些协议,每种协议的应用场景,优缺点?
-
Dubbo的核心功能有哪些?
-
Dubbo的注册中心集群挂掉,发布者和订阅者之间还能通信么?
-
Dubbo的集群容错方案有哪些?
-
Dubbo集群的负载均衡有哪些策略
-
为什么需要服务治理?
-
Dubbo超时时间怎样设置?
-
Dubbo框架源码最重要的设计原则是什么?从架构设计角度谈一下你对这个设计原则的理解。
-
为什么Dubbo使用URL,而不使用JSON,使用URL的好处是什么?
-
请简述一下Dubbo四大组件间的关系
-
什么是SPI?请简单描述一下SPI要解决的问题。
-
JDK的SPI机制存在什么问题?
-
简述Dubbo的Wrapper机制
-
Dubbo的Wrapper类是否属于扩展类?
-
简述Dubbo的Active机制
-
Dubbo的Activate类是否属于扩展类?
-
简述Dubbo中配置中心与注册中心的关系
-
Dubbo内核工作原理的四个构成机制间的关系是怎样的?或者说,一个扩展类实例获取过程是怎样的?

二、ElasticSearch
-
你们公司的ES集群,一个node一般会分配几个分片?
-
Elasticsearch是如何实现Master选举的?
-
你是如何做写入调优的?
-
如何避免脑裂?
-
Elasticsearch对于大数据量(上亿量级)的聚合如何实现?
-
ES主分片数量可以在后期更改吗?为什么?
-
如何监控集群状态?
-
ElasticSearch中的副本是什么?
-
ES更新数据的执行流程?
-
shard里面是什么组成的?
-
ElasticSearch中的分析器是什么?
-
客户端在和集群连接时,如何选择特定的节点执行请求的?
-
Elasticsearch中的倒排索引是什么?
-
什么是脑裂?
-
什么是索引?
-
详细描述一下Elasticsearch更新和删除文档的过程

三、JVM
-
JVM参数主要有几种分类
-
Java中会存在内存泄漏吗,简述一下。
-
Java 中都有哪些引用类型
-
在 Java 中,对象什么时候可以被垃圾回收?
-
StackOverflow异常有没有遇到过?一般你猜测会在什么情况下被触发?
-
堆空间分哪几个部分?以及如何设置各个部分大小?
-
什么是栈帧?栈帧存储了什么?
-
如何设置参数生成GC日志
-
GC 是什么?为什么要有 GC?
-
Java 虚拟机是如何判定两个 Java 类是相同的?
-
使用过哪些jdk命令,并说明各自的作用是什么
-
JVM运行时数据区区域分为哪几部分?
-
是否了解类加载器双亲委派模型机制和破坏双亲委派模型?
-
逃逸分析有几种类型?
-
-Xms这些参数的含义是什么?
-
你知道哪几种垃圾收集器,各自的优缺点,重点讲下cms和G1,包括原理,流程,优缺点。
-
JVM的内存结构,Eden和Survivor比例是多少?

四、多线程/高并发
-
负载平衡的意义什么?
-
请说出同步线程及线程调度相关的方法?
-
关于epoll和select的区别,哪些说法 是正确的?(多选)
-
启动一个线程是调用run()方法还是start()方法?
-
如何确保N个线程可以访问N个资源同时又不导致死锁?
-
编写多线程程序的几种实现方式(换个问法:创建多线程的方式)?
-
线程和进程的区别?
-
什么是线程池,有哪些常用线程池?
-
什么是死锁?
-
怎么保证缓存和数据库数据的一致性?

五、消息中间件
-
消费者获取消息有几种模式?
-
RocketMQ的特点有哪些?
-
kafka 同时设置了 7 天和 10G 清除数据,到第五天的时候消息达到了 10G,这个时候 kafka将如何处理?
-
为何需要Kafka集群
-
Kafka 数据存储设计
-
Kafka如何判断一个节点是否存活?
-
kafka消息发送的可靠性机制有几种
-
请详细说一下推送模式和拉取模式。
-
Kafka 与传统消息系统之间有三个关键区别
-
RocketMQ 由哪些角色组成?
-
Kafka的消费者如何消费数据
-
Kafka的优点
-
Kafka 的设计时什么样的呢?
-
说说你对Consumer的了解?
-
Kafka新建的分区会在哪个目录下创建
-
说一下kafka消费者消费过程
-
介绍下Kafka
-
什么情况会导致kafka运行变慢?

六、Spring Cloud
-
你曾阅读过Spring Cloud的源码吗?我们知道,Spring Cloud是通过 Spring Boot 集成了很多第三方框架构成的。现在准备解析 Spring Cloud 中某子框架的源码,若还没有找到合适的入手位置,那么从哪里开始解析可能是一个不错的选择?
-
@EnableConfigurationProperties 注解对于 Starter 的定义很重要,请谈一上你对这个注解的认识。
-
Spring Boot 中定义了很多条件注解,这些注解一般用于对配置类的控制。在这些条件注解中有一个 @ConditionalOnMissingBean 注解,你了解过嘛?请谈一下你对它的认识。
-
Spring Cloud 中默认情况下对于 Eureka Client 实例的创建中,@RefreshScope 注解是比较重要的,请谈一下你对这个注解的认识。
-
Spring Cloud 中默认情况下对于 Eureka Client 实例的创建是在 EurekaClient 的自动配置类中通过 @Bean 方法完成的。但在源码中,这个 @Bean 方法上同时出现了@RefreshScope、@ConditionalOnMissionBean,与 @Lazy 注解,从这些注解的意义来分析,是否存在矛盾呢?它们联合使用又是什么意思呢?请谈一下你的看法。
-
Spring Cloud 中大量地使用了条件注解,其中 @ConditionalOnRefreshScope 注解对于Eureka Client 的创建非常重要。请谈一下你对这个注解的认识。
-
你刚才已经谈过了对 @ConditionalOnRefreshScope 注解的认识,非常不错。不过,与这个注解相对应的另一个注解 @ConditionalOnMissingRefreshScope ,你是否了解?若关注过,谈一下你的认识。
-
Spring Cloud 中 Eureka Client 的源码中有一个非常重要的类 Applications,其被称为客户端注册表。请谈一下你对它的认识。
-
Spring Cloud 中 Eureka Client 与 Eureka Server 的通信,及 Eureka Server 间的通信是如何实现的?请简单介绍一下。
写在最后
一切技术的产生与发展都离不开最基本的原理,只要追本溯源,了解技术体系最基本、最底层的原理,我们就能根据这些知识储备建立自己的后端技术框架,从而搭建一条完整的成长道路。