记一次阿里面试

2018-04-04

Once-An-Ali-Interview-Record

本来也不想去的,BAT压榨人压榨的厉害,当然可能有些人是说我吃不到葡萄说葡萄酸,你要这样想也行。
是在拉钩上面投递的蚂蚁金服的高级开发岗位,

首先会收到一封邮件说简历通过筛选,然后邮件里面
还有各种Congratulations,感觉还是很有国际大公司范儿的。

过了几天后,会有HR打电话,然后问你最近哪些时间方便,会有面试官电话面试。

一面

接下来就是电话技术面试第一面了,我是在晚上到家,快10点接到电话的,本来预约是9点,
后来面试官也问了是否要改天,我说你们忙,就不浪费时间了,今天把。

然后就是问做了那些项目,然后项目中涉及到的一些知识点,什么分布式事务,消息幂等性,ThreadLocal,
多线程,分布式锁,Kafka的消息保证顺序性,不丢失,IO等。
反正都是一些很常见的问题,你只要接触过上面的东西,然后理解深刻一点,用自己的话回答出来,一般没撒问题。

只是我在这个过程中,一来信号不好,而来家里太吵,三来面试官说幂等性,一直没说清楚,导致答的不是很好,
自我感觉没完全发挥出来,有点勉强,过不过,感觉不好说。

不过好在面试官感觉是一个非常Nice的人,答的不太清楚的题目会给点播一下,然后也很耐心,对他们那边的工作
也会介绍,而且在忙碌一天之后还能这种态度来面试一个人,给人感觉非常的好。

切记,第一面可能直接上来就问项目,也可能问基础,要做好准备。

二面

然后,第二面是很久很久之后,我都快忘记这件事了,然后有个HR给我说,有杭州的技术负责人飞来深圳统一面试,
问我周六有没时间过去面试,我说没什么问题啊。然后这段时间一直忙着找工作,准备的也非常充分。

技术的第二面,问的非常全面,但是不很深入,然后也让我在黑板上画了之前公司项目的架构图,然后提出了一些问题,
比如:为什么不这样设计,不是更加简单吗?你们系统如果有性能瓶颈,如何解决?有线上集群故障恢复的经验吗?等等。
我就将自己对整个系统架构的理解给他说了,然后说那些地方可以简化,那些可以重新设计,那些有更好的方案等等。
然后集群故障恢复,我就说了Kafka集群的问题,说了自己的解决思路和查找问题的方式等等。

数据库方面还是主要问索引,B+Tree的时间复杂度,大概原理,索引主要弄清楚最左前缀匹配和符合索引等情况。
也问了幂等性消息的设计,分布式锁,分布式事务等等,差不多是常见的面试题都问道了吧。
但是问的过程中,是一步步过来,不会东一忙头,西一棒催的问,所以整体还是比较顺畅的,主要还是自己准备充分吧。

那个面试官问我还有什么问题吗?这个环节非常重要,一来可以让面试官指出你的不足,而来可以了解公司项目,三来,
可以给面试官透漏关于你个人更多的信息和性格倾向等等。会对你拿offer有很大影响。

HR面

因为终面技术官还在面其他人,所以一面技术官让我先面HR。我个人觉得这个HR还是很不错的,至少比平安银行的强。
问了一些职业规划,平时的工作,学习习惯之类的。然后其中主要是围绕加班,工作和创业谈了点。
这个HR直接和我说他们这边外部谣传996,其实是995,只是平时有可能项目赶的情况下,会加班到凌晨。
然后之所以加班到这么晚,是因为大家都是为了将手上的工作做好,采取认真负责的态度。这点我还是很认同的,
不过我认为加班到凌晨这么晚还是有些问题,不是工期赶就是会议多。然后问我对加班怎么看?
本来我想直说的,但是吸取上次的教训,勉强承认为了项目,临时性,工期性的加班是可以接受的。

后面还谈了些关于创业和工作的看法,主要是我表明过来直接是为了镀金,工作不是我长久的想法。
HR对此表示很赞同,还说了之前面过很多创业失败的面试者,我当时就感觉有点不舒服。
HR面完之后,终面技术官还没面完,让我出去自由活动,等下电话通知上来继续面。

三面

三面技术官人不错,一脸笑呵呵,皮肤有些黝黑,很爽朗的样子。
刚开始就是各种寒暄,自我介绍,平时干嘛,有哪些兴趣爱好,然后谈到了德州扑克,
面试官就这个问我,从德州扑克中学到什么?我就大概说了下,没怎么说核心之类的,因为感觉没必要。
后来他又问德州扑克和技术学习有撒关系,有撒帮助?我说没撒,但是对创业,炒股都有些帮助。
感觉他应该也是个德州玩家,不然这事不会这么感兴趣。不过我感觉说这些有点浪费时间。

聊得差不多了,面试官开始问技术问题了,直接来的第一个就是“现在让你设计一个微信抢红包的系统,怎么搞?”
当时有点懵,怎么一来就是这么宽泛,这么模糊的问题,面试最怕的就是这种了。
我当时就开始画架构图,说业务逻辑,流程,然后指出大概的性能瓶颈,但是面试官好像有点不满意,
说我搞的太大了,他想知道的是如果春节期间,如何让这个系统抗住亿级用户。这个杠尴尬了,自己没什么这方面经验。
然后就直说,这方面经验不多,但是一个系统不可能是直接从0到亿级用户的,肯定是有个过程,在这个过程中,
不断发现系统的瓶颈,然后针对相关问题,网上找资料并解决掉。

然后他就问,如果现在中集e栈系统用户乘以100倍,怎么做?
我说,首先进行压测,看系统性能瓶颈在哪里,然后进行针对性的优化和扩容。比如我们现在容易出问题的是Redis,
那么就可以使用客户端或者twitter的redis cluster中间件进行横向扩展,然后监控起来,并看看是否有不符合规范的使用,
比如阻塞命令的使用,keys的命名太长等等之类的。但是我还是觉得问题太宽泛。
面试官说,我就是想问这种问题,看看你的思考,解决问题的方法论,而不是具体的技术,比如我明天让你将这个系统的
容量扩展100倍,你怎么做。

然后就是面试官让我问了几个问题,本来我当时以为挂了的,也没抱太大希望,就这样结束了。

总结

整体感觉,阿里的面试体验还是相当不错的,至少非常有条理,问的问题也交全面,虽然深度差了点,也可能是我面P6级别的吧。
然后技术面试官,我感觉都很Nice,至少你答得不好,或者模糊的地方会指点一下。事后,你问的环节,也可以当场提问,会详细讲解。
人的态度也都很不错,当时也是觉得如果成为同事,应该会非常不错。虽然后来我因为自身原因拒了阿里的offer