我的面试经历分享

首先交代一下我的情况:本科自动化,硕士cs,大三算起CV经验8年,DL经验1年。虽说延毕了两年但也是当博士培养,对自己的研究能力有一定的自信,非常热爱自己的研究方向。硕士毕业后进入创业公司做了两年的项目研发,和leader两个人单打独斗,什么都要干。期间也面试过很多其他人,所以会从面试者和面试官两个角度来看。

需要特别说明的是,我的选择有很大的个人因素在,希望大家更多是作为参考而不是指导去读。而且我这篇主要是对自己的复盘,我只是一个工作了两年的新社畜,肯定会有很大的局限性。这篇的读者范围我假设不超过我的工作年限。

另外,本文充斥着主流成功学观点,我不是社会研究员更不是专门做咨询的,不可能给所有人提供解决方案,如果观念不合不看就是了。

面试的战略目标

清楚自己的优势和劣势

面试其实就是在向公司推销你自己。如果你是一个推销员,你首先要非常了解你手中的产品,它的优势是什么,凭什么别人要选择它而不是别的竞品,它有可能在哪些地方被挑刺,要如何应对。

我那阵子因为长期做着我非常不擅长的工程工作,一度对自己非常没有信心,于是工作状态也很差。我的leader找我谈话,他认为我相比于做事,更适合思考。我很有自己的见解和想法,应该更多表现出来,让老板们看到。这是我开始重新认识自我的契机。

我在认识自我的路上迷茫了很长时间。一开始我想起有个MBTI人格测试,我给自己和周围一圈朋友都测了一下,基本上他们都在从事自己人格推荐的性质的工作,除了我!但是ENTP的职业建议里,唯一还符合我的职业理想道路的只有——当老板。不过MBTI人格测试最大的问题是,它测的其实是你的思维和性格偏向,但是实际上你在工作中用到的更多的是你的能力。MBTI给我唯一一个有用的建议是:ENTP在处于更高位置或者声音能被更高位置的人听到的时候可以发挥优势,但他们通常很难在到达这个位置的路上坚持下去。

在当时给我起到更大作用的是能力识别器。这个我写过另一篇专门的文章可以参考:https://blog.konata.co/?p=131 ,在此不再赘述,不过希望大家有空可以好好了解一下这个盖洛普优势识别器。

回到面试,在对自我有更充分的认识以后,就要会在面试中扬长避短。我的优势是对项目整体的把控和思考,不足是对于算法和前沿研究的了解,劣势是工程能力。对于想做研发工作的人来说这个不足是很致命的,是一定要补上的,所以我在下班后重点把领域相关的所有算法都过了一遍。

我的另一个优势是脑子快反应快,这个对于面试是非常大的优势,所以要在面试前调整好心态调动全身的注意力。我用的心理战术是把面试当成谈恋爱!我就是来夺取面试官(想要和我共事)的芳心的!

最大的劣势是工程能力,由于欠缺太多我也不喜欢太工程化的工作,基本上战略性放弃了。不过即使放弃刷题也不要放弃做题,在做题中要考察的除了写代码能力还有解决问题的思维方式,包括沟通风格。遇到有点卡住的问题也不妨先讲一下初步的思路,面试官理应给予一定的引导。总之积极面对问题的态度才是可取的。退一万步说,代码可以写得差,但不能写不出。

找准自己的定位

了解了产品的优缺点以后,第二步就是,你要把这样的产品卖给谁。其实先确定目标客户还是先有产品在开发阶段是个循环迭代的关系,不过对我们推销员来说,产品已经成型了,我们只要负责寻找目标客户就可以了。

之前和leader的那次谈话之后我非常触动,我发现我再次犯了硕士期间同样的错误:在战术方向努力了太久,却没有在战略方向下过心思。我工作期间的努力方向都是如何更好完成工作,却没有去想我究竟该做什么工作。我在和leader一起做这个项目的时候,我是贡献了非常多的方向上的建议的,但是在老板们眼里我是一个算法工程师,这不是我负责的事情。我在本职工作方面就是产出不够好,完成得不够快。我刚入职的时候,职业规划就是从工程师做到资深,但CTO评价我不适合做技术,而我的leader也和我说做技术是很辛苦的,需要不断追工业界的最新进度。不过那时候我觉得我不读博退而求其次做研发已经是非常大的让步了,坚决不肯去做PM。现在我反而想通了,我可能真的很适合做产品落地方向的工作,因为我的想法比较多,沟通能力也比较强。并不是只有研发和工程两个方向的,另一个对公司来说很重要但是应届生容易忽视的方向还是市场需求——这是无论你做研发还是工程都无法避开的。

AI算法工程师大致分为几种类型:

  • 研究型:各大公司的实验室,如阿里达摩院。以发paper为主要工作,博士为主,和高校的区别是研究的课题会更接近公司的战略发展方向。
  • 研发型:既需要和市场需求对接,又要有一定的研发能力,要有技术壁垒和竞争力。
  • 工程型:和公司产品需求直接对接,要有快速部署和解决问题的能力。对研发能力要求较小,不容易打出差异化和竞争力,能用就行,越快越好。
  • 全面型:从研发到落地一站式服务。这种要求没有短板,各方面都精通,适合全才。有信心胜任的话非常锻炼人,你就是未来的CTO!

我做研究又不行,工程也很菜,所以我肯定适合做研发。相比于工程型,研发型会更自由一些,你可以选择有前景、能做出技术壁垒的领域,那么也需要对自己的选择负责,解决的问题也更有挑战性。对于研发型的工程师,我认为需要对业务和业界发展有充分了解,也要有自己的思考。同时要重视工程,这是我以前没做好的,直到我遇到一个工程能力很强的实习生我才开始意识到工程能力的重要性。工欲善其事,必先利其器。

另一个是关于职业发展,首先要有一个意识就是,所有公司都是金字塔结构的。为什么会卷,就是越往上位置越少,除非是一个飞速发展的新公司。所谓的35岁失业其实就是没有往上的那些人被更年轻便宜的新劳动力取代。仅从工作角度来看,一个人做了五六年什么都没积累那确实挺菜的……

算法工程师往上走,主要的分支就是:

  • 管理型:对管理能力要求比较高,需要参与公司决策。
  • 技术领导型:当项目的owner,然后当技术部门的leader。需要有一定的管理能力,不过最重要的还是有对技术的把控力。
  • 资深工程师:在技术方面深入钻研,成为技术专家。提供解决方案或解决最难的任务。

一般的公司不太有纯粹的管理人员或者技术专家,最多的是既需要有管理能力又要有技术能力的技术领导。因为大家都是做技术上去的,主要需要的就是额外花时间学习一些项目管理,团队合作的知识。而对我来说就是学会把活干好,毕竟就算当了领导不用自己动手了,你也得自己会才能指导别人做出来。我在长期和拖延以及自我抗争的过程中看过太多项目管理的内容了,可以说是纸上谈兵第一人。

为什么面试要写这些,因为真的会被问到职业规划。职业规划很重要,我曾经看过一个人写的,他在p6的时候,目标是p7,而他的leader和他说,你应该从p8的角度看问题。他发现当他把目标定为p8,他很多想法都不一样了。在面试的过程中,如果你能表现出比较有远见而不是只是把布置给自己的任务完成,也是非常加分的点。

我在工作中有过一个瞬间:觉得我硕士论文很垃圾,它现在竟然只是我这个项目里一个微不足道的小问题。我在硕士期间也有过这么一个觉得本科论文很垃圾的时刻——它居然只是我硕士CV课大作业的其中一个project。我在这样的瞬间,发现了自己的进步。于是我问自己:如果我要两年内觉得现在做的事情很垃圾,我该怎么做?很明显我不该留在这里,于是我打算去更高的平台做更厉害的技术。

准备面试

写简历,投出去

写简历是我卡了非常久的一个阶段,我在今年初对提薪幅度不满以后就愤然写了一个简历,但是写完已经过了大半年。我的建议就是,简历写得越早越好,不需要等到找工作才开始写。简历就像LinkedIn,是你对外的门面,你职业生涯的记录。

我在写简历的时候遇到最大的困难就是项目经历。我这个项目做了两年,很复杂但又很单一。于是我开始了几个月的面向简历编程。当时公司也在考虑我们项目组的地位,开始尝试和隔壁组结合,于是我拍拍小脑瓜提了一个方向就开始做(实际情况当然这部分也是经历了很多事情的,毕竟公司不是我做主,总之最后有机会做新方向的尝试了)。我在做这个项目的时候收获了非常多:

  • 我重新开始泛读GAN相关的论文,在项目中已经用过小半年之后我再读,对其中很多内容的理解都上了一个台阶
  • 简历多了一个完全和之前方向不同但是内核相关的项目经历,面试不会无话可说,每个项目都可以聊很多。
  • 加入了一个GAN相关的兴趣小组并私下联系组织方的PM投出了第一份简历

写简历就像写论文,你得有东西才能写出来。所以尽早push自己写简历的好处就是可以清楚意识到不足,指明了方向又增加紧迫感。

除了添加新项目,我还做了旧项目的拆分,以引入GAN为切入点,把我持续了两年的项目分成了两个,第一个项目使用传统CV方法,第二个项目使用GAN技术。我基本上侧重讲第二个项目和其相应的落地成果(落地成果是非常非常重要的内容,有的话一定要写上!),在讲第二个项目的时候也有被问起为什么不用传统方法,这时候我就会讲第一个项目,和我当时使用传统方法遇到的问题。

另一点就是写好了要给至少一个工作经验比你丰富的人帮忙看,让对方提出一些修改意见。当然写的过程中也可以问,我的简历就是在某金帮助下完成的。对我来说这一步实在是太难太难了……即使后面日均一面都觉得比写简历轻松……

写好了简历以后马上投出去,不要犹豫!越早开始第一轮面试越好!我已经是非常顺利的情况,第二个面试的岗位就是最后去的岗位,即使这样依然拖了一个多月。

大部分人会建议从不打算去的公司开始面起,练习一下面试技巧。这个做法肯定是有优点的,不过缺点就是会把战线拖太长,对我来说因为信心比较足就直接从最想去的岗位开始试了。另外就是我这个人做事三分钟热度,我要把最热情最积极的状态留给我最想去的公司。事后证明这个选择对我来说是正确的,面到后面真的非常累。

面试主要有几种途径,自己投,通过内推,通过猎头。工作年限短的人真心不推荐猎头,除非你有非常靠谱的熟人。内推最优先,多问问身边的人。内推可以帮你先把控一下简历质量和匹配度,还可以帮忙催进度,是最好的选择。另外公司一般会有伯乐奖,你成功进来,内推的朋友也会拿到奖金,不需要觉得欠对方太大的人情,皆大欢喜!注册招聘app时记得保护好隐私。面试太多安排不过来的时候也可以暂时隐藏自己的简历。

边复习,边面试

我当时因为社招实在是太忙了,实在抽不出时间刷leetcode,代码题都答得很差。还好大部分面试官也可以理解,没有特地卡我(不过我得知确实会在面试评语提到工程能力稍弱)。少数因为代码差没进下一面的岗位,本身工程度就高,不适合我,也算是双向筛选了。不过面了几次以后我还是老老实实去复习了一下非常容易被问到的深度/广度遍历,快排这些知识。无论再怎么不复习,绝对不要问过的问题事后不去查答案,再次被问倒。虽然我没遇到这样的情况,不过如果我特地安排了两次面试,第二次还是回答不上来一个很基础回去搜索一下就能知道的问题的话,我会觉得对方工作态度有问题。

边复习边面试的另一个好处就是,不同公司相似岗位问的问题真的挺像的。所以A司的面经完全可以在B司用上。而且其实聪明的你,面试个两三次就可以大概找到提问规律了。相比于下班挤出时间毫无方向性地准备,效率上是碾压的。

当然,当你开始面试以后,尤其是没有裸辞,要从下班时间里挤出时间面试,是真的非常累。所以也要自己权衡好。最关键的是,在公司要硬气一点,公司对你越不满难道不是你可以走得更顺利吗?(也不要太过分就是,遵纪守法哈)

