蚂蚁金服java架构师面试分享,阿里的offer真的不难,3位朋友所有offer

导读

这篇文章呢,整合了一下三位朋友面试阿里蚂蚁金服所有offer的经历,时间段分别是7月初,7月中旬,8月中旬。如下也是我整合起来的面试题,和面试经验,我但愿这些能帮到你们面试这些大厂能有所帮助,其实讲白了,面试经验只是一个借鉴,不能做为具体参考,但这些经验能从重考虑大体方向,接下来讲说下4面阿里面试(三面加HR面)java

一面

开头仍是先来自我介绍,完了面试官就开始发问,通常是40分钟到1个小时不等。不过值得注意的是,他们那边通常不直接回答对仍是错,最终发现呢,阿里的几轮面试,都是这样,他们通常只听,偶尔追问。程序员

首先确认对阿里的意向度;其次面试官会针对你曾经作过的项目来作具体技术的交流,你对项目细节是否是掌握到位,以及java技术基础和原理掌握程序,好比并发编程以及数据库和JVM三个方面,也会交流到分布式、线程池的实现等等(重点考察有没有深刻钻研技术和技术上的亮点);web

  1. 首先,针对岗位问一些专业性问题,所以你要把该岗位要求的专业技能基础看一遍。
  2. 而后,针对你的简历,问作过的一些具体的case,所以你要把本身写在简历上的case都复盘一遍,对本身作过的工做内容进行总结,好好分析不足点和须要进步的地方,而且梳理出本身的优点。(若是带上你之前工做的数据和做品等等,会加不少分)
  3. 再而后,问你对公司、行业的了解,所以你要在面试以前经过各类渠道尽量的了解公司的历史,业务、当前发展阶段和规划,了解行业的历史、远景和竞争对手。
  4. 再再而后,问你对该岗位的理解和职业规划,所以你要尽可能了解你的岗位,而且提早作好将来大体的职业和人生规划。
  5. 最后,就是瞎聊,他会跟你很随意的聊一些话题,来观察你的性格特质和待人接物,确保你能很好的融入他的团队。

不知道的直接说答不上来,就会继续一个题。面试

一面完了,叫你等消息,基本凉凉,不少公司,等消息基本就是没消息。正则表达式

二面

主管面:根据项目深刻的了解技术实力,了解你的知识面、问题解决能力以及技术灵活运用能力,也经过这一过程考察团队合做能力、学习主动性和创新性,能够挑选2-3个作过的有典型性的项目作一个仔细技术回顾和本身独到的理解(这是加分项,重要);redis

总结:算法

其实讲白了主管是你TL(直接领导)的上级,他对具体的业务并不了解,因此都是问一些基础,来帮TL把把关。基本上只要TL想要你,主管都是放行的。并且只要你能把上一轮面试的东西准备好,这一轮就没什么问题,只要你对人家表示尊重。spring

三面

高管复试,会涉及到相关的技术问题,大部分是对你的总体价值观作宏观的把控(好比上进心,责任心,心态,工做激情等);sql

整个过程要长一些,大约一个小时,完了还聊了一些我的及生活状况。数据库

总结:

整个技术面下来,感受好像面试有迹可循。

一面通常是基础问题。二面偏向于作的项目与框架。三面比较全面,都会问到。若是会聊天,现场面还会聊技术以外的一些东西。

顺便说一下,有开源项目或者技术博客,熟悉源码加分。

四面HR面

HR最终面,进入最后一面,通常这种状况反而有些紧张,一方面非技术类的问题是你们并不擅长的,再者应该你们早有耳闻阿里HRBP有"一票否决权"!因此仍是打起了十二分的精神认真对待,其实过程比想象中的顺畅不少,就是从大方向了解一下面试者的心态、抗压能力、将来规划以及对阿里的意向度(用阿里的话说,即价值观的匹配度);

总结

HR面: 这轮面试是薪酬福利面试,就是跟HR博弈,争取在该级别范围内拿到最高的薪水。这些就好商量了,(价值观匹配度达到过关什么都好说)整体的来讲HR面是最容易的。健谈的人通常都很容易。固然小瓜哥不是一个健谈的人,当时第一次是倒在第三面,第二次差点在HR面翻车,由于实在不健谈。哈哈。面试阿里第二次才拿到offer实在有些惭愧。

接下来是我总结的部分问的方向和问题,但愿对你们能有所帮助!

