阿里技术面试中教你脱颖而出(内部资料)

更多精彩尽在原文地址

iOS开发之家

iOS开发之家

导读:知己知彼、百战不殆,面试也是如此。只有充分了解面试官的思路,才能更好地在面试中充分展示本身。今天,阿里高级技术专家将分享本身做为面试官的心得与体会。若是你是面试者,能够借此为镜,对照发现本身的长处与不足,有针对性学习成长;若是你是面试官,相信也能经过他的讲述,有所启发。git

招聘是团队管理者工做中的重要一环。本文会结合本身亲身经历以及接受的招聘培训,综合分析怎么找到咱们要的人,也但愿能够经过招聘这面镜子照亮本身,怎样成为一个更好的工程师。github

###招聘的目的面试

当今社会,技术已经成为影响商业成功的关键因素,工程师成为了这些公司最宝贵的财富,没有优秀的人组成团队来完成商业目标,公司根本不可能有今天的成就。因此招聘,就是选择最优秀的人。算法

###招什么样的人?spring

招优秀的人显然是一个很模糊的概念,咱们来度量的时候,我我的认为三个因素是最关键的:编程

技能swift

工做项目经验,以及解决疑难问题的能力,毕竟招来的人首先必须很好的完成工做,这是最基本的要求,注意,是很好的完成,不是仅仅完成。网络

潜力数据结构

这个概念看起来比较模糊,其实仍是比较容易评价的,对计算机相关的专业的知识体系是否是完整,基础是否是扎实,日常是否是喜欢钻研,对这个世界充满好奇心,这几年走下来,沉淀的速度如何,都是判断一我的的潜力的方式,注意咱们看潜力主要是基于候选人的以前的成长经历实事求是来看,过去的优秀经历才能给将来背书。潜力和技能的重要性同样重要,咱们不能只看眼前,团队是须要不断发展和前进的,因此咱们招人应该面向将来。架构

软实力

软实力这里其实包含了性格,执行力,领导力等方方面面,它表明了候选人是否能快速融入团队,拿到结果,带领团队攻城拔寨,激励和影响身边的人变得更加优秀等等,软实力通常HR确定会考察,虽然技术面不会特别去关注,可是从面试的过程当中能够看出候选人的沟通能力,以及性格相关的特色,也值得咱们注意。

说了这么多,其实在招人上有一个对比的标杆,就是你招的人是否是比团队中同一等级中50%的同窗优秀,若是你以为没有他们优秀,那不用纠结,这个候选人不要了,团队必须不停加入更好的同窗,才能变得更增强大。

iOS开发之家

面试的方法

这里结合以前的培训以及本身的真实经历,讲解面试的一些方法。

###面试不要作的事

问一些知道性的问题好比问知不知道这个API干什么的,怎么调用,这个命令怎么用的,知道性的知识,google一下或者认真看下文档就应该知道。

问一些特别复杂的问题好比问一个特别复杂的算法,问一个很抽象的大问题,短期内很难给予回答。

问一些假设性的问题假设你参与了这个项目,你以为哪几个地方须要优化。

之因此说这些问题不该该问,我认为主要是由于这些很难考察到面试者的真实能力,45分钟的时间原本就很短,有些问题有可能比较偏,有些问题又过于庞大无法一会儿描述特别清楚,还有一些问题缺少上下文,让人摸不到头脑,因此尽可能避免这么问问题,另外把握一个重要原则,不要在面试中试图证实别人不如本身,毫无心义,人无完人,总有覆盖不到的地方,按照这个规则招聘,会错过不少优秀的人才。

###面试应该作的事

问已经发生的事情

好比面试移动开发者,面试官应该认真看下其作过的App,具体的工做是什么,准备一些相关的问题,这里就能够看出来以前工做中的积累是什么,有多深。

问题解决思路

针对项目经验和一些学习的经验上面,应该问拿到问题之后解决思路是什么,在什么场景下为何这么作,这里根据面试者的方案,分析的方法论,就能够大体了解面试者是否聪明,知识面是否是够广,遇到问题时会不会触类旁通。

