面试备战:BATJ互联网企业 Java 面试避坑指南

前言

开发人员面对突如其来的变化,无论在架构选型,还是在日常开发中,总会面临各种挑战和考验。唯有系统性地掌握 Java 核心编程思想、设计理念,以及具体的实现方式,方可游刃有余,以免进退失据。

作为 Java 技术生态的基石,Dubbo 、ElasticSearch 、JVM 、多线程/高并发 、消息中间件 、Spring Cloud 都是你进军大厂、获得更好的职业发展必须跨过的一道难关。

作为面向人民币编程社群的一份子,我们不但要关注技术面的发展,而且也要重视经济面的收益。

所以,为了大家更好的提升自己,更好的备战面试,笔者从朋友那要来了他珍藏的宝藏级 BATJ互联网公司高级面经笔记,出自阿里一线架构师之手,下面我们花几分钟来看看究竟有些什么不同之处。

由于篇幅过长,为使得文章看起来美观悦目,本文章仅展示笔记的部分核心内容

正文

一、Dubbo

  1. 服务调用超时问题怎么解决?
  2. Dubbo支持哪些序列化方式?
  3. Dubbo和SpringCloud的关系?
  4. Dubbo的架构设计?
  5. Dubbo的默认集群容错方案?
  6. Dubbo使用的是什么通信框架?
  7. Dubbo的主要应用场景?
  8. Dubbo服务注册与发现的流程?
  9. Dubbo的四大组件
  10. Dubbo在安全机制方面是如何解决的
  11. Dubbo和SpringCloud的区别?
  12. Dubbo支持哪些协议,每种协议的应用场景,优缺点?
  13. Dubbo的核心功能有哪些?
  14. Dubbo的注册中心集群挂掉,发布者和订阅者之间还能通信么?
  15. Dubbo的集群容错方案有哪些?
  16. Dubbo集群的负载均衡有哪些策略
  17. 为什么需要服务治理?
  18. Dubbo超时时间怎样设置?
  19. Dubbo框架源码最重要的设计原则是什么?从架构设计角度谈一下你对这个设计原则的理解。
  20. 为什么Dubbo使用URL,而不使用JSON,使用URL的好处是什么?
  21. 请简述一下Dubbo四大组件间的关系
  22. 什么是SPI?请简单描述一下SPI要解决的问题。
  23. JDK的SPI机制存在什么问题?
  24. 简述Dubbo的Wrapper机制
  25. Dubbo的Wrapper类是否属于扩展类?
  26. 简述Dubbo的Active机制
  27. Dubbo的Activate类是否属于扩展类?
  28. 简述Dubbo中配置中心与注册中心的关系
  29. Dubbo内核工作原理的四个构成机制间的关系是怎样的?或者说,一个扩展类实例获取过程是怎样的?

     

二、ElasticSearch

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

     

三、JVM

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

     

四、多线程/高并发

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

     

五、消息中间件

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

     

六、Spring Cloud

  1. 你曾阅读过Spring Cloud的源码吗?我们知道,Spring Cloud是通过 Spring Boot 集成了很多第三方框架构成的。现在准备解析 Spring Cloud 中某子框架的源码,若还没有找到合适的入手位置,那么从哪里开始解析可能是一个不错的选择?
  2. @EnableConfigurationProperties 注解对于 Starter 的定义很重要,请谈一上你对这个注解的认识。
  3. Spring Boot 中定义了很多条件注解,这些注解一般用于对配置类的控制。在这些条件注解中有一个 @ConditionalOnMissingBean 注解,你了解过嘛?请谈一下你对它的认识。
  4. Spring Cloud 中默认情况下对于 Eureka Client 实例的创建中,@RefreshScope 注解是比较重要的,请谈一下你对这个注解的认识。
  5. Spring Cloud 中默认情况下对于 Eureka Client 实例的创建是在 EurekaClient 的自动配置类中通过 @Bean 方法完成的。但在源码中,这个 @Bean 方法上同时出现了@RefreshScope、@ConditionalOnMissionBean,与 @Lazy 注解,从这些注解的意义来分析,是否存在矛盾呢?它们联合使用又是什么意思呢?请谈一下你的看法。
  6. Spring Cloud 中大量地使用了条件注解,其中 @ConditionalOnRefreshScope 注解对于Eureka Client 的创建非常重要。请谈一下你对这个注解的认识。
  7. 你刚才已经谈过了对 @ConditionalOnRefreshScope 注解的认识,非常不错。不过,与这个注解相对应的另一个注解 @ConditionalOnMissingRefreshScope ,你是否了解?若关注过,谈一下你的认识。
  8. Spring Cloud 中 Eureka Client 的源码中有一个非常重要的类 Applications,其被称为客户端注册表。请谈一下你对它的认识。
  9. Spring Cloud 中 Eureka Client 与 Eureka Server 的通信,及 Eureka Server 间的通信是如何实现的?请简单介绍一下。

     

写在最后

一切技术的产生与发展都离不开最基本的原理,只要追本溯源,了解技术体系最基本、最底层的原理,我们就能根据这些知识储备建立自己的后端技术框架,从而搭建一条完整的成长道路。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值