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

2018-03-20 22:37:03 +08:00
 zacard

背景

年前在 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 倍,你会怎么做?有哪些优化措施?高性能&高可用措施?

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

总结

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

另外,烦请各位大神指点在下写的博客

29468 次点击
所在节点    职场话题
115 条回复
Socket
2018-03-20 22:40:58 +08:00
其他部门有兴趣吗?
pozhenzi998
2018-03-20 22:49:21 +08:00
能经过六轮面试,已经很厉害了
lyragosa
2018-03-20 23:03:43 +08:00
能过六面已经是非常厉害的了……
几乎是等同于副本打到最后关底 BOSS 才挂掉。
恭喜你打败了 99%的程序员!

我还在准备第一个 BOSS ……
aias
2018-03-20 23:06:25 +08:00
666
callmexiaobo
2018-03-20 23:49:43 +08:00
哇,这是哪个级别的啊,社招吧
q397064399
2018-03-20 23:52:03 +08:00
老铁 +1 就目前你的 知识领域,超过绝大部分普通 Java 开发工程师了
lwbjing
2018-03-20 23:54:16 +08:00
算不算是运气不好,如果 5 面就你一个人走到 BOSS 面前的话,可能 5 面就结束了吧...
pke
2018-03-21 00:05:11 +08:00
不错了 估计换个部门就能过了
feverzsj
2018-03-21 00:08:02 +08:00
这明显是刷 kpi
lance6716276
2018-03-21 00:11:43 +08:00
递归不就是用的 JVM 的栈吗…这不是更糟了…
0915240
2018-03-21 00:16:07 +08:00
博客写的蛮不错的 希望加一个 rss 我可以订阅下 :)
aheadlead
2018-03-21 00:26:25 +08:00
你就不能把链表倒过来再输出吗…

大不了输出完再倒回去
coffeSlider
2018-03-21 00:29:39 +08:00
@aheadlead

show me code
mentalidade
2018-03-21 00:37:55 +08:00
这个帖子要火。。。
watzds
2018-03-21 00:52:40 +08:00
以前校招三轮电话就没了😂,伤心
参加比赛去阿里中间件逛了逛
ouyangnandi
2018-03-21 00:57:40 +08:00
愿意来我们部门吗?你的水平绝对够了。。。中间件对技术要求太高。。
choulinlin
2018-03-21 01:12:44 +08:00
@aheadlead 最好弄成双向链表 倒过来干嘛 直接 while 到最末尾 再 while ( prev )输出完毕 你的指针指向链表头 这么简单的东西 还搞什么栈
cyspy
2018-03-21 01:27:40 +08:00
瑟瑟发抖。。。想换志愿了
yanjinbin
2018-03-21 01:29:10 +08:00
也没觉得有多难
bravecarrot
2018-03-21 01:40:41 +08:00
@choulinlin 是我没看懂吗..弄成双向链不更麻烦吗。递归直接
a { a ( root.next ); output ( root.val );}不就完了吗..

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/439890

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX