共计 3175 个字符,预计需要花费 8 分钟才能阅读完成。
前言
先介绍一下自己背景,大学本科尽管名落孙山但非计算机专业,大二的时候偶尔听过计算机的课程,特地感兴趣,就去旁听了计算机课,有工夫也会去图书馆学习,所以毕业之后也找了计算机相关的工作,奈何还是太菜,去了一家小公司做 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 学习笔记、面试真题,须要的【点击此处】获取