年前在 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 倍,你会怎么做?有哪些优化措施?高性能&高可用措施?
后面有点饿的眩晕,不知道怎么结束的。。。
感觉阿里更偏重扎实的基础和解决问题的创意与能力。个人感觉自己缺乏大并发、大流量下面对各种复杂问题的处理经验与解决方案,继续沉淀学习吧。
另外,烦请各位大神指点在下写的博客
1 Socket 2018-03-20 22:40:58 +08:00 ![]() 其他部门有兴趣吗? |
![]() | 2 pozhenzi998 2018-03-20 22:49:21 +08:00 via Android ![]() 能经过六轮面试,已经很厉害了 |
![]() | 3 lyragosa 2018-03-20 23:03:43 +08:00 能过六面已经是非常厉害的了…… 几乎是等同于副本打到最后关底 BOSS 才挂掉。 恭喜你打败了 99%的程序员! 我还在准备第一个 BOSS …… |
![]() | 4 aias 2018-03-20 23:06:25 +08:00 via iPhone 666 |
![]() | 5 callmexiaobo 2018-03-20 23:49:43 +08:00 via Android 哇,这是哪个级别的啊,社招吧 |
![]() | 6 q397064399 2018-03-20 23:52:03 +08:00 老铁 +1 就目前你的 知识领域,超过绝大部分普通 Java 开发工程师了 |
![]() | 7 lwbjing 2018-03-20 23:54:16 +08:00 ![]() 算不算是运气不好,如果 5 面就你一个人走到 BOSS 面前的话,可能 5 面就结束了吧... |
![]() | 8 pke 2018-03-21 00:05:11 +08:00 不错了 估计换个部门就能过了 |
9 feverzsj 2018-03-21 00:08:02 +08:00 ![]() 这明显是刷 kpi |
10 lance6716276 2018-03-21 00:11:43 +08:00 via Android ![]() 递归不就是用的 JVM 的栈吗…这不是更糟了… |
![]() | 11 0915240 2018-03-21 00:16:07 +08:00 博客写的蛮不错的 希望加一个 rss 我可以订阅下 :) |
![]() | 12 aheadlead 2018-03-21 00:26:25 +08:00 你就不能把链表倒过来再输出吗… 大不了输出完再倒回去 |
![]() | 13 coffeSlider 2018-03-21 00:29:39 +08:00 via Android |
![]() | 14 mentalidade 2018-03-21 00:37:55 +08:00 这个帖子要火。。。 |
![]() | 15 watzds 2018-03-21 00:52:40 +08:00 via Android 以前校招三轮电话就没了,伤心 参加比赛去阿里中间件逛了逛 |
![]() | 16 ouyangnandi 2018-03-21 00:57:40 +08:00 愿意来我们部门吗?你的水平绝对够了。。。中间件对技术要求太高。。 |
17 choulinlin 2018-03-21 01:12:44 +08:00 via Android @aheadlead 最好弄成双向链表 倒过来干嘛 直接 while 到最末尾 再 while ( prev )输出完毕 你的指针指向链表头 这么简单的东西 还搞什么栈 |
18 cyspy 2018-03-21 01:27:40 +08:00 via Android 瑟瑟发抖。。。想换志愿了 |
![]() | 19 yanjinbin 2018-03-21 01:29:10 +08:00 via iPhone ![]() 也没觉得有多难 |
![]() | 20 bravecarrot 2018-03-21 01:40:41 +08:00 via iPhone @choulinlin 是我没看懂吗..弄成双向链不更麻烦吗。递归直接 a { a ( root.next ); output ( root.val );}不就完了吗.. |
![]() | 21 bravecarrot 2018-03-21 01:41:03 +08:00 via iPhone ![]() 楼主很强 |
22 v2orz 2018-03-21 04:01:53 +08:00 这是面的 P 几啊 |
23 songdezu 2018-03-21 04:40:24 +08:00 哪个部门啊 这么刁难人 |
![]() | 24 hlwjia PRO 可以了,拿着这个可以去刷其他公司面试了 哈哈哈哈哈 |
25 TimCheng 2018-03-21 07:23:58 +08:00 via iPhone 希望你把这篇文章发到掘金专栏啊,我门在做春招面试的有奖征文活动。了解一下? https://juejin.im/entry/5aaf2e9f51882555677e5a07 |
![]() | 26 bengol 2018-03-21 07:51:24 +08:00 1000 倍与无限扩展有什么区别? |
![]() | 27 xhinliang 2018-03-21 08:02:19 +08:00 via iPhone 楼主可以试一下快手~xhinliang#gmail |
![]() | 28 xiaoyukid 2018-03-21 08:25:18 +08:00 楼主可以的半年后再战 |
![]() | 29 shallyy 2018-03-21 09:02:15 +08:00 via Android 厉害了 |
![]() | 30 cyril4free 2018-03-21 09:08:08 +08:00 作为技术被楼主甩好几条街的人.....看来不用想阿里了.. |
![]() | 31 xxm459259 2018-03-21 09:21:28 +08:00 毕竟中间件团队…… |
32 leeg810312 2018-03-21 09:25:42 +08:00 via Android 基础、广度、深度,还有想象中的案例,这是面试技术总监吗?年薪百万? |
33 woodface2233 2018-03-21 09:29:11 +08:00 via iPhone 这个是问的 p8 以上? hr 的问题那种很明显就是坑啊,怎么回答都是给自己下套 |
34 woodface2233 2018-03-21 09:30:31 +08:00 via iPhone 如果只是去做个 p6 就不要去了 |
![]() | 35 whypool 2018-03-21 09:39:02 +08:00 到 6 面很厉害了 |
![]() | 36 romanroad6 2018-03-21 09:46:51 +08:00 萌新请教各位大佬,达到楼主这样的水平有什么学习路线吗? |
38 zacard OP @lance6716276 没有更糟,理论上空间复杂度是一样的,但是递归更简洁易懂 |
39 iceheart 2018-03-21 09:49:34 +08:00 via Android 反转链表的时间复杂度是 O(2n),空间复杂度是 O(1).用栈,时间复杂度仍然是 O(2n),空间复杂度是 O(n) |
41 zacard OP @woodface2233 面的 p6/p7 岗 |
42 andev 2018-03-21 09:54:59 +08:00 来讨论下 HR 那几个问题怎么答,感觉怎么答都不好 |
![]() | 43 coffeSlider 2018-03-21 09:55:29 +08:00 via Android |
![]() | 44 coffeSlider 2018-03-21 09:57:42 +08:00 via Android @iceheart 看错了,以为你说的是递归了 |
![]() | 45 nl101531 2018-03-21 09:58:22 +08:00 答主的博客怎么不提供一个 rss 订阅啊 |
46 KgM4gLtF0shViDH3 2018-03-21 10:04:02 +08:00 难得的面试分享诶 |
![]() | 47 sunysen 2018-03-21 10:07:04 +08:00 楼主是否有意向加入比特大陆呢,我的微信 love16898 |
![]() | 48 callmexiaobo 2018-03-21 10:07:05 +08:00 via Android |
49 nycbdwss 2018-03-21 10:08:42 +08:00 真的难我去 去年才毕业的感觉这辈子都进不了阿里了把 |
![]() | 50 callmexiaobo 2018-03-21 10:08:59 +08:00 via Android |
![]() | 51 amon 2018-03-21 10:10:45 +08:00 到 6 面很厉害了,ne 的头像兽王的 id,刚他。 |
52 jjianwen68 2018-03-21 10:13:41 +08:00 听起来很牛逼了,阿里的 p6/p7,这个水平还不够吗 |
![]() | 54 Xrong 2018-03-21 10:16:47 +08:00 ![]() PHP 低端码农,暗暗路过。。。 |
![]() | 55 YouXia 2018-03-21 10:21:37 +08:00 没有交叉面,应该面的是 P6 吧。阿里系统相关岗位面试都比较难,可以看看某人面阿里 C++系统岗位的题目:  |
![]() | 56 aheadlead 2018-03-21 10:24:31 +08:00 @coffeSlider O(N) 和 O(2N) 差别不大吧 |
57 studyJ 2018-03-21 10:29:44 +08:00 感觉就像打通关一样 |
![]() | 58 crossoverJie 2018-03-21 10:31:56 +08:00 原来我不是一个人,也是年前面到年后。 流程差不多,三轮技术面,两轮 coding。 最后跪在了 HR,择日再战吧。 |
59 alangz 2018-03-21 10:33:26 +08:00 都是对技术深度和广度的考察,以及问题的解决能力 |
![]() | 62 fcoolish 2018-03-21 11:21:26 +08:00 楼主社招几年的? |
64 richardhit 2018-03-21 11:42:39 +08:00 ![]() 说实话,感觉很多内部的人出去,再想面试进来,也是蛮难的。真是尴尬。 |
65 miki6180 2018-03-21 11:44:50 +08:00 瑟瑟发抖 |
![]() | 66 coalo 2018-03-21 11:50:56 +08:00 下周一去阿里前端一面瑟瑟发抖地飘过。。。 |
![]() | 68 AlibabaSS 2018-03-21 12:23:18 +08:00 欢迎这周六来阿里调度&容器技术沙龙,系统软件事业部的同学们欢迎大家~ http://sc-meetup.wixsite.com/scmeetup |
69 TimCheng 2018-03-21 12:28:01 +08:00 via iPhone @callmexiaobo #50 整理一下发出来吧,让更多开发者看到。 |
![]() | 70 joeke 2018-03-21 12:32:05 +08:00 阿里那么恐怖的吗 六面!!!! |
71 lance6716276 2018-03-21 12:49:32 +08:00 via Android @zacard 我没太看过 JVM,但是递归的话 JVM 也要额外保存上下文吧,存储的东西更冗余了。JVM 的栈深度总比你自己申请一个要浅吧,这在 C 系里面不是常识吗 |
![]() | 72 winglight2016 2018-03-21 12:59:19 +08:00 @bengol 1000 倍,简单点水平扩展 1000 倍的服务器就可以解决,无限和这个没法比 |
![]() | 73 TheOutgoing 2018-03-21 13:29:20 +08:00 楼主工作几年了?面这么多轮不是能力不匹配的问题,都是其他因素决定的。 |
74 arsgm 2018-03-21 13:49:47 +08:00 请教一下楼主,这些知识都是日常工作积累吗?感觉好多都接触不到,平时怎么积累这些方面的知识呢? |
75 liuguicen 2018-03-21 13:50:28 +08:00 这个栈的题真不咋样啊,反转链表感觉好很多 |
![]() | 76 fyooo 2018-03-21 14:08:04 +08:00 Orz |
![]() | 77 fxxkgw 2018-03-21 14:31:14 +08:00 ![]() 这个一面有点搞笑啊,社招会专门问这些么?不应该是掺杂着顺道提一下么? 阿里的面试其实也就那样,我身边从 P6 到 P8 都有过去的,但我个人并不觉得他们怎么厉害,只要你在工作中实际参与过一些稍微复杂、高大上的项目,面试时候基本都过得去,剩下的就是看面试官情况了,有些人角度刁钻,逮着你三年前的项目一个劲问,有些阿里面试官喜欢显摆算法,一言不合就一堆算法抛过来。 记得在知乎看过一个问题:哪些事情是你当了领导才知道的?有个回答是:作为面试官,真的会很紧张。 社招一面、二面这些面试官,可能他们跳槽时候换成了你面试他们,所以他们只能逮着你简历里他熟悉的东西一个劲的问,假如你当时只是浅尝辄止,那可能就悲剧,如果你真的很深入,那恭喜你。。 所以综上,面试有时候真的需要运气。 |
![]() | 78 MasterC 2018-03-21 14:55:27 +08:00 我一般面试别人 都是对着简历上做过的项目问,基本的算法数据结构掌握即可,复杂一点的我自己都没法深刻掌握,毕竟平时都是搞业务。希望我再出去的时候也能遇到个“懂事”的面试官吧 ![]() |
79 luohuanlhh 2018-03-21 15:18:14 +08:00 战略性 mark |
![]() | 80 fcten 2018-03-21 15:26:06 +08:00 倒序单向链表用递归或者栈那是学生写作业的写法…… |
81 phieo2018 2018-03-21 15:33:28 +08:00 兄弟 蚂蚁金服开放平台技术部 java 岗位了解一下? |
![]() | 82 ldd882008 2018-03-21 16:01:13 +08:00 via iPhone mark,老哥已经很牛逼了 |
![]() | 83 ldd882008 2018-03-21 16:03:03 +08:00 via iPhone 萌新路过、谢谢大佬分享 |
![]() | 84 ucaime 2018-03-21 16:04:54 +08:00 兄弟 信息平台的岗位了解一下? |
85 hnpyhyz 2018-03-21 16:10:22 +08:00 via iPhone lz 这是 P 几啊,看得瑟瑟发抖 |
![]() | 86 fish267 2018-03-21 16:10:42 +08:00 兄弟, 蚂蚁金服网商银行技术部 java 岗位了解一下? |
![]() | 87 SoulSleep 2018-03-21 16:30:27 +08:00 这面试,估计也就能撑到三面 |
88 miketeam 2018-03-21 16:45:31 +08:00 via iPhone 阿里是要找神仙啊!刚才看到新闻阿里 22 岁少年吐槽加班文化。真不知道技术这么牛的人都这么想不开要去体验加班生活 |
89 rebill 2018-03-21 17:04:08 +08:00 厉害,我都是止步在一面。 |
90 choulinlin 2018-03-21 17:15:11 +08:00 via Android @YouXia 这样的岗位年薪多少呢 |
91 choulinlin 2018-03-21 17:17:04 +08:00 via Android @fcten 你有什么高见 |
![]() | 92 xwhxbg 2018-03-21 17:19:11 +08:00 大佬,阿里这要求确实有点高啊,我面的蚂蚁中间件,二面就挂了,没看到后面居然还有这么多的要求 |
![]() | 93 YouXia 2018-03-21 17:35:30 +08:00 @choulinlin 啥都算上,40-100,都有可能。这个面试,也可能 P6+,也可能 P7。现在面试能去阿里的,去其他公司短期内可以获得更大的收益,但是还是很多人会选择阿里,原因比较多,一方面大家都想去核心部门,去见识更牛逼的程序员,第二就是现在互联网已经在走下坡路,已陆续出现裁员的公司,早回大厂早占坑,大厂干的好有股票激励,其实长远看收入并不低。 |
![]() | 94 TZ 2018-03-21 18:14:04 +08:00 六面,好恐怖啊 |
95 zzh992 2018-03-21 19:10:32 +08:00 先 Mark 在膜拜 |
96 conn4575 2018-03-21 19:14:56 +08:00 via Android 这么恐怖吗我感觉我一面都过不了… |
![]() | 97 aprilfool001 2018-03-21 19:55:23 +08:00 兄弟, 杭州 蚂蚁金服 客户平台 是否考虑一下? |
![]() | 98 ashitaka 2018-03-21 20:06:01 +08:00 看了下面试过程 觉得 lz 还是很厉害的 中间件要求的确是高 lz 有兴趣阿里其他的岗位 可以联系我 我这边提供妈妈的职位内推 广告相关的 |
99 Soula 2018-03-21 20:22:49 +08:00 其实用栈还是递归用系统栈还是改成双链表都没啥区别,递归也就优雅点。。 要我的话就 while loop 反转单链表再输出得了。。 |