前言
先介绍一下自己背景,大学本科尽管名落孙山但非计算机专业,大二的时候偶尔听过计算机的课程,特地感兴趣,就去旁听了计算机课,有工夫也会去图书馆学习,所以毕业之后也找了计算机相关的工作,奈何还是太菜,去了一家小公司做Java开发。在前公司那两年,我播种了很多我的项目上的教训,感觉本人也不能一辈子呆在小公司,所以从去年下半年我就开始从新温习坚固计算机常识,往年四月份,正式从公司到职,开始了我的面试之路,其余大厂惨败的经验我就不说了,明天说说蚂蚁金服研发岗的面经吧!在面试蚂蚁中间件的过程也面试了蚂蚁财产。
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理解么。
10.说下BIO和NIO的区别把。我说了BIO的阻塞用法,以及NIO的IO多路复用用法,说了selector,seletedkey,channel等类的应用流程,以及单线程解决连贯,多线程解决IO申请的益处。
11.说一下NIO的类库或框架。
讲了netty,写过服务端和客户端的demo,没有在生产中实际。
- channelhandler负责申请就绪时的io响应。
- bytebuf反对零拷贝,通过逻辑buff合并理论buff。
- eventloop线程组负责实现线程池,工作队列里就是io申请工作,相似线程池调度执行。
- acceptor接管线程负责接管tcp申请,并且注册工作到队列里。
12.倒排索引理解么,我说不理解。
其实就是搜索引擎的根底索引,依据关键字到文档的映射关系建设索引,中文关键字能够应用中文分词,查问时通过关键字来定位索引,并且进行排序后失去文档后果集。而后面试官说讲一下数据库把,说下sql优化的形式我说的是MySQL,先讲了一下sql应用索引的优化,而后基于索引说了几条优化计划。
13.索引什么时候会生效变成全表扫描
说了联结索引的前缀匹配,跳跃索引,聚合函数,判空和<>这些状况。
13分布式的paxos和raft算法理解么
理解过,然而讲不分明。
paxos:多个proposer发请提议(每个提议有id+value),acceptor承受最新id的提议并把之前保留的提议返回。当超过半数的accetor返回某个提议时,此时要求value批改为propeser历史上最大值,propeser认为能够承受该提议,于是播送给每个acceptor,acceptor发现该提议和本人保留的统一,于是承受该提议并且learner同步该提议。
raft:raft要求每个节点有一个选主的工夫距离,每过一个工夫距离向master发送心跳包,当心跳失败,该节点从新发动选主,当过半节点响应时则该节点入选主机,播送状态,而后当前持续下一轮选主。
14.中间件晓得哪些,阿里的dubbo,rocketmq的事务音讯,问了TCC答复说这个之前没看明确。
说了mycat实现分表分库,音讯队列kafka和rabbitmq等。
15.平时看什么书,怎么学习的。还跟我说他们部门3个华科的,校友多多。
16.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 巴拉巴拉
Java学习笔记、面试真题,须要的【点击此处】获取