13面阿里的翻车之路

最近几个月经历了“多场“阿里面试,从充满期待到”心无杂念“,可谓是“一波N折”,可惜最终还是没能拿到offer。所以有了这篇博客。

首先说下整体的经历,然后才是具体的面试题目分享(PS:没听说过不能分享)。整体上来说,阿里的面试
(技术)分为4轮技术面+1轮笔试+1轮hr+Offer审批。整体流程几乎都是这样的,当然可能因为我是面的低端岗位,其他的概不了解。技术面相对中规中矩,不会太要求你做过多高并发用过某个什么组件之类的,但是对基础和大局观是有较高要求的,且部门之间差异较大。

## 部门A
这个部门由于在我所在的城市有研发团队并且方向也刚好是我最想做的方向,所以在19年底就通过内推的方式投递了,在年前(大概12月份)面过一轮然后就开始了春节和接着的疫情,直到2月份的某天突然收到电话说是某某部门的面试官,然后我之前的超时了被其他部门抢了简历所以直接走线下的流程,然后就直接开始了面试。过后又通过”邮件”的方式给我发了笔试题目让12小时内回复。

由于正是疫情严重的时候,所以整个流程还是显得非常灵活的,包括面试时间和形式上的安排。过年嘛,当然是在家各种长肉突然来了个面试自然非常不适应,赶快去复习了下Java的基础啊啥的。然后就是正常走流程。其中,一到三面都还是比较快,貌似两周内完了,过程不细表,技术问题几乎占8层,后面列出来。

比较有难度的是四面,不知道为啥是P9,他自我介绍的时候我脑子的第一印象就是”NB”,因为他所负责的业务线我们几乎天天用到。全程的关注点就非常不一样:

  1. 自己技术栈的优劣势,举例说明
  2. 博客的情况(竟然还看了,弱鸡表示震惊)
  3. 技术实践(因为一直在小厂),技术视野如何扩展
  4. 公司里承担职责,问题,解决方案
  5. 业务的核心领域、该行业内的趋势、技术上的抉择或者考量
  6. 最近一次绩效评估

这些问题对于我们做纯技术的人来多少还是很陌生的,不过我和另外行业(策划)的吐槽的时候他们表示正常
操作,所以说这块真的是每一个做技术的应该特别特别关注的, 也就是说,在做业务的时候要更多的从一个Owner的角度思考是什么为什么在什么背景下怎么做的这些事情,如果说只是一个纯粹的执行者的话是肯定走不远的。这块这里不多说。

然后就到了hr面。 时间是约在中午13.30,我的习惯是中午会午睡,再加上疫情和家里的问题那天13点才吃饭,正是犯困的时候。然后稍微收拾了下就打开了面试地址想着提前去熟悉下,结果hrg小姐姐已经在了。形象是没有披头散发=_=。

坦白说,当时见到的第一面就感觉多半要栽了。hrg非常仔细的询问了工作细节,大概可以总结为“做什么为什么优缺点是什么背景是什么技术是什么”。需要注意的是,阿里的hrg会问技术,并且还会刨根问底,然后还会有某种程度上的压力面。
这方面我毫无准备并且本身对前面2份工作就缺乏思考和回忆,可以说回答的非常不好,中间还穿插着问了下去年投递阿里为什么只到一面之类的问题。

下来之后,我立马通过邮件转发了段自己关于自己最近一段工作经历的思考、对这个部门的思考和一些想法,希望借此可以挽回一二。无果。 然后就在hrg这个大BOSS处凉凉。

部门B

上面这个部门A挂了之后,关键还是在hrg这里,对我造成了非常大的心理阴影,所以想着休息下再面,等等其他机会。
中间也有其他部门的电话联系过我,我基本就直接拒绝了。因为阿里内部是可以订阅候选人情况的,你这边简历一释放其他人就立即可以收到,然后简历就被这个部门锁定无法投递其他部门了,关键是,这个“捞人”的过程无法阻止。一度让我想起了家门口拉食客的饭店老板,哈哈。
某天依然是某个部门的,再我已经反复拒绝说想再准备下的情况下还是再推荐(PS:招聘压力好大==),然后就想着加下微信先了解下情况,结果微信里我还并没有说准备面就已经给我开始流程了。得了,那就来吧,毕竟又是一笔面试记录了。
由于我这边技术其实该回忆的都回忆了,所以这里还是通过了前面3轮技术走到了第4轮。其中,值得一提的是,某一轮面试由于我的项目经验面试官不熟悉也不感兴趣,在进入到最后的问我有什么想问的环节的时候,我又主动的说了下自己的技术优势、团队作用之类的,强行“尬聊”了十几分钟挽救了这场面试。
这里的四面则主要问了这些:

  • 跳槽频繁原因
  • 最成功的项目,业务场景和解决方案,技术栈
  • 项目的业务侧核心抓哪些指标
  • 公司商业模式是什么/规模
    PS: 这里明显感到面试官不太感兴趣了,因为渣渣小公司,项目没难度Q_Q
  • 系统竞争力在哪里,亮点在哪里
  • 组件、容器花的几个简单问题
  • 平时除了支撑研发以外,思考的创新的推动业务的idea,落地的?
  • 平时的学习方式、看的论坛等

然后面试官给我的反馈是,缺乏大数据量、高并发的经验,接触的领域比较简单,抽象程度不够,还有思考不够=_=。

,并且无fuck说

部门C

上面说过,我有另外一个想去的部门,结果一直没有投递到简历,在部门B面试走到四轮的时候那边我也在线下走到了三轮,最终还是考虑到部门A的hrg说过稳定性的问题选择没有切换到这个心仪部门的流程,结果却还是折戟。
时常在想,如果当时果断切换了会不会不一样。