说到这个我想讲个题外话。我一开始不辞职真的有很大的心理障碍是这个项目离不开我。我也确实是等到招到了新同事才放心离开,毕竟是我亲手带大的项目。但是,要记住,永远把自己放在第一位,公司不是你的公司,你的个人发展重于一切。如果你真的这么重要,公司肯定会努力留住你,就不会让你想走了是吧。

社招vs校招

我在两年前就投过同一个公司,当时一面都没过。我没有实习,不去刷题,paper也不行,毫无优势,甚至在我司实习都答辩了三次才转正。校招和社招最大的区别就是,前者看重的是你的潜力,你是否值得培养,而后者看重的是你的实力,最好来了就可以马上干活。当然如果能招到马上就可以干活的应届生自然是最好,这也是为什么实习经历如此重要。

我建议所有应届生重视实习,即使是小公司的实习都比没有好。公司里和学校面临的问题很不一样,而且有项目经历,即使不是你主导的,也可以丰富你的简历。对你所做的项目要有好奇心,要去了解每一个细节,最好能有自己的思考。尤其是这个项目的实施目标是什么,要解决什么问题,整个流程是怎样,遇到过什么比较大的困难,是怎么解决的,这些你在工作期间就应该心里有数。这不只是为了面试的时候有话可说,更是做好工作需要的深度思考。要记住,面试是为了尽可能展示出你的所有优势,而不是为了迎合面试官才去想那些问题。工作,才是最重要的。

对于正式员工来说,除了以上说到的内容,还需要注意培养自己的团队协作和带队能力。一个奇怪的点是:你如果做一个基层工作做得越来越好,并不能帮助你成为更好的管理者。即使你由于工作能力出众被提拔上去,你也缺乏对应的管理知识。这个是必须额外去点技能树的,要么提前点,要么升上去再补课。那么从面试官的角度来说,自然会倾向于更有潜力的候选人。不过这边不要太过,别和对方说你打算以后创业当老板什么的,人家还是想要招能够长期稳定呆在公司的人的。

面试进行时

硬技能,软技能

我刚刚有讲一个比喻,面试就像玩乙女游戏,你就是在攻略面试官的心。这是非常贴切的形容,只不过你需要散发的是你工作上的魅力。你想一想你讨厌的同事:能力不行,做事情没有条理,沟通困难,喜欢搞办公室政治,等等。你在面试时就千万不要给对方留下类似的印象。

技术型工作还是更注重硬技能的,例如工程能力,研发能力,不过面试最难的也是筛选硬技能,考编程题太应试了,无法衡量一个人解决问题的能力。我们面试的时候出了一个不算太难,但是需要空出几小时看论文做的题目。这个题目非常有趣,而且有两题很简单。不过去做的不多,这个当然也有我们区区小公司竟然敢出项目题的原因在,不过我们想找的还是对新技术有一定的好奇心和自驱力的人,可以说是很合适的相互筛选了。我在面试期间也因为工程表现较差加试了一道项目题。我的建议还是无论去不去都尽可能完成好,除非对方出题出得太过分,明显想白嫖你的工作成果。而且项目题非常能反映他们想要怎样的人,也是你了解未来工作的一个渠道。记住,找工作是相互选择。

如果你是做DL算法并且打算做偏研发的工作,一定要把模型搞透!你要能讲清楚你为什么用这个模型,它原理是什么,和类似的其他模型相比有什么不同,作者做某些特定的改进有什么目的,它在实际使用过程中可能遇到什么问题,你打算如何改进。我在面技术leader面的时候被问了超多非常有前瞻性的问题,甚至已经是我靠自己根本想不到的,只能靠应变来回答。也许这就是硕士和博士最大的区别,硕士需要有解决问题的能力,但博士需要定义问题。希望这样的能力我能够在未来的工作中锻炼出来吧。

软技能的话,更多是你对自己领域的趋势和发展的了解程度、项目上的深度思考、解决问题的思路、交流表达的顺畅度和条理性等。如果本来就很擅长,你可以在面试中想办法体现出这些优势。不擅长的话千万要找朋友提前练习好,多想想可能遇到的问题,提前准备好答案,写下来,面试前看一看。能搜到的常问的一些问题都想想。