具体能够举个简单的例子,不少同窗说本身作过架构,而后都会讲本身作了一个解耦和分层的框架,其实这类框架iOS不少,外部github上就有各类方案。在阿里内部手淘早先作的bundle拆分时沉淀的容器规则,天猫开源出去的beeHive,闲鱼内部的Xframework,抑或是服务端的spring mvc,其实都实现了IoC,但实现和思路上都有一些差别,到底为何这么作,实际上是有区别的,这里面就能够看出知识广度,总结和思辩能力,在关键路径上的技术判断。

若是你依然在编程的世界里迷茫,不知道本身的将来规划,小编给你们推荐一个iOS高级交流群:458839238 里面能够与大神一块儿交流并走出迷茫。小白可进群免费领取学习资料,看看前辈们是如何在编程的世界里傲然前行! 群内提供数据结构与算法、底层进阶、swift、逆向、整合面试题等免费资料 附上一份收集的各大厂面试题(附答案) ! 群文件直接获取

又好比说,咱们总在强调性能稳定性怎么作,业界也有不少方案,到底哪一个方案更好呢?答案没有绝对的对错,取决于某个时间点和场景下哪一个问题是最核心的突破点,而你的选择标准和落地的技术方案是否是合理(考虑成本,收益,以及后续的风险是什么)。通常来说,咱们更倾向于用系统化的思惟看待一个问题,也就是说,相比根据人的经验去识别性能瓶颈,咱们更但愿能经过自动化,智能化,数据化的方式去解决问题。

少问多听

通常刚开始作面试官的同窗很喜欢以问为主,但由于你们的知识体系不太同样,成长环境也不一样,直接这么问起来很难就找到面试者的优势,因此尽可能让应试者本身陈述,而后以学习和交流的心态针对陈述中存疑的地方再进行发问,会更容易让应试者放松,也更容易让应试者更全面的表达本身。另外,问的差很少的时候,结尾的时候能够补充一句:您以为刚才的面试中还有哪些我没问到的,您想再补充一下的内容?末了,再问下:个人问题问完了,您有什么想要问个人吗?

知道了应该怎么作,那具体的提问方法有没有什么技巧呢?在招聘中有一个重要的STAR原则,能够跟你们分享。

###STAR原则

处境(situation)

在什么样的环境下

任务(task)

接到了什么样的任务

行动(action)

而后具体怎么落地的

结果(result)

拿到了什么结果

咱们尽可能问清楚对方在什么样的环境下接到这个任务,接到之后是作了什么事情,最后的结果是什么样子的。乍一听,感受,这不是套路嘛,是否是知道这个原则的人,只要按照这四点编故事,就能经过面试了?固然不是,在叙述过程当中,咱们应该分辨出STAR中的真假,那下面就举一些例子。

###假的STAR

描述含糊不清

好比,我用这个方案解决了这个问题,效果很好,获得了你们的一致好评。注意,效果好是哪里好,有什么度量的标准?一致好评的体现是在具体KPI仍是好比团队有个什么奖励之类的。

只表达态度和见解

我以为线上稳定性很是重要,应该重点解决和持续跟进。若是只有这一句话,没有后面具体认为重要的解决方案的话,这部分的经验难以使人信服。

假设式描述

若是我来作这件事情,我会1234怎么怎么样。前面其实面试应该问的问题里面有提到,咱们自己就不该该问假设性的问题,那做为面试者,假设没作过的事情,若是只是看思路还好,可是若是说的天花乱坠,这个时候要警戒了,毕竟说和作以前的差别是很大的。对于假设的事情,面试官是无法评估具体效果的,由于它不像过去已有的项目和工做内容,是有明显结果的,若是对过去结果存疑,后续也能够背调了解具体的状况。

针对假的STAR,咱们要甄别分辨出来,引导其表达出真正的状况。

iOS开发之家

###鉴别方式

更多的关心What/How/Why

