【阿里面经分享】蚂蚁金服研发面经+阿里中间件研发面经+面试题

蚂蚁金服研发面经

  • 蚂蚁金服中间件

  • 蚂蚁财富

  • 研发工程师

之前面了阿里中间件的提前批,不过没走流程。同期还面了蚂蚁中间件的两轮面试,被告知不走流程就不能面了,所以也没面完。

后来走了蚂蚁金服财富事业群这边的流程。前几天刚刚面完HR。

正好今天分享一下面经,大家可以多交流交流哈。

1. 蚂蚁中间件(面了三次,两次一面,一次二面)
2. 蚂蚁财富(1+2+交叉+HR)

蚂蚁金服中间件一号机

一面

自我介绍

  1. Java中的多线程了解么,线程池的增长策略和拒绝策略了解么,说一下。

  2. 讲一下线程增加的过程和拒绝策略的执行。

  3. 讲了一下fixthreadpool的增长策略,然后几种拒绝策略。

  4. 高并发情况下,如何使用线程池,用哪个,问了一下线程结束要多久,是否在下一个线程结束前完成(我想的是cachethreadpool,其实思路错了)。

  5. 表示并发量比较大,所以我说可以考虑并发量是否大于队列长度加上最大线程数量和,如果不超过的话可以是用fixthreadpool。

  6. 并发juc了解么,有哪些线程安全的list。说了个copyonwritelist,想了半天说不出第二个了。尴尬,那就vector把,不是juc里的。
    貌似并发包里确实没有其他list啊。
    还问了concurrenthashmap1.8的改动。

  7. HTTP协议了解么,和tcp有什么区别。

  8. http1.0和2.0的区别。
    答了TCP连接复用,加入ssl,以及压缩请求头。
    其中哪个更新比较有意义,为什么。我说的是压缩请求头,这样可以优化HTTP服务的性能。

  9. Java的网络编程,比如NIO和Socket了解么。
    说下BIO和NIO的区别把。
    我说了BIO的阻塞用法,以及NIO的IO多路复用用法,说了selector,seletedkey,channel等类的使用流程,以及单线程处理连接,多线程处理IO请求的好处。

  10. 说一下NIO的类库或框架
    讲了netty,写过服务端和客户端的demo,没有在生产中实践。

  • channelhandler负责请求就绪时的io响应。
  • bytebuf支持零拷贝,通过逻辑buff合并实际buff。
  • eventloop线程组负责实现线程池,任务队列里就是io请求任务,类似线程池调度执行。
  • acceptor接收线程负责接收tcp请求,并且注册任务到队列里。
  1. 倒排索引了解么,我说不了解。
    其实就是搜索引擎的基础索引,根据关键字到文档的映射关系建立索引,中文关键字可以使用中文分词,查询时通过关键字来定位索引,并且进行排序后得到文档结果集。
    然后面试官说讲一下数据库把,说下sql优化的方式
    我说的是MySQL,先讲了一下sql使用索引的优化,然后基于索引说了几条优化方案。

  2. 索引什么时候会失效变成全表扫描
    说了联合索引的前缀匹配,跳跃索引,聚合函数,判空和<>这些情况。

  3. 分布式的paxos和raft算法了解么
    了解过,但是讲不清楚。

paxos:多个proposer发请提议(每个提议有id+value),acceptor接受最新id的提议并把之前保留的提议返回。当超过半数的accetor返回某个提议时,此时要求value修改为propeser历史上最大值,propeser认为可以接受该提议,于是广播给每个acceptor,acceptor发现该提议和自己保存的一致,于是接受该提议并且learner同步该提议。

raft:raft要求每个节点有一个选主的时间间隔,每过一个时间间隔向master发送心跳包,当心跳失败,该节点重新发起选主,当过半节点响应时则该节点当选主机,广播状态,然后以后继续下一轮选主。

  1. 中间件知道哪些,阿里的dubbo,rocketmq的事务消息,问了TCC回答说这个之前没看明白。
    说了mycat实现分表分库,消息队列kafka和rabbitmq等。

  2. 平时看什么书,怎么学习的。还跟我说他们部门3个华科的,校友多多。

  3. Spring和Springmvc讲一下。讲了Spring的ioc和aop,Springmvc的基本架构,请求流程。

蚂蚁金服中间件二号机

一面

  1. 自我介绍

  2. 讲一下ArrayList和linkedlist的区别,ArrayList的扩容方式,扩容时机。

  3. hashmap的实现。

  4. NIO了解么,讲一下和BIO的区别,AIO呢。阻塞,非阻塞,异步。具体。

  5. 你说了解分布式服务,那么你怎么理解分布式服务。

  6. 你说了解Tomcat的基本原理,了解的是哪一部分,基本架构,connector和container

  7. 你在项目中怎么用到并发的

  8. docker和虚拟机讲一下。

  9. 有啥想问的

