Zacard's Notes

阿里中间件6轮面试被砍的血泪总结

背景

年前在v2ex遇到阿里中间件的哥们,内推面试。从2018.02.01开始到今天2018.03.20,一场浩浩荡荡,跨年,持续了1个半月时间的残酷面试终于尘埃落定。遗憾的未能加入阿里中间件部门这个大家庭,让我深感痛惜。

最终未能如愿的原因是“名额有限,有更适合的同学”。这也可能是内推大哥为了顾及我的感受的说辞,可能是最后一面面的不好。

这里凭借隐约的记忆,总结下面试经过。让我自己引以为戒,奋发自强,继续前行

一面

主要问一些java基础。包括集合、多线程、ClassLoader、锁、juc类库等都要知道大致的原理、使用规范、约定

二面

根据项目,深入探讨。你需要清楚你所做项目的关键细节、优化、特点、原理。所用第三方库&中间件等的原理,即使不知道,也要有自己的想法能够说出如何代替实现!而且需要一定的技术知识的广度,对于如何选型,为何这么选型能够说出自己的理由

三面

个人感觉着重技术深度

从ConcurrentHashMap一路问到锁&锁优化->LongAdder->伪共享->缓存行填充->cas等诸多技术细节;

从hystrix一路问到原理->自己如何实现->如何优化->响应流编程(reactive streams);

从简单的生产者消费者模式设计到如何高效健壮实现;

等等。

四面

纯coding。

如何倒序输出单向链表?

个人直接想法是用栈先进后出的特点,把链表数据读到栈里然后输出。

有更好的实现方式吗?

仔细一想,确实不够优雅,还好之前刷过一阵子的leetcode,一般能用栈解决的都能用递归搞定。换了一种递归实现:

具体看本人的github传送门

五面

hr面,唯一一次现场面,一直以为是最后一面呢。

给大家抛出几大深坑问题:

  • 个人的职业规划是什么
  • 你遇到的最大问题或者是困难是什么
  • 你如何看待阿里
  • 你能为阿里带来什么
  • 你的优缺点是什么

这几个问题,大家深思啊,不多说。

六面

大概晚上20:00的时候接的电面。那会刚刚游泳游了大概2,300百米,然后又没有吃饭,肚子咕咕叫。忍着接听。

主要问项目情况,然后根据一个项目,问如果量级扩大1000倍,你会怎么做?有哪些优化措施?高性能&高可用措施?

后面有点饿的眩晕,不知道怎么结束的。。。

总结

感觉阿里更偏重扎实的基础和解决问题的创意与能力。个人感觉自己缺乏大并发、大流量下面对各种复杂问题的处理经验与解决方案,继续沉淀学习吧。

坚持原创技术分享,您的支持将鼓励我继续创作!

热评文章