阿里面试第四弹

382 阅读3分钟

mybatis框架

1.Mybatis怎样生成Mapper接口的实现类执行sql?

Mybatis运行时会使用JDK动态代理为Maper接口生成代理proxy对象,代理对象proxy会拦截接口方法,从而执行sql

Dubbo

1.Dubbo协议特点及适用场景?

①Dubbo缺省协议采用单一长连接和NIO异步通讯,②适合于小数据量大并发的服务调用,③以及服务消费者机器数远大于服务提供者机器数的情况

2.Dubbo服务调用超时的实现原理是什么?

①dubbo默认采用了netty做为网络组件,它属于—种NIO的模式。②消费端发起远程请求后,线程不会阻塞等待服务端的返回,而是马上得到一个ResponseFuture,③消费端通过不断的轮询机制判断结果是否有返回。④因为是通过轮询,所以要避免死循环,为了解决这个问题就引入了超时机制,只在一定时间范围内做轮询,如果超时时间就返回超时异常

3.Dubbo服务集群默认的容错模式是什么,并解释一下该模式?

①默认是Failover(失败自动切换)模式

②解释:失败自动切换,当出现失败,重试其它服务器。(缺省通常用于读操作,但重试会带来更长延迟

③可通过retries来设置重试次数

SpringCloud

1.Hystrix服务隔离策略有哪些?

①线程池隔离模式;①信号量隔离模式

缓存

1.Redis有哪些集群方案?

①codis 它支持在节点数量改变情况下,旧节点数据可恢复到新hash节点

②redis cluster3.0自带的集群,特点在于他的分布式算法不是一致性hash,而是hash槽的概念,以及自身支持节点设置从节点。具体看官方文档介绍

③在业务代码层实现,起几个毫无关联的redis实例,在代码层,对key进行hash计算,然后去对应的redis实例操作数据。这种方式对hash层代码要求比较高

Kafka

1.在kafka中,如果某个topic有多个partition,生产者是怎么知道该将数据发往哪个partition呢?

①partition在写入时候可以指定需要写入的partition,如果有指定,则写入对应partition。

②如果没有指定partition,但是设置了数据的key,则会根据key的值hash出一个partition。

③如果既没指定partition,又没有设置key,则会轮询选出一partition。

2.生产者在向kafka写入消I的时候,怎么保证消息不丢失呢?

①通过ACK应答机制!在生产者向队列写入数据的时候可以设置参数来确定是否确认kafka接收到数据,这个参数可设置的值为0、1、all。

②0代表producer往集群发送数据不需要等到集群的返回,不确保消息发送成功。安全性最低但是效率最高。

③1代表producer往集群发送数据只要leader应答就可以发送下一条,只确保leader发送成功。

④all代表producer往集群发送数据需要所有的follower都完成从leader的同步才会发送下—条,确保leader发送成功和所有的副本都完成备份。安全性最高,但是效率最低。

006APoFYly1g5ra1y6277g307u07u4b5.gif