蚂蚁金服中间件二面

  1. 项目

  2. 说一下Spring源码把,它的架构,流程。

  3. Spring的bean如果要在实例化过程中修改其某一个成员变量,应该怎么做呢。不通过构造方法,并且AOP也并不能实现。

  4. Tomcat的类加载器了解么,回答不了解只了解Java的类加载器。

  5. 自定义类加载器怎么实现,其中哪个方法走双亲委派模型,哪个不走,不走的话怎么加载类(实现findclass方法,一般用defineclass加载外部类),如何才能不走双亲委派。(重写loadclass方法)

  6. 布隆过滤器了解么,讲了ip地址过滤的布隆过滤器实现。

  7. 听说你项目用过docker,讲一下docker的实现原理,说了虚拟机一般要对内核进行虚拟化,docker则用cgroup和namespace分别进行硬件和命名空间的隔离。

  8. 项目中遇到的最大挑战。

  9. 项目中学到最多的东西

  10. 有什么想问

蚂蚁财富事业部

一面

  1. 亿级ip地址过滤

  2. 排序算法和适用场景

  3. 数据库的事务有什么用

  4. 数据库的悲观锁和乐观锁

  5. 数据的索引有什么用,怎么实现

  6. 联合索引的匹配原则

  7. 数据库万级变成亿级,怎么处理。分库分表,分片规则hash和取余数。使用mycat中间件实现。

  8. redis这种nosql和mysql有什么区别,讲了一遍redis

  9. Spring了解不,用到了哪些设计模式,说了四个,单例,工厂,代理,观察者,模板其实也算。

  10. web请求的过程,讲了浏览器到http服务器的过程,再讲了mvc的请求处理过程。

  11. 你的职业规划

  12. 没了。

二面

没有二面,好像说是跳过了一轮,直接技术主管面。

三面:

  1. 项目中的多线程,为什么用chm,还有什么可以避免并发问题。

  2. 平时在看什么,写什么博客,我说分布式,关注什么内容,大后端,Hadoop生态。

  3. dubbo了解么

  4. dubbo的基本架构,几个组件说一下

  5. 服务生产者和消费者怎么进行rpc调用

  6. 怎么进行服务注册发现 zk实现具体说说

  7. dubbo的负载均衡怎么做,讲一下具体代码实现。

  8. dubbo的服务容错怎么做,怎么知道服务器宕机了 zk的心跳机制维持服务器连接

  9. 好了我要问的差不多啦。

交叉面

隔壁部门的技术主管,问了一道算法题。。就没问别的了。。我也是很醉。。。

题目是链表的排序,扯了4、5种方案,转成数组,直接排序,拆分再排序,顺序连接等等。。然后我表示不能再优化了。他就说没别的问题了。。。有点吃惊。

HR面:

  1. 兴趣爱好

  2. 三年到五年的职业规划

  3. 意向公司和城市

  4. 实习经历和收获

  5. 实习中最大的困难

  6. 为什么换公司,为什么拒绝菜鸟实习offer

  7. 你的缺点和优点

  8. 你觉得你比其他人优秀的地方说三个

  9. 为什么想来我们部门

  10. 巴拉巴拉

阿里中间件研发面经

我参与了阿里巴巴中间件部门的提前批面试,一共经历了四次面试,拿到了口头offer。这是我的面经,在这里分享给大家。

一面:

  1. 自我介绍

  2. 项目中做了什么,难点呢。

  3. Java的线程池说一下,各个参数的作用,如何进行的。

  4. Redis讲一下

  5. 分布式系统的全局id如何实现。用zookeeper如何实现的呢,机器号+时间戳即可。

  6. 分布式锁的方案,redis和zookeeper那个好,如果是集群部署,高并发情况下哪个性能更好。

  7. kafka了解么,了解哪些消息队列。

  8. 想做业务还是研究。

  9. 然后出了一道题,linux的访问权限是rwx格式的。使用一个类支持访问权限的增删改查,并且注意使用的数据格式以及方法效率,规范。给了一个多小时写题。

耗时将近30分钟。

二面:

  1. 介绍你做的项目和其中的难点。

  2. 上次面试官问的问题,反射的作用是什么。

  3. 数据仓库,多线程和并发工具等。

  4. 私有云,docker和k8s等。

  5. 了解哪些中间件,dubbo,rocketmq,mycat等。

  6. dubbo中的rpc如何实现。

  7. 自己实现rpc应该怎么做

  8. dubbo的服务注册与发现。

  9. 听说我是非科班,于是问了些排序算法

耗时将近30分钟。

三面:

三面不是面试,而是笔试,耗时三个小时,考的是Java核心的基础。但是好像不能透题,就不说了。都挺有难度的。

大概说一下就是有几个考点,Java并发的知识点,集合类,线程池,多线程之间的通信等。

HR面:

聊人生谈理想,HR小姐姐非常温柔,交流十分愉快。30分钟。

你可能感兴趣的:(【阿里面经分享】蚂蚁金服研发面经+阿里中间件研发面经+面试题)