蚂蚁金服面经


连接:https://www.nowcoder.com/discuss/91738?type=0&order=4&pos=30&page=1mysql

蚂蚁中间件(面了三次,两次一面,一次二面

蚂蚁金服中间件一号机

一面:
自我介绍

1Java中的多线程了解么,线程池的增加策略和拒绝策略了解么,说一下。
2讲一下线程增长的过程和拒绝策略的执行。
3讲了一下fixthreadpool的增加策略,而后几种拒绝策略。

4高并发状况下,如何使用线程池,用哪一个,问了一下线程结束要多久,是否在下一个线程结束前完成(我想的是cachethreadpool,其实思路错了)。
5表示并发量比较大,因此我说能够考虑并发量是否大于队列长度加上最大线程数量和,若是不超过的话能够是用fixthreadpool。

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

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

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

10说一下NIO的类库或框架
讲了netty,写过服务端和客户端的demo,没有在生产中实践。
1 channelhandler负责请求就绪时的io响应。
2 bytebuf支持零拷贝,经过逻辑buff合并实际buff。
3 eventloop线程组负责实现线程池,任务队列里就是io请求任务,相似线程池调度执行。
4 acceptor接收线程负责接收tcp请求,而且注册任务到队列里。


11倒排索引了解么,我说不了解。
其实就是搜索引擎的基础索引,根据关键字到文档的映射关系创建索引,中文关键字可使用中文分词,查询时经过关键字来定位索引,而且进行排序后获得文档结果集。
而后面试官说讲一下数据库把,说下sql优化的方式
我说的是MySQL,先讲了一下sql使用索引的优化,而后基于索引说了几条优化方案。

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

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个华科的,校友多多。

16Spring和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+2+交叉+HR)

跟这边的部门主管说了一下以前面试的状况,而后他帮忙催了下进度。

一面:
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 好了我要问的差很少啦。

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

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

HR面:
1 兴趣爱好
2 三年到五年的职业规划
3 意向公司和城市
4 实习经历和收获
5 实习中最大的困难
6 为何换公司,为何拒绝菜鸟实习offer
7 你的缺点和优势
8 你以为你比其余人优秀的地方说三个
9 为何想来咱们部门
10 巴拉巴拉

转载连接: https://www.nowcoder.com/discuss/91278?type=0&order=4&pos=27&page=1

一面 简历面: web

全程大概40多分钟 面试

面试官一来讲我有两段实习经历,让我简单介绍一下本身实习作过的事情。 redis

而后让我说一下项目的架构 算法

而后一道设计题 问我克隆方面的知识 好比传入Object,返回Object sql

又问了一道设计题 可是确实很紧张就回答不会 后来直接问基础 docker

问我Spring IoC AOP(IoC从源码层面理了一遍,AOP的话没看源码讲了Spring下如何使用以及两种动态代理方式) 数据库

静态代理如何实现 编程

还有AOP中的动态代理 jdk动态代理 cglib(也坦言只看过JDK动态代理的源码,对CGLIB源码不熟悉) 后端

cglib为何不用实现接口(InterfaceMaker)

cglib效率问题(FastClass)

二面 team leader 电面:
二面问了不少,差很少1个小时,不少内容都忘记了。
先是自我介绍环节
刚开始先仔细问项目,问了一些难点和解决方案
平时如何设计和作项目(从软件工程需求分析,设计,实现,测试等方面回答)
一道核心的场景题,这题应该是面试官打分的重点:双11这样的并发流量如何确保服务的可用性(这道题回答而且细问了好久,从前台到后台一些处理回答,面试官深问了好久,包括各类场景的拓展,读写分离,缓存、中间件、分库分表等,主要考察思惟的发散,一系列回答完面试官比较满意)
2G的日志文件如何查找到异常日志数量
问我算法如何我说通常就问了一道不难的算法题 从空间复杂度和时间复杂度优化给了两个方案
问我Java8是否了解,我觉得会问我lambda以及stream,面试官说了一个很低层的,具体我也忘了,当时确实不知道就跳过
Java内存模型(也就是常规的回答,自顶向下,介绍原理而后从原子性、可见性、有序性再分别深刻回答,答到了一些Unsafe类的处理,面试官说不错)
GC机制(常见的问题,各方面回答就行)
最后聊一些兴趣爱好以及学习生活上的事情,
总的来讲面试官比较满意,和我说经过面试
平时看得最多的是多线程和JVM结果问的很少,很伤心hhh

三面 部门总监视频面:
三面的面试官级别是P9,技术很强,基本上每一个点都问到不会为止,面完觉得本身凉了就没关注校招的事情。
先仔细问项目,问到没法解释为止
三面面完也没有立刻记录,大体的知识点是这些,本人回答的比较马虎,部门总监确实很厉害,全程花了30多分钟,所有问分布式的知识
细问实习项目
消息中间件:消息丢失、一致性
redis缓存:watch
dubbo架构
zookeeper如何保证一致性
分布式理论:CAP、2PC、3PC等
最后问了一些大一大二作的项目
过了一遍计算机网络和操做系统都没用上很难受emmmm
四面 交叉面:
全程46分钟
三面过了大概快两周了,觉得本身凉告终果前几天早上9:30左右刚在工位还没坐热乎就打给我,一手措手不及,对方自我介绍是天猫的来进行一轮交叉面,我当时急忙找了个空位置开始面试。
首先自我介绍
介绍项目
平时项目有用到优化的地方吗 如何优化的
我回答了项目从写方面的优化(服务端对数据库乐观锁自旋等待、redis缓存对并发的抵挡,消息中间件进行异步)面试官又问我若是读取如何优化
而后高并发状况下如何处理(开放题,和二面差很少)
数据库主从复制、分库分表
分库分表后如何保证主键惟一性
Java容器是如何启动的
类加载过程
JVM字节码优化
实现面向切面有哪些方法 具体怎么实现的
进程间通讯的方法
三道算法题,左神书上的原题或变题,可是因为半年没刷左神的书很生疏了:1.用其余数据结构设计栈 2.实现栈getMax函数 3.递归和非递归中序遍历
因为当时太急没带笔和纸,面试官也很耐心引导,但最终也给出了解决方案
最后问了平时如何保证代码质量的
在实习期间出现过什么bug 怎么解决
五面 HR 视频面:
全程20多分钟,基本上在聊人生,面试官小哥哥也超nice,问了何时有结果,他说两周以内有offer的话会再通知~
自我介绍
项目的收获
项目遇到的难点如何解决
你实习的两家公司有什么优势与不足
为何春招没有投阿里
将来的职业规划
将来打算定居杭州吗

打个总结:
由于第一次据说测开这个岗位,以前也纠结要不要换岗位,不少人都以为测试开发好像很容易,以前也在意别人的见解,可是真正给你帮助的不是你认识的人倒是不少一块儿准备秋招而加的陌生人,也算是认清了一些现实。其实阿里的测试开发面试要求和开发是同样的,并且内部测开也不少种,而且今年整体校招hc每一个部门都在控制。实习作的是电商,投递BU也属于阿里电商核心,能接触到更普遍的业务,将来也颇有挑战。和TL以及主管们深刻了解以后更加坚决了个人想法,虽然岗位title是测试开发,作的内容也是纯技术,对双十一、618等活动提供保障,还有横向业务的支撑,有很高的并发和实际场景处理,对我的成长确实很高,并且才刚20出头还有不少机会去尝试,TL也一直很照顾重视我,相信是最好的安排。
另外给个建议:通常面试的问题是差很少的,可是每一个人能够更深刻的回答,这样比较加分,也更能和其余人区分开,也祝愿你们也能拿到合适的offer~