阿里面试,三个题将我拒之门外

双十一的忙碌,将我电脑桌面上一个不足1M的Word文档挤到了角落。才从这阵子的忙碌中缓过神来,正准备花点时间清理一下杂乱无章的电脑桌面,删除一些不重要的文件。当光标移动到一个文档上时,它的命名瞬间触动了我脑海深处的一丝记忆——《阿里高频面试题》

就是这个不足1M的文档,还是我死乞白赖的找老韩要过来的。老韩是阿里的架构师,职级是P7,参与过多次阿里的技术面。所以他对人才需求的标准还是比较熟悉,因此我找他帮忙整理一点面试题,交换条件是我帮他推荐各方面素质好一点的程序员。

这里咱们就直接进入阿里面试题的真相揭露流程。

一. 扎实的技术深度

有参加过阿里面试的朋友会知道,阿里面试难度不在于广度而在于其深度,在阿里面试才能体会到什么叫做刨根问到底。

也许你恰巧知道Mybatis打开调试模式之后,能打印sql语句等信息,是通过动态代理实现的,也了解在mybatis日志模块中,ConnectionLogger负责打印连接信息和SQL语句;PreparedStatementLogger负责打印参数信息......等原理,也晓得动态代理的本质是使用了代理模式。

那么问题来了,你得完整的说出代理模式的实现思路以及优缺点;代理模式以及动态代理在spring中的应用例子......

其实,任何地方都是这样。怎样的能力匹配怎样的薪资,对技术只是一知半解、仅仅会写业务代码也能找到工作,但你在仰慕别人高额工资的时候,也要仰慕别人的技术深度。

二. 阿里高频面试题

这里就直接介绍老韩发给我的面试题。小编仔细看了一下,这里分为三个方面。

  • 设计方面
  • 性能优化
  • 架构方面

听老韩说,这面试题是他从P6/P7面试题里面截取的......

1. 设计方面

①. 一个大型的系统进行微服务设计思路是怎么样的

答:一个大型吸引的微服务设计思路是从业务和数据两个微服务进行分析,将通用功能和同一类数据的功能模块抽取出来形成微服务模块。

②. 微服务模块是一个库还是多个库

答:每个微服务模块建议是独立的数据库存储。

③. 微服务应用有状态和无状态是否有影响

答:微服务应用一般是无状态化和容器化的,这样便于集群部署。如果有状态,则本地数据需要落地,是没法进行多实例集群的。

④. 常用的微服务框架有哪些?包括哪些组件

答:常用的微服务架构包括springcloud、dubbo等。springcloud包括注册中心、配置中心、分布式调用链、网关等。

是不是觉得上面这些比较偏理论了,那么下面这题,大家可以自己想想答案:微服务设计后,系统模块会变多,分布式事务方法包括哪些?如何选择?当一个接口的并发量达到瓶颈,为了保证系统的稳定,如何进行处理?常用的处理算法是啥?

2. 性能优化

①. redis一主多从的架构解决啥问题的

答:redis一主多从架构主要是解决高并发读的场景的,主主要用于写,多个从服务器应对高并发读,增加redis的吞吐量。

②. Redis的持久化策略有哪些?区别是啥?AOF默认多长时间刷一次盘

答:redis的持久化策略包括RDB和AOF。RDB主要是存储redis数据,AOF是存储操作记录,因此A0F的数据量较大,IO消耗也大。同时,AOF默认是每一秒刷一次盘。

③. 如果对redis数据安全较高的场景,建议的主从持久化策略设置方式

答:对数据安全较高的场景,建议主redis关闭持久化,从redis开启AOF。并关闭AOF自动重写,通过定时任务闲时(如凌晨12点)进行AOF重写。

④. rocketMQ与kafka的区别是啥

答:区别在于:

  • rocketMQ支持事务消息
  • rocketmq支持消息消费失败有重试机制,kafka不支持消息消费失败是没有重试机制
  • rocketMQ是发送消息实时同步的,kafka是批量发送。

⑤. rocketMQ与kafka的主要使用场景

答:rocketMQ主要使用在对数据的可靠性要求较高的场景,不允许数据丢失。如充值类应用。kafka主要用于日志等流式数据的存储使用,因此对数据的绝对安全要求不高,丢失部分数据影响不大。

⑥. RocketMQ的部署架构是啥样的?对数据要求较高的场景,rocketMQ主从复制和刷盘策略如何配置

答:rocketMQ由nameserver集群和broker主从集群组成。对数据要求较高的场景,建议的持久化策略是主broker和从broker采用同步复制方式,主从broker都采用异步刷盘方式。通过同步复制方式,保存数据热备份,通过异步刷盘方式,保证rocketMQ高吞吐量。

3. 架构方面

一个系统典型的架构从底向上划分为哪几层?每层的架构是怎么样的?保证高性能的常用措施有哪些?保证高可靠常用措施有哪些?

答:一个系统典型的架构从底向上划分为基础设施层、数据存储层、平台层、应用层、用户层。基础设施层目前常采用云平台架构,数据存储层采用mysql集群,平台层采用k8s等容器化平台,应用层按照微服务进行设计。保证高性能常用的措施包括分布式缓存、数据库集群、应用集群等。保证高可靠的常用措施是限流降级。

面试题还有很多,这篇文章暂且就分享到这里。大家可以先尝试解答一下的这些面试题,然后再对照题目后面的答案,看看自己能否通过这一轮面试。

更多BAT面试题点击这里面试资料合集

你可能感兴趣的:(阿里面试,三个题将我拒之门外)