阿里控股一面凉经

20min 秒挂
自我介绍
项目是自己用来学习的还是已上线
kafka是怎么实现高吞吐低延迟的
怎么保证消息的一致性,顺序性
怎么实现消息到同一个分区
不在同一个分区能实现顺序性嘛
equals和hashcode的关系
volatile和synchronized区别
举一个典型应用场景
实现一个无锁队列(不会)
为什么不推荐使用finalize方法
垃圾回收机制中哪些因素会影响对象的回收
一般什么情况会使用反射
使用反射风险
设计一个支持百亿级数据量的去重系统
如果让你重构一段冗余且缺乏注释的代码,你会从哪些维度入手
反问?一周出结果还有两面
#面试经验#
#阿里控股# #阿里#
全部评论
我也20min秒挂
点赞 回复 分享
发布于 03-14 22:11 湖北
哥们你技能里面写kafka了吗
点赞 回复 分享
发布于 03-14 11:52 上海
啥部门呀
点赞 回复 分享
发布于 03-12 20:39 浙江

相关推荐

Q1. Lamda表达式A1: Lamda表达式更简洁,创建匿名函数。简化函数式接口。只有一个表达式时,表达式的结果直接作为返回值;多个表达式,需要大括号,return语句作为返回值。lamda表达式使JAVA支持函数式编程,允许函数作为参数传递;结合Stream API处理集合操作如过滤。Q2. 为什么有包装类 Integer和int的区别A2. 集合,泛型只能使用引用类型,不能使用基本数据类型。集合需要支持动态内存分配、垃圾回收等特性,而这些机制都依赖于对象。int是基本数据类型,Integer是int的封装类,是引用类型。int默认值是0,而Integer默认值是null,所以Integer能区分出0和null的情况。基本数据类型在声明时系统会自动给它分配空间,而引用类型声明时只是分配了引用空间,必须通过实例化开辟数据空间之后才可以赋值。我自己想的是 集合如Set需要hashCode和equals方法来判断元素是否已经存在,所以集合必须用封装类Q3: 项目架构 选型 原因Q4: 微服务间调用方式、通信协议,为何这样选Dubbo 是阿里巴巴开源的高性能 Java RPC 框架,广泛应用于微服务架构中,其核心优势在于高效的远程调用能力、丰富的服务治理机制以及灵活的多协议支持。以下是关于 Dubbo 的微服务调用方式、支持的通信协议及选择 Dubbo 的原因的详细解析:---### **一、Dubbo 的微服务调用方式**Dubbo 的微服务间调用主要基于 **RPC(远程过程调用)** 实现,通过以下核心机制完成服务交互:1. **服务注册与发现**- 服务提供者启动时,将自身信息(如服务名、地址、端口)注册到注册中心(如 Zookeeper、Nacos),消费者通过注册中心动态获取可用服务列表。- 支持多种负载均衡策略(随机、轮询、最少活跃调用等),自动选择最优服务实例进行调用。2. **RPC 调用流程**- **接口定义与共享**:服务提供者和消费者需共享相同的服务接口定义(如 Java Interface),通过代理机制屏蔽底层通信细节。- **序列化与传输**:调用参数和返回结果通过序列化(如 Hessian、Protobuf)转换为二进制数据,通过 TCP 或 HTTP 协议传输。3. **服务治理机制**- **容错策略**:提供 6 种容错模式(如失败自动切换、快速失败、广播调用),应对不同场景的异常处理需求。- **动态配置**:通过配置中心(如 Nacos)实现参数动态更新,无需重启服务。---### **二、Dubbo 支持的通信协议**Dubbo 支持多种通信协议,开发者可根据场景灵活选择:| **协议**       | **特点**                                                                 | **适用场景**                                                                 ||----------------|--------------------------------------------------------------------------|-----------------------------------------------------------------------------|| **Dubbo 协议** | 默认协议,基于 TCP 长连接与二进制传输,性能高、延迟低,但跨语言支持有限。 | 高并发、低延迟的 Java 微服务间调用。                                           || **Triple 协议** | 基于 HTTP/2 和 Protobuf,兼容 gRPC,支持流式通信和 TLS 加密,穿透性强。 | 云原生环境、跨语言调用(如与 Go/Python 交互)或需要网关代理的场景。             || **HTTP/REST**  | 基于 HTTP 的 RESTful 风格,兼容性强,但性能较低。                   | 跨语言 Web 服务集成或对外提供开放 API。                                        || **gRPC**       | 基于 HTTP/2 的高效协议,支持双向流式通信,需依赖 Protobuf 定义服务。 | 需要强类型约束、跨语言且对性能要求较高的场景。                                 || **Hessian**    | 二进制协议,跨语言支持较好,但性能略逊于 Dubbo 协议。                          | Java 与非 Java 系统(如 PHP)间的轻量级集成。                                  |---### **三、选择 Dubbo 的核心原因**1. **高性能与低延迟**- Dubbo 协议采用单一长连接和异步非阻塞通信(基于 Netty),在高并发场景下性能显著优于 HTTP/REST,例如在阿里巴巴双十一中支持万亿级调用。- 序列化优化(如 Dubbo3 的 Triple 协议性能较 gRPC 提升 40%)。2. **完善的服务治理**- **负载均衡**:支持随机、轮询、一致性哈希等策略,自适应算法可动态感知服务端负载。- **容错与熔断**:内置多种容错模式(如 Failover、Failfast),支持服务降级和熔断机制,保障系统稳定性。- **动态扩展**:服务实例可动态注册/注销,支持水平扩展与灰度发布。3. **多协议与生态兼容性**- 支持 Dubbo、Triple、gRPC 等多种协议,可无缝集成 Spring Cloud、Kubernetes 等生态。- 提供统一的服务治理能力(如监控、链路追踪),适用于混合技术栈环境。4. **生产级可靠性验证**- 历经阿里巴巴大规模电商场景验证,支持百万级节点集群和智能流量调度,具备高可用性。---### **四、总结**Dubbo 通过高效的 RPC 调用机制、灵活的多协议支持以及强大的服务治理能力,成为构建高性能微服务系统的首选框架。其优势尤其体现在 **高并发场景下的性能表现**、**跨语言与云原生适配能力** 以及 **企业级服务治理功能**。若需进一步优化性能或扩展功能,可结合具体场景选择 Triple、gRPC 等协议,或通过第三方工具(如 Prometheus、Zipkin)增强监控能力。
查看4道真题和解析
点赞 评论 收藏
分享
05-19 16:19
门头沟学院 Java
凉,原因是自己答得不是非常好以及他们要求学历是杭电及以上学历待遇可以1. 反射知道吗,你说一下2. hashmap的底层结构3. hashtable知道吗4. hash方法是如何优化的5. 多少会转为红黑树6. 为什么要用高16位和低16位异或7. 那他是怎么插入槽的,做了什么优化,过程说一下8. 是怎么实现一个去重的9. concurrentHashMap了解吗10. 那分段锁里面是怎么实现的11. cas+synchronized是如何操作,为什么要这样呢,先详细说一下cas12. 是怎么上锁的呢(这里我说是对对象,他说是吗,这样不是整个锁住了吗)13. JVM的内存结构说一下14. 线程池的那个参数说一下15. 拒绝策略有哪些16. redis的aof重写说一下17. mysql的行锁说一下18. 为什么里面用b+树19. 索引失效情况有哪些(没答完全)20. 索引覆盖是什么21. 索引下推讲讲22. redission的看门狗机制说一下23. redis里面的数据你是怎么与数据库同步(定时)24. volatile25. 如果我要求强一致性,然后每隔10秒进行一次同步,但是其中这个业务进行时间大于10秒了怎么办(消息队列,多线程去处理)26. lua脚本执行到一半中断,比如redis宕机,这个时候会回滚吗27. acid说一下28. 异常处理机制29. synchronized的底层原理30. reentrantlock的原理,他底层是怎么实现的
丰川打工祥:不会是智晟未来吧。这是家培训公司。3300+500绩效+免费住宿。工作是给别人面试,没什么编码机会。可以仔细想想要不要去。
查看30道真题和解析
点赞 评论 收藏
分享
评论
4
34
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务