本文是来自@roy_lee的投稿
这是一篇对前阵子阿里面试的一个总结,也做了一些面试与学习的分享,结尾有彩蛋哦~。
初识阿里
那时候应该是 16 年的夏天,有一天照例逛微博浏览大佬们的技术分享,私信里却有个来自大佬的留言,问我有没有兴趣去阿里。。。我去,当时真是受宠若惊,想来,一个半路出家仅有一年经验的 iOS 居然被阿里的人看上,觉得还是挺不可思议的。
激动归激动,平静下来,想想也还是有原因的。
那段时间工作并不是很忙,所以在空闲的时间写了个开源 SwipeTableView,在同事与朋友的支持下,也开了博客,因此,受到了许多人的关注。想来,程序员还真是得会推销自己啊(这年头,赶脚没个博客都拿不出手了)。
而后的不久,Prisma 大火。自己本着学习 Swift(同时蹭蹭热度)的目的,用一周的时间写了个项目 PrismaSimpleImagePicker,重写了 Prisma 的所有 UI 功能,包括拍照、图片选择器、图片编辑等。当然,Prisma 的核心--卷积神经网络是没有做的了,哈哈。不过,也恰恰是有这个项目,才受到了阿里大佬的关注。
我觉得我还是挺踏实的一人儿(虽然前两个公司的项目都被我干黄了,呵呵),所以,最终还是拒绝了大佬的好意。直到最后,公司的项目马上要宣布停掉的时候,自己才厚脸皮的又找了大佬。
大佬人很 nice,很快就帮我内推了。
当然,不负众望,最后连个面试跟反馈都没有,就直接 GG 了。现在看来,那时确实还很渣,简历也很 low 逼。
再续前缘
17 年底,看到有人分享的大厂面试经验,并且最后还有阿里的 HC。那时,就心动了,想要再尝试一下阿里。于是,加了那哥们的微信,最后他朋友帮我做了内推。
当然,这次是好好准备的了。简历也好好的弄了一下,也提前复习了许多底层的知识。
等待面试的那段时间还是很紧张的,因为,并不清楚自己过往的经历是不是符合阿里的要求。最后,大概一周左右的时间收到了阿里一面的电话。这一点不得不说,阿里的面试还是很中肯的,他们并不是很卡学历什么的,也更重视解决问题的实际能力与在某一方面的知识深度。
就这样,经过了两轮面试,挂在了三面与 boss 的视频面试(原本定的视频面试由于阿里那边视频出问题最后改为了电话面试)。
这里有个有意思的事,因为三面很关键,所以,自己也做了很多准备,面试的时候个人赶脚聊得也是可以。不过,电话刚挂,旁边的女友就一顿数落,说我一五一十的说自己的经历以及自己转行 iOS 的原因什么的(其实这些自己的博客早有介绍,哈哈),很容易让人觉得自己是一个没有主见不喜欢技术的人。。。果不其然,最后还挂了,虽然不知道具体啥原因吧,简历能过,最后却死在了三面。。。
虽然挂了,但是回过头看,发现自己这两次内推阿里的部门,竟然都是一个部门。感慨命运真是个有意思的东西。
总结分享
最后,来点干货,分享下这两次,不,是这一次面试阿里的经验。
首页,简历是很重要的。在内推之前,还特意咨询了大佬。简历一定要有亮点,能够突出自己的贡献,在哪些方面的深入研究等等。简历千万不能千篇一律,什么都写精通的那种一看就是培训出来没有自己总结的人,当然,我也是培训出来的。只有这样,阿里的简历评审才有可能过。
其次,就是一面。由于我在北京面杭州的岗,所以都是电话面试。个人认为,一面在技术面中是最关键的。一面的面试官很有逻辑,先介绍项目,再谈谈项目中的职责、亮点,然后,通过项目展开问些技术问题。最后,也会单独问些技术问题,并且根据面试者的回答展开其他技术点。所以,面试过程中,冷静自信还是很重要的,当然,也要有个不错的基础知识。一面的最后,阿里那边出了一道笔试题,是以邮件的形式,要求在次日的中午之前回复(这个也可能是一面合格的意思,当然不同部门可能不一样)。
阿里的笔试题,严格上不能算是算法题,给的是一个逻辑场景,有点像数学题。我想阿里着重考察的是面试者的逻辑思维与解决问题的能力。另外,一面也会问题些数据结构算法的问题,由于我不是很擅长,不会的问题也都直接说不会了。
之后,是二面。二面也是电话面试,可能由于阿里有交叉面试这回事(看电话号码,确实只有二面的不同),面试官感觉并不如一面准备的充分。聊了大概四十分钟,主要也是介绍项目,说说难点亮点,最后也问些设计模式相关的问题。不过,这次感觉自己答的并不是很好,即便是我自己面我自己,也要好好考量一下的。庆幸的是,二面最终是过了,可能阿里那边会综合评审一下吧。
这里说一下,每次面试之后都会对面试官有个提问。感觉,这个问题还是可以好好准备一下的,相互的提问也可以增加彼此的了解。当然,由于二面很突然,自己没有怎么准备,最后也是直接问了面试官自己的表现如何?有什么建议?当然,也问了一下工作职责等其他内容。
最后,就是 boss 面。这一面跟预想的一样,都是聊聊项目,问问经历,了解下平时的学习路径以及未来的规划什么的。
因为,这一面很重要。所以自己也是充分准备了,面试的时候也是实打实的全盘脱出。由于最终还是挂了,所以就没啥经验可分享了。至于,在面试中,要不要粉饰自己这个问题,还是仁者见仁智者见智吧。
这就是所有的阿里面试经历了,如果三面过了,正常可能就是 HR 面了,或者还有一个更大的 boss 就不是很清楚了。而对待面试,一定是要认真准备的,并且要有个放松的心态。
来自半吊子的学习路径总结
对于自己这样一个转行 iOS 的人来说,培训出身我觉得也并不比别人低一等。关键还是要在开发这条道上越走越黑才行。。。
要想提高 iOS 的技能的话,我认为最重要的还是一个钻研精神,对工作,对代码。工作中,我们不能只是为了满足需求而做,还是要有一个自己的标尺的。这个标尺不用太高,也不用跟别人比,就要求下自己、跟自己做个比较就好。每次搬砖,可以问下自己有没有更好的方式去实现。毕竟,对于一个整天加班到九十点的苦逼程序员来说,工作是最直接的修行手段了,且行且珍惜吧。
能做到这一点的同学,技能的提升一定是很快的。这一点甚至可以认为是下面几点的前提。
另一个,可以试着开源自己的代码。把自己的代码放在 github 上。当把自己的下半身暴露给别人的时候,自己也能越发的了解自己的不足。如果自己的项目很出彩,也能正面的促进自己继续完善,做到更好。
在整个开发过程中,阅读优秀源码是非常高效的提高技能的方式。通过读别人的优秀源码,可以到学习别人好的开发逻辑、设计模式与框架知识。同时,千万别只会用轮子,自己偶尔的也要尝试下造轮子,或者起码得知道自己所用轮子的原理。这一点,我在面试别人的时候也常常会问到的。
尽管工作苦逼繁忙,在空闲时间还是看看书比较好。哪怕不是技术类的书,也能对自己有所提升的。前一阵子重温了一遍之前看的书,还是能够有新的理解认识的,有时也会有种怎么没有早读到这本书的感慨。
最后,由于技术更新速度还是挺快的,平时还是要多关心些技术博客、新闻什么的。在某一方面技术精进的同时,也可以去了解学习下其他的语言,不一定要全栈,多接触下总是可以开阔眼界的。
最后
如果你是一个在 iOS 领域有一定研究的人,阿里的朋友有内推的机会哦~ 简历尽管砸过来吧 yusheng.hs@alibaba-inc.com
另外,如果对阿里没有兴趣的话,也可以考虑考虑我们公司哦~ 内推邮箱奉上 mengliang@ibantang.com