蚂蚁金服面试总结

上个月参加了蚂蚁金服的一面、二面感觉自身还存在很多问题,今天稍微总结下自身存在的不足,以便以后再接再厉。


某天早上在Boss上投了一份简历,中午就来了面试的电话。说是蚂蚁金服的面试官。
然后就开始了蚂蚁金服公司一面:

  • 项目中那些部分是觉得有挑战性的。会对你的回答进行提问。
  • 因为项目的原因我回答了有关最短路径搜索,就问了深搜、广搜、A*方面的算法
    • A*相对广搜有那些优势和你的实现方式
    • 怎么理解A*中局部最优和全局最优的关系
  • HTTP的流转流程和每一层做了什么操作,做了什么优化(面试的时候没有了解深入,后面疯狂复习了)
  • HTTP的缺点和优化方式
  • JVM的运行时的区域划分,每个区域有什么作用
    • 出现内存溢出的时候怎么进行排查?什么时候会出现方法区溢出?怎么进行排查?
    • 出现线程堵塞的时候怎么进行排查?
  • 项目中使用过那些设计模式?每个设计模式有什么优点在哪里用的比较多,结合项目或者源码分析一下。
  • 谈谈你最熟悉的开源代码
  • Dubbo、spring中令人印象深刻代码设计。dubbo大概可以分为几层?
  • 实现自定义注解需要那几个步骤,spring在自定义注解上做了哪些优化
  • 你们公司自己封装的自定义注解和springMVC有什么区别,缺点是什么
  • 如果让你设计一个并发任务管理系统,你会分为那几个部分,每个部分有什么作用。每个部分怎么进行协作
    • 选出一个模块讲讲你该怎么具体实现。
  • JDK的集合类了解多少?hashmap怎么解决hash冲突?
  • ConcurrentHashMap怎么实现并发
  • 对锁了解多少,分别讲讲是怎么实现的。
    • 公平锁和非公平锁的区别。独占锁和共享锁的区别和实现。
    • AQS的了解
  • 谈谈高并发的了解,可以分为哪几个方面的优化?
    • 限流使用什么算法限流?
    • 数据库层面使用什么方法?
    • 如果数据库分库分表怎么变别某条sql放在哪里
    • 扩容的时候处理新老数据
  • 有什么问题想问
    • 问:胜任这个工作需要有哪些技术,你们项目用了那些技术栈
    • 问:面试中自己身上有哪些不足
    • 问:能否请教下二面需要强化一下哪些知识

过了大半个月终于收到了二面的通知,是现场面试。
蚂蚁金服二面:

  • 请在和黑板上画一下你现在负责的项目的架构
    • 项目中有没有特别难或者你觉得很有挑战性的问题
  • 请写一下A*的原理和伪代码
  • 对java内存模型了解多少
    • 堆是怎么划分的
    • 新建一个大对象放到堆里的步骤是什么
    • 遇到内存溢出问题怎么排查和解决
    • 遇到栈溢出怎么解决
  • 你最熟悉的jdk源码是什么
    • 把200W个对象放到HashMap中应该注意哪些细节
    • 把一个对象从上面的集合中取出来要注意哪些细节
  • 请手写一个多线程求10W数据总和的伪代码

一面是电话面试,差不多进行了100分钟(内心是崩溃的),从面试内容(有部分内容忘记或者忽略了)中也可以看出一面是点出发,来考察面试者的知识广度和深度。问题也都是一些网上比较多的问题,其中比较考验能力的是让你设计一个并发监控系统比较灵活,需要从看过的系统或者书籍来类比出需要哪些模块和怎么实现这些模块。还好我看过dubbo的注册模块稍微讲了一下。

二面相对一面时间短,所以面试官都是直接提问你最熟悉的项目,算法,源码等方面。并会更具你的回答来进行提问或者出题,相对于一面最大的不同是较为灵活。如我回答最熟悉的jdk源码是hashMap时,面试官直接扔给我一个题目让我回答注意点,这样既可以考你对源码的了解程度,同时也看你对其中的注意点的概括和理解程度。

目前还没有收到二面的结果,感觉自己已经凉凉。

从两次面试中我也发现自己存在的问题:

  1. 没有出彩的项目经验(需要多思考目前项目的存在的问题和应该如何解决)
  2. 对使用过的算法没有深刻的了解,比如算法的性能,和其他算法的优缺点。以及如何在短时间内快速精确的去向别人描述一个算法(这个在两次面试中发挥的不是很好,不仅仅是算法,总体都可以概括为表达能力)
  3. 自己的知识广度已经差不多,但是很多时候没有去扣细节。多问问自己为什么要这样实现,如果自己实现要怎么实现,这样实现有什么好处等等来加强自己的深度
  4. 遇到问题还不够灵活

你可能感兴趣的:(----Java)