阅读本篇大概需要 6 分钟
这篇文章比较长。
为什么我将文章定义为一次自我救赎的面试经历,实际上和我在16年底的一次小米面试经历有关。
16年12月,我毕业半年,我当时还在无锡出差,然后电话面试了四轮小米技术面试。那时候,小米在南京有一个工作地点,人还不多,小米MIUI部门的主管在招聘网站上邀请我面试的。
当时的四轮面试,我全部经历了下来,棋差一招,还是没有通过,但那次面试对我来说意义重大,我也写了一篇大概一万一千字的文章分享了那次经历,文章有一定反响,大家可以在张哥(stormzhang)这篇文章观看,还可以去掘金来观看下文章
https://juejin.im/post/59ba35246fb9a00a3f24c8db
总结起来,那次面试是我毕业之后第一次正式社招面试,我感慨小米对于人才要求之高,他们对于一个人对问题深入探究的能力要求很高,如果一个问题想解决它,可以深究到五层,那么他们可能要求你至少得体现出探究至三到四层的意志与能力。
而我当时缺的就是这份深入,我可能当时最多就深入到两层,毕竟那会刚毕业,还在大量的吸收和学习过程中,是一个横向发展的过程,纵向的深入确实欠缺很多。不过这段经历也让我落下了一个小米情节,给我灌输了整整一年半的学习动力。
vivo面试后,我更新了我在招聘网站上的简历,然后上次找我的那位小米主管又对我发出了面试邀请。
没错,同一个人。
都说同一个坑不能掉两次,还说,从哪跌倒就要从哪爬起来,所以我准备迎接这次挑战了。
第一轮
因为我现在在南京,所以我可以进行两轮线下面试,直接去小米在南京的新址来面试,巧合的是,新址就在我上班公司隔壁,所以步行5分钟就到楼下了。
南京小米一楼是全球第一家小米有品旗舰店,离面试还有一小时,我就进有品里面逛了逛。有品让我感觉到了小米的格局与野心,不得不说逛有品的体验感有点像在无印良品和宜家,幻想着如果能来这里上班,中午下楼逛逛有品,也是美滋滋。
进了楼,被领到一个办公室等待面试,那会大概在下午2点,应该是他们中午休息时间结束的时间,很多人路过我这个办公室到旁边的打水池打水喝,然后有意思的是,我看到的程序员基本都是穿拖鞋或者人字拖。
差不多过了20分钟,来了一位小哥,戴着眼镜,抱着一沓白纸就进来了,我是知道这些是用来给我写算法,或者涂涂画画用的。
因为有了上一次小米面试的经验,我在回答之前都会深思熟虑一遍,在心里捋一下我在这个问题上到底懂到什么程度,如果实在不会,我会提前说我没看过/我不太清楚,然后如果有自己的想法,我会再补一句「虽然我没看过,但如果是我做/我的想法是」。
切记,不要不懂装懂,懂也要明确表示懂到第几层。
小哥先让我做了自我介绍,我们针对项目上我做的那些东西探讨了很多(这部分和我在vivo面试差不多),下面是一些问题细节。
到此Android问题结束,实际上时间还是挺长的,主要集中于一开始我项目中遇到的架构和设计上的问题,项目上的东西是我简历上和面试过程中我感觉最有价值的东西,我之后会再写一篇文章详细介绍我这一年技术上到底做了什么。
后来将近一小时时间都是Java基础问题,很基础,很细,虽然不算偏,但老实说Android开发很少会覆盖到这些基础知识。面试小哥给了我一个颇有压力的形式,他在白纸上写下了Java几个知识点,让我从中挑两三个熟悉的,他来细致问问:集合、并发、泛型、I/O、注解、OOP、JVM。
我挑了集合、泛型、并发,回忆了一些印象比较深的问题,大家可以看下:
一个算法题:两个整数,A和B,A只能通过+、-、*2来达到整数B,求达到B的最短操作次数的算法。
一个情景逻辑题:一个操场,5个跑道,用5个人跑一次可以排出来12345名,假设每个人每次跑的成绩都是一样的,但只能知道这次跑步的名次,无法知道具体的时间成绩,现在有25个人,要找出其中的123名,求最少需要使用多少次操场。
这一轮因为上来有点紧张,所以有点被虐到了,但好在后面的手写算法和情景题回答的还可以。整个第一轮时间大概在2小时。
第二轮
第一轮结束大概20分钟,第二个面试小哥来面我了,依然是常规的自我介绍,聊聊项目。说到那个16进制路由系统的时候,他打断了下来,说正好我好像也懂16进制,所以考察我一个相关算法题,让我手写:一个整数n,求离它最近的二次幂数,等同于求 |n-2的x次方|最小时候的x的值。显然要用到一些移位的东西。
这里有个小插曲,我写了大概10分钟左右,这位面试小哥临时有事,所以他随手拉了一位要上厕所的同事,让他继续面试我。而后面的面试水准和质量依然非常强,可见这样的人才筛选要求,团队各个成员的能力都是肉眼可见的扎实。
换了新的人来面我,这道算法题也就暂停了。他重新问我了很多Android方面的问题:
这位面试官对我项目中的组件化和自动化测试的系统思路非常感兴趣,和我聊了很久,我感觉是我这轮面试很大的加分项。
后来他问完了,之前有事的那位面试官回来看了我的二进制算法,又让我写了一个算法:一组整数数组,将其中的偶数升序放在前,奇数降序放在后。我提供了几种思路,但感觉不是他最想听到的。
两轮面完了,从2点到6点半,后来主管来了,跟我聊了会,他说,小米这边要求很严格,因为是他推上去的人,所以他没法面我,要北京那边再面两轮,才能对我有一个细致而全面的了解。让我等待后面的北京电话面试。
第三轮
过了几天,我接到了北京那边的第三轮电话面试,这次的面试我准备的非常充分,特意挑选了一个安静的地方来等待面试,时间也比较舒服,约到了工作日晚上。节奏比较紧凑:
值得一提的是性能优化和问题解决是我准备过的问题,我觉得回答的很好,说了很多实际开发中发现问题、确定问题、解决问题的流程还有方案,是我觉得回答比较好的地方。
技术大概问了45分钟,面试官开始问一些比较有趣的问题。
「觉得这次面试难度从高中低中选一个」
我选了低,我说我会、掌握的我觉得我都答了,不会的和没看过的记不住的我也没法,但我也尽力的说了我的见解和想法,至少我觉得该回答出来的部分,我对自己的表现还算满意。
「那你觉得你还有什么需要展示给我的但没有展示的」
我说了一些我项目中写过并且比较满意的因为某些问题而设计的系统。
下一个问题,请各位读者划重点,这是我认为我最有质量的一个回答。
「你对小米这次给到你的机会怎么看,你对小米有什么看法,为什么选择小米」
面试官说:感谢对小米的认可,期待与你一起共事,那么请等待后续消息吧。
第四轮
第四轮在一个下午,我请假去咖啡厅面试的,依然是北京那边的电话面试。整个过程很轻松,没有太多技术问题,他主要对我今年开始的Leader身份很感兴趣,问了很多这方面的问题。
然后他问我还有什么问题,我问了两个。
一个是小米手机在目前其他大厂如此发力的前提下,并且自身也在把重心放在IOT的情况下,手机部门的现状是什么样的,处于公司什么样的战略地位。
另一个问题是,如果我加入小米,我所担任的工作职责是什么样的,会有一定的灵活性吗。
第一个问题,他站在他的理解角度跟我说了很多,他的答案让我挺满意,挺安心的。
第二个问题,我如果假如小米,会在MIUI应用部门工作,现在我知道了,我开发的是小米天气应用,所以以后各位用小米的小伙伴天气要有bug,就跟我说就好了!
至此第四轮结束。
后续
等了好大几天,HR来了电话,给了offer,我如释重负,随后婉拒了vivo的offer,近期做完了前东家的交接工作,准备迎接新的职业生涯。小米面试成功对我来说意义很大。
一来,这是一次自我救赎的面试,打破了我的心结。
二来,我最想去的互联网公司前三名是小米、网易、京东,现在成功入职小米,这种体验别说多爽了。
经历篇就告一段落,后面的文章我将写写这段时间我总结的面试的技巧、经验,以及对各个公司的直观感悟。