作了什么事情,具体作的方案1234几步,为何要这么作,好比图片的优化,最先确定什么都没有,后续加cache,cache策略又能够升级,包括cache自己的算法以及多级cache的实现,图片尺寸上面后来有作了什么裁切之类的,图片格式上面后续又作了优化等等。

每一个阶段不太同样,关注的重点也不同,刨根问题问一问,会了解是否是真的作过这件事情,另外有一些可能项目作得好久说不少东西忘了,这里我分享一个观点,以前看过一句话,招聘的人中有一种人是比较好的,他总能比较清楚的记住过往项目当中的重点,这样的人在经验沉淀的过程当中确定更快一些,固然这样的同窗确定得归结在聪明一类的人了,固然能记住也说明他可能喜欢总结和回顾,日常的学习习惯应该也比较好。

细节!细节!细节!

不少关键节点的细节很重要,好比网络库的优化。若是你是一个iOS开发,通常都会知道iOS的网络协议优化常采用拦截NSURLProtocol的方式进行,而后针对传统的https协议咱们会将其替换成为spdy协议或者http2协议,过程当中还有一些httpdns等的优化。但若是你今天但愿招聘一个有这部分网络优化经验的同窗,怎么判断这个同窗有实操的经验呢?你可让他说细节上面的不少事情,好比说URLProtocol拦截request之后,针对不一样的case的降级策略是什么,选择依据是什么?当时遇到了什么其余的坑没有?你本身的作法有什么缺陷?

又好比Weex的实现上面,整个渲染的流程究竟是怎样的,渲染部分还有什么优化空间吗?或者说这个方案自己作了哪方面的优化?它的配套工程体系上的问题是什么,你遇到之后是怎么解决掉的,这些在了解大概思路后,均可以往深刻再问一下细节的部分,认真研读以及修改过代码的同窗,确定是答得出来的。

###其余Tips

你在面试别人,别人也在选择你

面试是双向的,面试官是一个团队对外的门面,不要迟到,提问和交流要尊重面试者,让面试者感觉到咱们的真诚。

为将来招聘而不是如今

咱们永远应该为将来招聘,由于招聘的人入职也是发生在将来,不能马上就解决你眼前的问题,因此咱们招聘的时候也放长远一点,招为团队将来更有好处的人。

面试是一面镜子

以人为镜,优秀的面试者给咱们能带来新的思路和新的方法,而差强人意的面试者则提升咱们看人的能力,为后续的提高招聘效率找到更正确的人打下基础。

###技术人如何不断成长?

iOS开发之家

招聘,培训,人才选拔晋升,我认为评价标准和方法都应该有比较多的重合的部分,咱们从刚才的面试经验中,反思下,若是如今是咱们去找工做,这个市场或者团队更须要什么样的人?

经验丰富,知识体系完整

经验能解决实际的问题,另外知识体系可让你在遇到新的问题时触类旁通,固然大公司和小公司要求的知识体系又不太同样,大公司更偏向一专多能的T型人才,小公司更喜欢全栈,因此到底要成为何样的人,跟你的职业规划颇有关系,是想在大公司成就一番事业,仍是出去闯荡,那你点的技能树确定是不同的。到底应该怎么作,我本身的经验是,找到身边的标杆,向更优秀的同窗学习,在阿里固然很是优秀的专业人才也好,架构师也好,都很是多,因此标杆应该也好找,业界固然也有不少成功的人,有了标杆,就努力向上吧。

保持良好的习惯,不忘总结和提高

当我仍是一个菜鸟的时候,当时的老板问了我一个问题,每周写周报的时候,想一想本身这一周到底收获了什么,这给我留下了很深的印象。我在想,既然我每次面试别人都问你最近有研究什么新的技术或者看到什么有趣的文章没有的,那我本身是否是能这样要求本身呢?不积跬步无以致千里,贵在坚持积累。

推荐文章

【重磅来袭】史上最全iOS面试题及答案

相关文章
相关标签/搜索