迄今为止我没有参与过任何面试,也不知道这是幸运仍是不幸。本文是依据我作为面试官在阅历了 40 多场面试后,总结出来的经历,我一共宣布过大约 25 个 offer。
流程总结
高级软件工程职位(以及其他相关人物,如数据工程和机器学习工程)的竞赛十分激烈,你需求认真地预备,并勤加操练。编程面试题一般都不会出现在日常作业中。这或许是软件工程岗位的面试与其他范畴最大的不同。
面试的流程大致为:
预备面试,包括刷编程考试题以及进步体系规划技能。
设法获取引荐信,或联络招聘人员,或直接去公司网站恳求职位。
假如拿到回复,则需求依照以下次序承受面试:
a.招聘人员联络你,确定职位以及面试日期。在这个阶段也能够评论薪资待遇。
b.电话挑选:只要一轮面试,一般包括编程测验。
c.现场面试:一系列的编程、规划与行为考察,一般面试你的人很或许会成为将来的搭档。
d.拿到选取告诉。
比较各家的选取告诉,然后逐一洽谈。
承受一家公司,回绝掉其他公司。挑选一个正式上班的日期。
流程的详细过程
下面,咱们来总结面试的各个阶段,以及咱们将在每个阶段评论的内容:
预备:在面试之前或刚递送简历时需求考虑的作业。你需求做好心理预备。
热身:面试要求的基础知识,预备编程测验。
操练:认真预备,联络公司和招聘人员。
面试:各个面试阶段的技巧。
交涉条件:最关键的一步,一切投入到预备中的时刻都将在此时表现出来。
承受选取告诉:终点线。
面试完毕后:关于完毕当时作业的一些主张。
下面,咱们就来仔细谈一谈每个阶段,以及与之相关的思想方法和面试相关活动。
预备
动机
问问自己:“我为什么要找新作业?”
你必须清楚自己寻求改动的原因。尽管不需求什么巨大或具体的方针,但已然你已决议花费许多时刻预备、计划和面试,那么必定是有原因的。你应该弄清楚这个原因。
只要找到这样的动机,你才有勇气面对被人回绝,并尽力做好各项预备。
挑选编程言语
为了在编程面试中脱颖而出,你必须挑选一门自己拿手的编程言语。以下是在挑选编程言语的时分,需求考虑的一些事项。
人物或职位特有的限制。
你需求依据恳求的人物类型,挑选一门最合适的言语。关于大多数软件工程人物来说,任何言语都能够。可是假如你恳求的职位是 iOS 开发或高频交易技能岗位,则面试中能够运用的言语或许并没有太大挑选。
挑选自己最拿手的编程言语。
挑选自己了解的言语能够节约学习另一门言语的时刻,减少在编程面试中犯错的时机,并且假如遇到有关言语细节的问题(比方 Java 的线程或 Python 的全局解说器锁),你也不用担心。
简练的言语
我强烈引荐你挑选一种赋有表现力且十分简练的言语,即使不是你最了解的言语。比方,Python 比 C 更好。在 30分钟的编程测验中,在白板上书写代码时,实现相同逻辑的处理计划,Python 之类的言语能够大幅减少代码行数。
其次,简练的编程言语更便利面试官理解逻辑,也能让你更快地发现小错误。
讲一个小故事:在读研究生期间,有一次参与某家抢手公司的实习面试,尽管我找到了处理计划,但来不及写完代码。最终面试官坦言,这个问题太复杂了,关于没有见过该题的人,运用Java等言语在25分钟之内编写出完好的计划的确十分困难,一起他还引荐了 Python。但这家公司仍然回绝了我!从那以后,我就换成了 Python,因而我强烈引荐 Python。
你不必为了面试深化学习某种言语。在上述实习面试中,当时我最喜爱的言语是 Java,我对面试官明确地说我也运用 Python,由于它很简练,但我不了解 Python 的细节,我很愿意编写处理计划并答复有关 Java 的问题。
争夺多个offer
我强烈主张你尽力争夺拿到多家公司的选取告诉。
多份选取告诉在手,你就更有底气与对方洽谈更好的薪酬。一般招聘人员会搜集有关其他 offer 的详细信息,以便为你争夺更好的薪酬。即使你一门心思只想进一家公司,拿到另一家公司的选取告诉也有助于你取得更高的薪资。
参与不同公司的面试,能够让你深化了解不同的作业文明、公司使命以及不同团队的作业内容。这是一个很难得的时机,或许会影响到你当时或未来的作业开展决议。
当手头的某个选取告诉快要到期的时分,假如你还在参与面试,而手头的另一份选取告诉书距离截止期限还有时刻,你就能够简略地拒掉前一个。当我因到期而回绝掉某个选取告诉时,一般对方都会延长时刻。
在填写恳求和参与面试的过程中,你的名字会记入招聘人员的体系。即使你没有经过面试,将来他们也有或许再次联络你,这样能够便利你组织面试。有些公司会依据你曩昔的表现,越过电话面试,乃至免除几轮面试。
多个选取告诉在手,你就能够灵活地做出更正确的挑选。也许异地的某个挑选现在并不重要,但将来或许会很重要,并且你还能够灵活地挑选在哪个城市作业。
更新简历
将新参与的项目和收成的经历添加到简历中。除非你恳求是的研究人员,并且需求展现你一切的论文,否则请将简历压缩到一页。
假如你参与过的项目许多,一页纸装不下,则能够考虑保留哪些内容以及删去哪些内容:
关联度
突出显现与你恳求的职位相关的技能与项目。关于机器学习工程职位来说,Android 项目的经历没有任何协助性。
影响力
突出显现能够展现你的责任范围、规划技能、方针完成度、项目或人员管理技能的项目。最好能包括可量化的信息。这些信息能够凸显你的技能熟练度以及水平,比运用流行语更有成效。
时效性
尽管学校的项目也很了不得,但招聘司理对你现在所做的作业更感兴趣。
公司的项目比个人项目更好,除非你的个人项目是在开源中开发的,并且具有严重的影响或被广泛选用。原因是,企业项目有更严厉的截止日期、资金风险,而人员与团队的合作也更具挑战。
可见性
展现公司以外的人能够看到的作业成果,比方向开源项目奉献代码,或宣布论文、公司新闻布告等。
请留意,面试官或许会问到有关简历中包括的项目的问题。你必须做好预备,说明切当的责任,并答复有关项目的具体问题。
在预备面试的过程中,你需求不断更新简历。或许距离你前次更新简历现已过了很久了。
体系规划
体系规划需求的预备比较少,由于大多数经历都来自作业,以及阅览有关该范畴最新开展的博客、文章和论文。与编程面试相比,体系规划面试的重要性取决于你恳求的职位。
从预备的角度来看,最好不要一次性做好一切预备。相反,从开端预备到正式参与面试,你能够考虑:
阅览有关规划的书本
Martin Kleppmann 的作品《Designing Data-IntensiveApplications》是一本关于如何进步规划技能的佳作。
有关面试的在线资源
donnemartin 的 System Design Primer 是一个很好的阅览资源,能够协助你快速回顾基础设施体系的基本规划准则。
阅览有关体系规划的论文或文章
https://paperswithcode.com:AI 论文精选
https://blog.acolyer.org
The Morning Paper
技能博客
http://highscalability.com
Netflix 的博客
几乎每个科技公司都有自己的博客,你能够挑选自己喜爱的阅览。
热身
刷编程题
鉴于现在编程面试的压力十分大,刷编程题成为了面试预备中最耗时的作业。因而,我主张尽快开端做预备,调整好心态,了解考题界面。
你能够挑选一些十分流行的编程测验网站,或专门的编程面试预备网站。
Leetcode:https://leetcode.com/
Hackerrank:https://www.hackerrank.com/
CodeWars:https://www.codewars.com/
我主张你从最简略的标题开端。即使你读完问题就能当即想到处理计划,也要试着去编写代码。你会惊奇于一个简略的问题或许有多少边际情况。
一般,我会做一些简略的标题,直到觉得它们太简略。我能够经过这种操练学习如何掩盖一切的边际情况,并且不需求太多思考。假如你觉得这一步太简略,能够直接越过。
你想取得什么?
列出你梦寐以求的作业应具备的优点。依照优先次序排列。以下是一些需求考虑的方面。
团队文明、司理、项目、机会
薪资
学习时机
作业开展时机
抱负职位、等级
事务范畴(产品、基础设施、机器学习)
地理位置
作业与日子的平衡
个人品牌建设或声誉
当然还有许多方面。当你拿到多个选取告诉时,就会很难做决议,每家公司都有各自的优缺点。收拾一份你参与面试的原因,以及你真正期望取得怎样的作业,能够协助你在日后做决议。
你想去哪里?
一般我会列出一切我想去的地方。不要觉得自己在异想天开。你只需求将这些公司的名字写下来,敢于测验才干改动自己的作业开展。
挨个查看你一直想去的一切公司,看看他们都有哪些空缺职位,以及他们的哪些城市在招人。
即使你没有接到对方的电话或没有经过面试,也不要担心。大不了就是被对方回绝。你能够给自己设定下限,却没人能够给你设定上限。
联络身边的朋友和搭档,了解他们是否满足自己的作业,是否能够引荐你去当时或曾经的公司作业。
了解创业生态体系的情况。
了解都有哪些新公司或快速开展的公司,阅览有关这些公司的文章,挑选开展方针与你有共识的公司。
曩昔收到的招聘人员的电子邮件。
向着方针动身
恳求作业
我主张依照以下次序恳求作业:
恳求周围的好友引荐。这样,至少招聘人员会仔细看一看你的简历。
查找曾经收到的招聘人员的电子邮件。
经过各个公司的招聘网页恳求作业。
注册各个求职网站。
联络招聘人员。
认真地预备编程测验
假如你觉得编程测验网站上的标题太简略,就从中等难度的标题开端。模拟在面试环境中处理问题。
统计时刻,看看自己处理编程问题需求多长时刻。测验在 30 分钟内完成中等难度的标题,最高难度的标题 为 45 分钟。一般面试的时刻就这么长。
刚开端的时分,需求的时刻必定更长,这很正常。你的方针是进步速度,但这需求一些操练。
说出你的处理计划,就像你在向面试官解说如何处理这个问题一样。
这一点请千万留意。
考虑各种挑选。你不仅需求解说逻辑算法,并且还需求说出每个处理计划的时刻和空间复杂度,任何算法都能够这样比较。
比及你想不出更好的处理计划时,再开端写代码。
不要梦想第一次测验就能取得正确的处理计划。真正的面试没有回头路。
不要经过点击提交来确认是否做对了。咱们正在模拟面试!经过阅览代码来查找错误,确保完成后的代码是正确的。咱们的方针是第一次测验无需任何修改就能够做对。
Copyright C 20092014 All Rights Reserved 版权所有 红树林教育科技有限服务公司 粤ICP备19148605号
地址:广东省广州市花都区 EMAIL:gzhsljykj@163.com
Powered by PHPYun.