没有如果了–

然后这个部门的p9大佬因为我连续挂过两次阿里不予面试了,遗憾的没机会继续走流程。 到这个时间,其实真的心态已经几乎炸裂,可能说,自己过去几年的工作经历,的确是会造成这样一个后果并且平时摸鱼的也还是非常多,无可奈何吧。 看看其他机会,所以又断断续续面了一些其他的公司,这里也不展开了。这个时候已经是3月中下旬了。
由于还是处于疫情期间,且公司也没有复工。所以依然是浑浑噩噩的刷题游戏之类的,期间简历也被多个部门捞过,但无一例外都没有给予面试机会,我也不想再面阿里了。
当然,故事并没有这么简单的就结束了!
四月下旬的时候,阿里巴巴业务平台某团队的电话来了,最开始的时候我就很认真的说,已经连续挂过多次,可能真的不匹配阿里也不想再面了,然后又是和部门B的推荐人一样的话语:“我看了你前面的面试记录,觉得还可以。再试试的话很有机会,并且我们hc不限量。并且说你能满足我们的要求,之前挂过都没关系,不同团队要求不一样”
我又心动了。想着,可能是最后一次了。

第一轮全程没有涉及到任何技术点,几乎都是针对现有的场景或者他提出的某个场景设计架构,问题、改进等等。高并发/大数据量/安全/性能/伸缩性等等各方面都会涉及,针对分布式系统也问了下一致性协议及其差异等等。当时就感觉凉了--
结果没有,我非常奇怪。然后又是正常走流程:笔试/二面/三面/四面。由于这个部门是属于阿里的“大中台,小前台”战略里一个较为重要的部门,在技术上对于“抽象能力”要求略高,所以期间我很认真的复盘了我之前的项目,特别对于其中的架构设计、模块划分、演技和分布式系统等方面。并且,每次面试,至少提前2天准备,在面试的时候又提前1-2小时准备好自己这边的环境,同时也包括调整心情等等。 可以说,这4轮面试几乎都是个人的状态最佳的时机。
有惊无险的到了hrg,我按照之前的套路好好准备了下(都是自己真实做过的事情,但是需要时间回忆和总结)。结果这位hrg的套路又是完全不一样:完全没有第一位那样穷追不舍的问项目细节,反倒是对于职业选择、学习方式、工作情况等等进行了一番了解,其中还问了下关于最为钦佩的领导这个问题。这些问题看似非常简单,却又能非常直观的反应你这个人的很多东西,与阿里的《皮实、乐观、聪明、自省》的价值观要求是否一致。
这一轮我整体非常放松,这个时候其实对于阿里本身已经没有多大执念,能去则去,不能去可能也真的就是不太适合,所以反倒是心态最为良好,对于hrg的所有问题基本都是“随心回答”-也就是不加任何装饰的,有一说一。过后整体感觉还OK。
在向之前电话并且内推我的人询问结果的时候,非常意外的是,收到了“我们会尽快推动”这个答复。因为在我们面试之前收到的信息是“hc不限量”,所以这种回复我就觉得隐隐有些担心。
果不其然的,3个工作日过后依然没消息,我再次追问说这边招聘被暂停我是最后一个面试的,然后他们部门这边也在不停的推动,但是集团收缩了整体编制,让我耐心等待。“双非本科,5年小厂经验”-其实就已经比较明了。
12个工作日后收到凉凉信息。

## 面试题
首先说下面试题其实现在都是越来越泛滥,在没有相应的实际使用经验下大家的理解可能相差不打,所以对于这些题目的”生硬”性质的考察是明显减少的趋势,特别是在二面及以后。所以说,项目上才是真正需要准备的,下面所列出的技术点仅仅是基础,切勿舍本逐末。功夫在日常

基础

  • 线程池
  • 基础数据结构(二叉树(B/B+/R-B tree)、数组、链表)的时间、空间复杂度及常见实现(必须熟悉Java里对应实现,但也要充分意识到他们不是Java独有的东西)
  • 类加载机制、原因(双亲委托)
  • JUC,有哪些类,具体实现方式,使用区别以及延伸进去的AQS
  • IO模型,阻塞非阻塞(最好能对OS到JVM到Java有一个整体印象). BIO->NIO->NIO2
  • 设计模式,要有具体的例子

    框架及工具

  • Dubbo,整体架构、SPI、网络模型、序列化、服务治理
  • Netty, 网络模型、领拷贝
  • Redis, 网络模型,数据结构类型及其实现原理。Redis集群原理及常见问题(比如让你来设计,你会怎么设计)
  • Spring, AOP实现机制,事务传播。Spring->SpringBoot->Spring Cloud,核心概念,以及SpringCloud与Dubbo的异同.
  • MySQL, InnoDB索引, 几种不同锁类型及其实现细节,事务隔离级别实现。

    系统设计

  • 海量设备保持连接网络设计
  • 转账系统设计(考虑大数据量、高并发、幂等、扩展性)
  • 分库分表(原理及常见方案,如果你来设计这个中间件?)
  • 灰度测试逻辑设计
  • 支付系统风控设计

题目类型大概是上述的,列出来可以说是非常少,但需要注意的是,每一个问题都只是一个“点”,通常有经验的面试官会在这个的基础上逐渐深入,所以本质上来讲是无法通过准备来通过面试的,只有平时在工作中就真正注意实现细节才能在这个时候游刃有余,这也是面试的本意。而在架构设计上,任何一个技术选型我们都可以用STAR原则来分析,平时多思考、多看书(真正的历经时间考验的书)、少看公众号才是真正的积累方式。