Java基础:

  1. hashmap结构;什么对象能作为key
  2. hashtable,concurrentHashMap,hashtable比较
  3. String,StringBuilder,StringBuffer
  4. 对象的深浅复制
  5. 一个十进制的数在内存中是怎么存的? Java支持的数据类型有哪些?什么是自动拆装箱? int 和 Integer 有什么区别 ? 何时使用int 何时使用Integer?
  6. ==比较的是什么?
  7. hashCode()和equals()方法有什么联系? 为何重写equals还要重写hashcode? Object若不重写hashCode()的话,hashCode()如何计算出来的?若对一个类不重写,它的equals()方法是如何比较的?
  8. 一个十进制的数在内存中是怎么存的?
  9. Java语言中float和double数据类型的精度是多少?它们在内存中是怎么存储的?和Decimal有什么区别?
  10. 为啥有时会出现4.0-3.6=0.40000001这种现象?
  11. 不借助四则运算如何实现加法
  12. char能够存汉字吗,底层怎么存的
  13. Java的字符集是什么
  14. 什么是值传递和引用传递?
  15. 数组(Array)和列表(ArrayList)有什么区别?何时应该使用Array而不是ArrayList?
  16. StringBuilder 和StringBuffer的区别 ? 底层实现上呢?
  17. String为何要设置成final类型?String是不变的吗?String为何不可变?怎么实现不变的?
  18. &和&&的区别?
  19. 在Java中,如何跳出当前的多重嵌套循环?
  20. 简述正则表达式及其用途。Java中是如何支持正则表达式操做的?
  21. 讲一讲Java里面的final关键字怎么用的?
  22. Java 8 如何实现的函数式编程?
  23. 如何保证方法的幂等性
  24. Java中的序列化的做用,serialVersionUID做用? 各类序列化器,序列化协议,为何这个序列化那么快

多线程:

  1. wait,sleep分别是谁的方法,区别
  2. countLatch的await方法是否安全,怎么改造
  3. 线程池参数,整个流程描述
  4. 背后的底层原理aqs,cas
  5. ThreadLocal原理,注意事项,参数传递
  6. 还有Java的锁,内置锁,显示锁,各类容器
  7. 及锁优化:锁消除,锁粗化,锁偏向,轻量级锁
  8. 多线程的好处
  9. 线程安全的定义? 如何保证线程安全?
  10. 多线程中的i++线程安全吗?为何?多个线程访问i++ , 怎样设计保证线程安全
  11. 建立线程有几种不一样的方式?你喜欢哪种?为何?Java中有几种方式启动一个线程?
  12. 原子类的底层原理?Atomic在高并发场景下有什么问题,缺点?
  13. CAS和ABA原理
  14. Jdk中哪里用到了cas? CAS check的字段是哪里,set到哪里去? cas有什么问题? jdk中是如何改进的? 若是不少个线程经过cas操做数据,如何提升效率?
  15. 如何线程安全的实现一个计数器?
  16. 请说出你所知道的线程同步的方法
  17. 线程数和内核数量的关系
  18. 线程中哪些是私有的?哪些是共享的
  19. 线程有多少状态,画出状态图,状态之间如何转换
  20. 同步方法和同步代码块的区别是什么?
  21. runnable和callable有什么区别?
  22. 为何 object的方法 notify 和wait方法必须在synchronized里使用?

web方面:

  1. servlet是否线程安全,如何改造
  2. session与cookie的区别,get和post区别,tcp3次握手,文件上传用post仍是get
  3. session的存储
  4. 如何防止表单重复提交
  5. 如何设置请求的编码以及响应内容的类型?
  6. Servlet相关接口 , Servlet里面有哪些方法 ? Servlet执行时通常实现哪几个方法?
  7. Servlet 3中的异步处理指的是什么?
  8. servlet生命周期?servlet是单例模式么?为何是单例?Servlet和cgi有什么区别?
  9. 服务器收到用户提交的表单数据,究竟是调用Servlet的doGet()仍是doPost()方法?
  10. servlet写过么,底层是怎么处理前台传来的请求的
  11. 是否单例,为何是单例。
  12. 如何在基于Java的Web项目中实现文件上传和下载?
  13. 缓存的优势?
  14. 说说MVC的各个部分都有那些技术来实现?如何实现?
  15. 什么是DAO模式?
  16. 请问Java Web开发的Model 1和Model 2分别指的是什么?
  17. 如何保存会话状态,有哪些方式、区别如何

jvm:

  1. jvm内存模型,
  2. jvm问题工具,jps,jinfo,jmap...
  3. String a=“a”;String b=“b”; 问"a" "b"等不等于a b
  4. Java中堆栈的区别。堆栈的增加方向有哪些不一样?
  5. jvm最大内存限制多少 ? 在一台16G内存的机器上,JVM默认内存空间多大?
  6. jvm是如何实现线程?
  7. 了解过字节码的编译过程吗
  8. eden区,survial区?
  9. 垃圾回收器的基本原理是什么?垃圾回收器能够立刻回收内存吗?有什么办法主动通知虚拟机进行垃圾回收?(垃圾回收)
  10. JVM回收算法和回收器,CMS采用哪一种回收算法,怎么解决内存碎片问题? 为何年轻代要用复制算法?并发标记阶段处理速度慢的缘由多是什么。怎么进行优化
  11. 阐述GC算法 , 那并发量很高时,使用哪一种算法?
  12. GC如何调优?
  13. 垃圾回收触发条件 ? 是须要回收就当即回收,仍是怎么办?一般哪些设为安全点?
  14. GC中如何判断对象须要被回收? 一个方法中有A a = new A();这么一条语句,方法执行完后A的实例化对象在GC时可否被回收掉
  15. GCRoot能够是哪些对象
  16. 何时会触发full gc? FullGC是否停顿用户线程?发生Full GC的时候,必定会发生stop the world吗?怎么避免full gc ? 频繁出现full gc应该如何排查?
  17. minor gc若是运行的很频繁,多是什么缘由引发的,minor gc若是运行的很慢,多是什么缘由引发的?
  18. 对象怎么分配内存,基于什么原则;
  19. 类加载过程 ? 初始化阶段是干什么的?
  20. 双亲委派模型的好处是什么?

