阿里妹导读:知己知彼、百战不殆,面试也是如此。只有充分了解面试官的思路,才能更好地在面试中充分展现自己。今天,阿里高级技术专家将分享自己作为面试官的心得与体会。如果你是面试者,可以借此为镜,对照发现自己的长处与不足,有针对性学习成长;如果你是面试官,相信也能通过他的讲述,有所启发。
招聘是团队管理者工作中的重要一环。本文会结合自己亲身经历以及接受的招聘培训,综合分析怎么找到我们要的人,也希望可以通过招聘这面镜子照亮自己,怎样成为一个更好的工程师。
招聘的目的
当今社会,技术已经成为影响商业成功的关键因素,工程师成为了这些公司最宝贵的财富,没有优秀的人组成团队来完成商业目标,公司根本不可能有今天的成就。所以招聘,就是选择最优秀的人。
招什么样的人?
招优秀的人显然是一个很模糊的概念,我们来度量的时候,我个人认为三个因素是最关键的:
-
技能
工作项目经验,以及解决疑难问题的能力,毕竟招来的人首先必须很好的完成工作,这是最基本的要求,注意,是很好的完成,不是仅仅完成。
-
潜力
这个概念看起来比较模糊,其实还是比较容易评价的,对计算机相关的专业的知识体系是不是完整,基础是不是扎实,平常是不是喜欢钻研,对这个世界充满好奇心,这几年走下来,沉淀的速度如何,都是判断一个人的潜力的方式,注意我们看潜力主要是基于候选人的之前的成长经历实事求是来看,过去的优秀经历才能给未来背书。潜力和技能的重要性一样重要,我们不能只看眼前,团队是需要不断发展和前进的,所以我们招人应该面向未来。
-
软实力
软实力这里其实包含了性格,执行力,领导力等方方面面,它代表了候选人是否能快速融入团队,拿到结果,带领团队攻城拔寨,激励和影响身边的人变得更加优秀等等,软实力一般 HR 肯定会考察,虽然技术面不会特别去关注,但是从面试的过程中可以看出候选人的沟通能力,以及性格相关的特点,也值得我们注意。
说了这么多,其实在招人上有一个对比的标杆,就是你招的人是不是比团队中同一等级中 50% 的同学优秀,如果你觉得没有他们优秀,那不用纠结,这个候选人不要了,团队必须不停加入更好的同学,才能变得更加强大。
面试的方法
这里结合之前的培训以及自己的真实经历,讲解面试的一些方法。
面试不要做的事
-
问一些知道性的问题比如问知不知道这个 API 干什么的,怎么调用,这个命令怎么用的,知道性的知识,google 一下或者认真看下文档就应该知道。
-
问一些特别复杂的问题比如问一个特别复杂的算法,问一个很抽象的大问题,短时间内很难给予回答。
-
问一些假设性的问题假设你参与了这个项目,你觉得哪几个地方需要优化。
之所以说这些问题不应该问,我认为主要是因为这些很难考察到面试者的真实能力,45 分钟的时间本来就很短,有些问题有可能比较偏,有些问题又过于庞大没法一下子描述特别清楚,还有一些问题缺乏上下文,让人摸不到头脑,所以尽量避免这么问问题,另外把握一个重要原则,不要在面试中试图证明别人不如自己,毫无意义,人无完人,总有覆盖不到的地方,按照这个规则招聘,会错过很多优秀的人才。
面试应该做的事
-
问已经发生的事情
比如面试移动开发者,面试官应该认真看下其做过的 App,具体的工作是什么,准备一些相关的问题,这里就可以看出来之前工作中的积累是什么,有多深。
-
问题解决思路
针对项目经验和一些学习的经验上面,应该问拿到问题以后解决思路是什么,在什么场景下为什么这么做,这里根据面试者的方案,分析的方法论,就可以大致了解面试者是否聪明,知识面是不是够广,遇到问题时会不会举一反三。
具体可以举个简单的例子,很多同学说自己做过架构,然后都会讲自己做了一个解耦和分层的框架,其实这类框架 iOS 很多,外部 github 上就有各种方案。在阿里内部手淘早先做的 bundle 拆分时沉淀的容器规则,天猫开源出去的 beeHive,闲鱼内部的 Xframework,抑或是服务端的 spring mvc,其实都实现了 IoC,但实现和思路上都有一些差异,到底为什么这么做,其实是有区别的,这里面就可以看出知识广度,总结和思辩能力,在关键路径上的技术判断。
又比如说,我们总在强调性能稳定性怎么做,业界也有很多方案,到底哪个方案更好呢?答案没有绝对的对错,取决于某个时间点和场景下哪个问题是最核心的突破点,而你的选择标准和落地的技术方案是不是合理(考虑成本,收益,以及后续的风险是什么)。一般来讲,我们更倾向于用系统化的思维看待一个问题,也就是说,相比根据人的经验去识别性能瓶颈,我们更希望能通过自动化,智能化,数据化的方式去解决问题。
-
少问多听
一般刚开始做面试官的同学很喜欢以问为主,但因为大家的知识体系不太一样,成长环境也不同,直接这么问起来很难就找到面试者的优点,所以尽量让应试者自己陈述,然后以学习和交流的心态针对陈述中存疑的地方再进行发问,会更容易让应试者放松,也更容易让应试者更全面的表达自己。另外,问的差不多的时候,结尾的时候可以补充一句:您觉得刚才的面试中还有哪些我没问到的,您想再补充一下的内容?末了,再问下:我的问题问完了,您有什么想要问我的吗?
知道了应该怎么做,那具体的提问方法有没有什么技巧呢?在招聘中有一个重要的 STAR 原则,可以跟大家分享。
STAR 原则
-
处境(situation)
在什么样的环境下
-
任务(task)
接到了什么样的任务
-
行动(action)
然后具体怎么落地的
-
结果(result)
拿到了什么结果
我们尽量问清楚对方在什么样的环境下接到这个任务,接到以后是做了什么事情,最后的结果是什么样子的。乍一听,感觉,这不是套路嘛,是不是知道这个原则的人,只要按照这四点编故事,就能通过面试了?当然不是,在叙述过程中,我们应该分辨出 STAR 中的真假,那下面就举一些例子。
假的 STAR
-
描述含糊不清
比如,我用这个方案解决了这个问题,效果很好,得到了大家的一致好评。注意,效果好是哪里好,有什么度量的标准?一致好评的体现是在具体 KPI 还是比如团队有个什么奖励之类的。
-
只表达态度和看法
我觉得线上稳定性非常重要,应该重点解决和持续跟进。如果只有这一句话,没有后面具体认为重要的解决方案的话,这部分的经验难以令人信服。
-
假设式描述
如果我来做这件事情,我会 1234 怎么怎么样。前面其实面试应该问的问题里面有提到,我们本身就不应该问假设性的问题,那作为面试者,假设没做过的事情,如果只是看思路还好,但是如果说的天花乱坠,这个时候要警惕了,毕竟说和做之前的差异是很大的。对于假设的事情,面试官是没法评估具体效果的,因为它不像过去已有的项目和工作内容,是有明显结果的,如果对过去结果存疑,后续也可以背调了解具体的情况。
针对假的 STAR,我们要甄别分辨出来,引导其表达出真正的情况。
鉴别方式
-
更多的关心 What/How/Why
做了什么事情,具体做的方案 1234 几步,为什么要这么做,比如图片的优化,最早肯定什么都没有,后续加 cache,cache 策略又可以升级,包括 cache 本身的算法以及多级 cache 的实现,图片尺寸上面后来有做了什么裁切之类的,图片格式上面后续又做了优化等等。
每个阶段不太一样,关注的重点也不一样,刨根问题问一问,会了解是不是真的做过这件事情,另外有一些可能项目做得很久说很多东西忘了,这里我分享一个观点,之前看过一句话,招聘的人中有一种人是比较好的,他总能比较清楚的记住过往项目当中的重点,这样的人在经验沉淀的过程中肯定更快一些,当然这样的同学肯定得归结在聪明一类的人了,当然能记住也说明他可能喜欢总结和回顾,平常的学习习惯应该也比较好。
-
细节!细节!细节!
很多关键节点的细节很重要,比如网络库的优化。如果你是一个 iOS 开发,一般都会知道 iOS 的网络协议优化常采用拦截 NSURLProtocol 的方式进行,然后针对传统的 https 协议我们会将其替换成为 spdy 协议或者 http2 协议,过程中还有一些 httpdns 等的优化。但如果你今天希望招聘一个有这部分网络优化经验的同学,怎么判断这个同学有实操的经验呢?你可以让他说细节上面的很多事情,比如说 URLProtocol 拦截 request 以后,针对不同的 case 的降级策略是什么,选择依据是什么?当时遇到了什么其他的坑没有?你自己的做法有什么缺陷?
又比如 Weex 的实现上面,整个渲染的流程到底是怎样的,渲染部分还有什么优化空间吗?或者说这个方案本身做了哪方面的优化?它的配套工程体系上的问题是什么,你遇到以后是怎么解决掉的,这些在了解大概思路后,都可以往深入再问一下细节的部分,认真研读以及修改过代码的同学,肯定是答得出来的。
其他 Tips
-
你在面试别人,别人也在选择你
面试是双向的,面试官是一个团队对外的门面,不要迟到,提问和交流要尊重面试者,让面试者感受到我们的真诚。
-
为未来招聘而不是现在
我们永远应该为未来招聘,因为招聘的人入职也是发生在未来,不能立刻就解决你眼前的问题,所以我们招聘的时候也放长远一点,招为团队未来更有好处的人。
-
面试是一面镜子
以人为镜,优秀的面试者给我们能带来新的思路和新的方法,而差强人意的面试者则提高我们看人的能力,为后续的提升招聘效率找到更正确的人打下基础。
技术人如何不断成长?
招聘,培训,人才选拔晋升,我认为评价标准和方法都应该有比较多的重合的部分,我们从刚才的面试经验中,反思下,如果现在是我们去找工作,这个市场或者团队更需要什么样的人?
-
经验丰富,知识体系完整
经验能解决实际的问题,另外知识体系可以让你在遇到新的问题时举一反三,当然大公司和小公司要求的知识体系又不太一样,大公司更偏向一专多能的T型人才,小公司更喜欢全栈,所以到底要成为什么样的人,跟你的职业规划很有关系,是想在大公司成就一番事业,还是出去闯荡,那你点的技能树肯定是不一样的。到底应该怎么做,我自己的经验是,找到身边的标杆,向更优秀的同学学习,在阿里当然非常优秀的专业人才也好,架构师也好,都非常多,所以标杆应该也好找,业界当然也有很多成功的人,有了标杆,就努力向上吧。
-
保持良好的习惯,不忘总结和提升
当我还是一个菜鸟的时候,当时的老板问了我一个问题,每周写周报的时候,想想自己这一周到底收获了什么,这给我留下了很深的印象。我在想,既然我每次面试别人都问你最近有研究什么新的技术或者看到什么有趣的文章没有的,那我自己是不是能这样要求自己呢?不积跬步无以至千里,贵在坚持积累。
附
十年前,他如何自学技术进阿里?
阿里云高级 DBA 专家玄惭,讲述十年前通过校招加入阿里的经历和心得,希望对大家有所帮助。
准备工作
一年一度的校园实习招聘开始了,最近接触了几个找工作的应届生同学。这让我回想当年找工作的时候,遇到了很多好心人,所以一直想写写如何加入阿里的文章,算是对自己有一个交代,也希望能够帮助到找工作的同学。
序:一颗种子的种下
我的母校是四川师范大学,专业是教育技术,在大一下期的一堂专业课上网站设计,我的专业课老师在讲网站开发过程中使用数据库的时候,介绍了这个数据库的管理者 DBA,在当今是属于比较稀缺的技术人员,他们随着经验的不断增加,所获得的报酬也将会越来越大。在当时很多学计算机的人都觉得做程序员是一门年青饭,所以我一下子被打动了,在心里暗暗就下定决心我毕业后就要做一位出色的 DBA,专业老师的不经意一句话,就在我内心中种下了一颗种子,等待着时间发芽成长。
暑期自学数据库
有了这样一个想法之后,暑假里我在图书馆里借几本数据库原理这本书,打算在暑假的时候开始自学数据库,但其实回想起来这些书都应该没有看懂。到了大二,开始到图书馆中去借各种各样的数据库技术书籍,2007 年的时候 Oracle 还是非常流行的数据库,所以自然想成为一名 Oracle DBA,依然还记得最早 Oracle 入门书籍看的是 eygle 盖国强写的书,他坚持不懈的撰写 Oracle 相关的技术文章,让当时一大批 DBA 爱好者受益匪浅。
《深入解析 Oracle》盖国强著
书看完后,心中会有很多的疑问,一遍看不懂,再看一篇,再不懂,再看一遍,这是我的学习方法。同时我也会自己搭建环境自己进行测试验证,再不懂就到论坛中去提问,最后将问题总结下来写成 Blog。
当时中国最大的 Oracle 技术论坛 ITPUB 云集了国内众多的高手,从论坛中看高手的回答,往往一针见血,认识了很多人,了解了他们的成长轨迹,让人觉得非常佩服。
在大学里学到了一门独特的技能就是通过互联网搜索我想了解的知识。我从互联网上搜寻各种 DBA 相关的资源,搜索到了让我坚定走入 DBA 之门的关键钥匙——《阿里 DBA 成长之路》,后来这篇文章的作者成为了我的一面技术官——我进入阿里后的第一任主管丹臣,每当重新读起他那篇文章,总是能够让人重新燃起成为一名优秀 DBA 的希望。
中国最好的 DBA 技术团队在阿里
当时中国最好的 DBA 技术人才都在阿里,业界出名的 DBA 有冯春培(孔丘),陈吉平(托雷),宁海远(江枫),HelloDBA (张瑞)都在阿里,内心中升起了加入淘宝 DBA 团队的决心,我每天都会关注这些技术牛人和技术团队的 blog,通过 google reader 订阅他们的文章,了解业界最新的技术动态。
淘宝 DBA 团队
我保存了一篇当年淘宝 DBA 团队的 blog-淘宝 DBA 语录,节选如下:
-
作为我们的团队成员,我并不一定需要他有高超的技术(有当然更好),但是,我们的团队成员必须有强烈的责任心,有很强的团队合作能力。
-
我们拥有中国一流的环境,我们拥有中国一流的技术,我们的目标是打造中国一流的团队。
-
DBA 未必是一个高薪的职业,但绝对是一个高压力的职业。
-
在遇到问题没有搞清楚具体原因之前,千万不要轻易重启数据库。
-
操作有风险,下手须慎重。
-
在淘宝这样高速发展的公司里,每一天都是一个挑战。我们都不得不去面对一些新的问题,我们唯有不断去提高自己,提供一些新的解决方案,to handle these problems。
每当看到这篇文章的时候,没有一次不会升起对这支团队的敬仰和羡慕,我下定决心立志加入这支团队。
从理论到实践
初涉企业级数据库架构
通过近两年的技术理论自学,对 Oracle 数据库理论有了一定的理解,但是理论归理论,实践归实践,我想验证我所学习和理解的 Oracle 技术,所以我决定参加了社会上的 Oracle 培训,培训实践选择再大三下期,老师是具有多年经验的 Oracle DBA,当时的学费需要 1W 多,对于家里来说也是非常大的一笔开支,当时大学一年的学费也只有 5000 左右,此时仍然非常感恩我的父母对我理想的支持。为期半年的培训,回想起那段培训的经历仍然历历在目,经常是早出晚归,天刚刚渐亮,寝室里的同学还在睡觉,我就要起床赶 2 个小时的公交去城里培训,培训的同学大都是已经参加工作想转行 DBA 的,或者是大四马上要毕业的学长。
通过培训,接触了更多志同道合的人,对 Oracle 的体系结构更加的深入理解,同时也了解企业级的数据库架构是怎么样的,对于我后来的校园招聘的笔试具有非常大的帮助作用,我仍然记得淘宝校园招聘的笔试最后一道题目就是如何构建高可用的企业系统架构。
折戟校园招聘
秋季校园招聘一般在国庆节后陆续开始,我提前 1 个月开始准备校园招聘,了解校园招聘的流程,关注各大互联网公司的校园宣讲时间,复习数据结构,编程算法,数据库原理,网络原理等基础计算机课程,因为这些都是校园招聘第一关需要考察的基础内容,这也是成为 DBA 必须要要具有的基础理论,往往很多想成为 DBA 的应届生所忽略的,这一点非常重要。
国庆后,我陆续参加了多家互联网公司的校园招聘,随着一次次的校园招聘经历,我也慢慢熟悉了这些互联网公司的招聘流程,网上投递简历—>通知笔试—>一面技术面—>二面综合面试,也可能是群面—>HR 面试,让我没有想到是 10 月份的奔波并没有带来结果,百度笔试挂掉,网易通过了笔试和一面技术面,在二面群面中挂掉,而淘宝做了笔试之后就没有消息了。
这让我有点心灰意冷,难道三年的努力就这样化为灰烬了吗,我开始把精力转向社会招聘,记得为了参加一次面试,从成都东南边坐车到成都西北边,差不多斜线横穿了成都,早上 8 点出发,中午差不多 12 点才到面试的公司,应聘公司的 HR 也被我的诚意打动,没有吃饭等着我做完笔试。
喜从天降
顺利拿到淘宝 DBA 的 offer
在十一月份参加了几次社会招聘后,也没有成功被录用,在一天中午突然接到了来自杭州的一个电话,让我准备视频面试,打来电话的人是我的启蒙导师,也是我后面的第一任主管-丹臣。这突如其来的消息让我兴奋不已,原来淘宝在四川的宣讲会,我的主管并没有来,所以我的试卷是在杭州改的。
约好了时间面试后,我内心非常激动,面试过程也比较顺利,我介绍我学习 Oracle 的经历,在大学里面做过的一些网站项目,意想不到的是,对我启蒙的那篇文章作者《阿里巴巴 DBA 成长之路》就坐在我的面前,而且丹臣也是四川眉山人(我姐姐嫁到了眉山),这让我很快进入了面试状态,接下来的问题也回答的比较满意,顺利通过了第一技术面试。
紧接着是第二技术面试,面试官是江枫,我一眼就认出来了,他,托雷,eygle 刚刚从美国参加完 OOW 回来,江枫问了我一些 Oracle 基础相关的问题,还记得其中一个问题是讲一讲 Oracle 数据段中 pectfree 和 pctused 这两个参数的含义,在最后一道综合题中没有回答出来,我很诚恳表示没有学习接触过相关技术知识,就这样二面技术面也通过了。
第三面是 HR 面,说来也是天意,我居然也第一眼认出了这位 HR(花名:玄渡),他参加了四川的校园宣讲会,我是在参加笔试的时候不经意记住了这位 HR,所以可以想象整个面试的氛围还是很融洽的,HR 问了一些在团队相处上的问题,最后一个问题是对阿里文化的讲解,我之前看过一本关于阿里巴巴文化的书,对阿里的武侠文化非常热爱,本人也非常喜欢金庸的武侠小说,特别敬仰乔峰这个角色,所以我对 HR 说我加入淘宝后能不能用乔峰这个花名,HR 笑着解释说“这个花名早就已经有人了”。就这样三面也顺利通过,一气呵成。
就在这一天(2009 年 11 月 15 日)我拿到了淘宝 DBA 团队的 offer,当时对我来说那天下午就像做了一场梦,我第一时间给在外省的母亲打了电话,发了短信给我大学里喜欢的女生,那一刻所有的一切付出都有了回报。
命运的安排
阿里云,为了无法计算的价值
2010 年加入淘宝成为 Oracle DBA 之后,恰好经历了阿里云的崛起,2012 年我从 Oracle DBA 转型为 MySQLDBA 开始支持阿里云 RDS,成为 RDS 最早一波创业者,此刻仍能够想起那段这一生都无法忘怀的创业时光。
阿里云数据库 CloudDBA 团队
2012 年 9 月,阿里云数据库开始对外提供服务,紧接着就需要在 11 月份支撑天猫双 11,承担天猫 20% 的订单量。如果用一个词来形容 2012 年的双 11,那就是肩挑背扛。很多商家对云需求强烈,但在迁移过程中,还是遇到了一些问题。当时阿里云数据库支持 MySQL 和 SQLServer 两类引擎,这两类数据库的上云迁移都不支持在线,以致用户的业务停机时间会非常长。记得有一个用户由于数据量特别大,为了加快迁移速度,其甚至把硬盘邮寄给了我们。短短一个月,我们就帮助用户手动迁移了数百台规模的数据库实例到云上。当然,这个问题现在已经不再存在,用阿里云的数据库迁移工具可以很方便完成不停机在线迁移工作。
通过这几年的技术演进,阿里云数据库不仅仅承担了 100% 天猫的订单处理,我们的产品也变得更加丰富和稳定可靠,涵盖了市面各种主流数据库类型,包括 MySQL、MongoDB、Redis 等,同时我们还自研了能满足高吞吐在线事务处理的关系型云数据库 POLARDB,支持单库容量扩展至上百 TB 以及计算引擎能力及存储能力的秒级扩展能力,对比 MySQL 有 6 倍性能提升。
云计算是全民的云计算,我们忠心希望用户在使用云计算的时候能够像使用水电煤一样简单。我们也会不断地将最佳实践沉淀到产品中,只有这样才能将其作用最大化、规模化、可复制化,让用户真正享受到技术红利,也期待更多的有志之士加入我们一起来完成这一项伟大的事业。
总结
回顾我大学里的学习生活,从大一开始立志成为一位 DBA,经过三年的准备,最后加上了一点点运气,这一切的一切好像命中注定一样,我只能谢天谢地,冥冥之中是老天爷在帮助着你。
对于大学里面的学生,我看到过很多同学在大学里找不到方向,盲盲碌碌到了大四的时候要么考研,要么找一份自己不是很喜欢的工作,所以提早立志是非常重要的。最近重温了一部电影《三傻大闹宝莱坞》,找一个自己喜欢的工作比什么都重要,通过自己的努力积累,最终你将会厚积薄发。
关于学习方法,技术一定要多实践,多总结,学会分享,尝试着去帮助需要帮助的人,这样你会成长的更加迅速,我所认识的成长飞快的人都是特别愿意帮助别人,愿意分享的人。