我被问过一个问题,你认为研究员需要对自己的业务有了解吗?我当时的回答是:“我认为如果是一个人做项目,是肯定要对业务有充分的了解的,因为产品部对技术能够做到什么地步没有非常明确的概念,了解产品和业务层面可以让研究人员在技术落地上有更多的灵感,我也是在和产品组的人深入交流讨论了很多次以后想到的现在这个落地方向。但是如果以一个团队为单位,团队中的人可以各自发挥自己的长处,让有的人负责更深入的研究,有的人负责和业务的交接,我自己也对业务方面有很浓厚的兴趣,愿意承担这样的角色。”这是我没有准备过的问题,但我也是出于这样的想法才打算跳槽的。

如何提问

我这个方向(GAN)太偏了,具体的题目我也不展开说了,有些基本上必问的问题最好提前准备。跳槽一定会被问原因,即使因为家庭原因跳槽也要表达现在已经打算定下来,否则你今天会为了家庭跳槽明天也可能跳。也不要太直接说之前公司的坏话。可以说寻求更大的平台之类的。我还很经常被问到为什么延毕和为什么当时毕业去了小公司。

面试完有一个固定环节是,面试官会问你,你有什么问题要问我吗?这个倒是值得展开说一说。

首先这个环节虽然有一定的考核因素在,但是更重要的是这是你最直接的了解你报的岗位对你合不合适的机会。面试是相互选择的过程,再想去的公司也有不同的岗位可以选。一定要优先问你最关心的问题。

另一个要注意的点是,你最好对面试官的身份有个大概的估计,比如薪资结构适合问hr,工作氛围适合问初试面试官,部门战略方向适合问终面leader。

以我自己为例:
初面,工程师:问了工作内容,大致的项目方向,部门人员组成结构
二面,高工:问你们如何在这么快的情况下把这个应用落地,了解公司资源的支持情况
三面,算法组老大:问我们部门在公司的定位是怎样的,如何兼顾研发和落地,大团队的管理合作和配合
四面,总负责人:(以为三面是终面,把所有大问题都在三面问完了只好瞎扯,对面也很赶时间的样子也有点答非所问)对gan这个领域的落地前景有哪些(有很多就是了)在xx领域的落地有考虑吗(公司有其他部门负责那个方向)你对下属有什么期待(我们团队可以让大家发挥各自的优势,你能做到的比你想象中多)
hr面:薪资结构,接下来大概什么时候能有初步结果,入职安排等

总之在面试的过程中越发了解了这个岗位的工作情况,觉得非常适合自己,也和hr展现了这一点。虽然可能会被压价,但是确实是太喜欢这个岗位了。好在结果没有低于预期。

offer的选择

除非你非常清楚你要什么,否则应届生/工作经验较短,还是推荐尽可能去大一点的公司。大公司必然会聚集更多厉害的人,这是很好的学习机会。大公司本身也是很好的跳板。我因为现在工资太低,在谈薪资的时候真的非常吃亏。还有一点就是小公司职业天花板很低,因为太扁平了,除非你能遇到快速发展中的项目,否则很难晋升。

小公司的好处也有:你可以刚入职就接手项目的核心工作,不需要从螺丝钉当起。小公司缺人,什么都要自己做,还是很锻炼人的,对整个业务流程也会更熟悉,我认为这也是我相比于校招时面试的很大优势。另外,小公司相对来说环境单纯一些,没那么多内斗,真有的话赶紧逃。

选offer的时候一定要警惕hr!她们为了招人什么饼都能画!给你面试的第一个人很大概率是到时候带你干活的,第二/三个会是你的直属领导,他们在面试时给你的感觉是什么?太有压迫感的话要考虑一下你未来的路。当然也有故意给对方施压,为了压价/测试对方应对压力的能力的情况,这个你自己把握了,如果不喜欢这样的风格我的建议还是:快逃.jpg

郑重附上豆豉站长写的offer谈判技巧(变通性运用):https://blog.douchi.space/?p=272

另外关于互联网公司和传统公司的选择,我曾经收集过大家的建议。可以参考这条下面的讨论:https://moresci.sale/web/statuses/105421627401891625

总结来说就是传统公司的技术会比较容易脱节,如果你要不被落下需要自驱力比较强。

2 评论

留下评论