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