数据库:

  1. 最重要的索性及底层实现
  2. 索性失效的场景
  3. 最左原则
  4. 查看执行计划
  5. 及carndiation
  6. 而后是锁的类型,行级表级
  7. 悲观乐观锁
  8. 解释数据库事物及特性
  9. 隔离级别
  10. 及实现,redo log .undo log
  11. bin log主从复制
  12. mvcc,Next-Key Lock
  13. delete truncate 区别
  14. SQL 中select…limit and offset 会有什么问题,怎么解决
  15. 一条SQL语句在MySQL中会通过怎样的过程
  16. 数据库两种引擎 InnoDB和MyISAM的区别?介绍一下何时用Innodb何时用MyISAM。
  17. 平时有查看过sql的执行计划吗
  18. 怎么去监控MySQL的性能问题?怎么查看一个sql语句的执行效率?

分布式:

  1. 问了CAP,跟base
  2. zookeeper知足了CAP的哪些特性,paxos
  3. 缓存穿透怎么解决
  4. redis的io模型
  5. 若是保证redis高可用
  6. redis是单线程仍是多线程
  7. 线上cpu占比太高怎么排查
  8. 一致性hash
  9. 分库分表
  10. 怎么热拷贝,给一个思路,好比一个ES集群在创建索引,咱们怎么样在它还在持续创建索引的状况下,将当时的状态给dump下来
  11. 若是缓存雪崩,大量请求直接打到数据库怎么办?
  12. 服务限流,服务隔离。
  13. 当库存预加载之后,库存再次发生变化该如何解决?
  14. 实现限流怎么实现?若让你设计一个限流器,你会怎么设计(令牌桶算法的思路)
  15. 2PC 和 3PC
  16. raft协议介绍,raft的日志须要有什么特色 , 网络分区怎么解决,raft一致性如何实现

spring:

  1. ioc,aop原理
  2. ioc初始化流程
  3. springmvc的流程
  4. springboot,spring cloud相关组件
  5. 介绍一下bean的生命周期
  6. Spring里面注解用过没有?autowired 和resource区别?
  7. Spring中BeanFactory和ApplicationContext的区别?
  8. 请问Spring中Bean的做用域有哪些?
  9. Spring加载Bean的过程? Spring框架xml文件中配置bean的实例化过程?了解Spring是怎么递归地加载Bean的吗?BeanFactory和FactoryBean有什么区别?
  10. Spring getBean的整个流程
  11. 谈谈Spring中自动装配的方式有哪些?
  12. 说一下IOC和AOP? DI的方式有几种?哪几种?
  13. spring怎么解决循环引用的问题,好比,A对象构造时须要B对象;B对象构造时须要A对象
  14. springIOC原理?说说Ioc容器的加载过程Spring IOC底层存储结构 ? 本身实现IOC要怎么作,哪些步骤?
  15. aop的应用场景?
  16. AOP的原理是什么? 除了动态代理还有什么?
  17. 拦截器和AOP的关系 Spring拦截器的底层是怎么实现的

项目

友情提醒一下,对于作过的项目,最好梳理清理,可能会叫你画各类图。

总结

能问的基本就是这几个大体方向,若是你方面掌握的很不错了,同时又是个很健谈的人,我相信阿里面试对你而言也就是日常遇到BUG征服了就行了。

不过阿里的确是程序员的金字塔呀,在这种地方,你会以为本身真的如此眇小,之前引以自豪的能力,在这里面一切都像新手同样,什么 写个框架无压力的人不少,随意修改JVM无压力,数据库也是。不过也是学习圣地,毫无疑问!

健谈是一个很实用的技能,可能在你实力并无理想那种那种水平,能帮你得到更好的资源。一个会说话的人和一个不会说话的人,最终的高度绝对不会是同样的(有实力的状况),若是实力和健谈你都有,就是一个闪闪发光的金子。在哪,都有你的一席之地。

再多提一句,最近网上流传BAT等一线互联网公司不招人了,没错这是谣言。

我也整理了如下资料给各位朋友喜欢能够帮到你们




最后

还有更多的面试题我都是整理在一块儿了,我但愿我把这些问题,资料、面试题都分享给你们。让你们能多多提高本身,欢迎作Java的程序员朋友们关注个人公众号“java小瓜哥的分享平台”发送“资料”!免费分享这些资料。其中覆盖了互联网的方方面面,期间碰到各类产品各类场景下的各类问题,但愿能够帮助你们扩展本身的技术广度和知识面。谢谢。!