软件工程师面试流程以及疫情封锁期间找到新工作的技巧
被裁员52天后,我很高兴地宣布,今天我正式加入CoderPad(https://www.coderpad.io),担任开发者布道师(工作内容涵盖市场营销、产品和开发)。我非常兴奋能与一群才华横溢的人共事,期待着学习新知识,并全力以赴。有趣的是,我之前面试的其中一家公司也在使用CoderPad,所以从求职者的角度体验一下也挺有意思的,不过抱歉!这并不是本文的重点。
鉴于我们正处于一个非常时期,我认为有必要谈谈在当今就业市场中寻找和找到工作(特别是软件开发/技术类工作)的话题。过去五周我学到了很多,想给正在寻找新工作的朋友们一些建议。
简单介绍一下我的背景——我上一份工作是一家票务/活动公司的资深软件工程师,远程办公。后来我被公司裁员了。了解这些信息有助于理解我的情况——比如我获得了哪些类型的面试机会,面试官问了我哪些问题等等。
在分享经验技巧之前,先介绍一下我求职过程中的一些数据:
- 申请人数:53
- 公司收到的进入第一轮面试的申请人数:18
- 申请被拒:12
- 招聘人员合作过的:7人
- 在线编程面试:5
-
参与过的代码项目:3个
-
白板访谈次数:4
-
进入最终面试但未获得录用:2
-
工作机会:3个
我不想透露我面试的具体公司,但我可以概括地告诉你——
- 一家大型银行
- 你以前可能在网上买过东西。
- 建筑软件公司
- 石油天然气数据公司
- 大型石油/天然气公司(不是超级大型,但规模很大)
- 法律软件公司
- 电力公司
- 一家网络安全公司
- 技术机构
- 营销公司
我住在德克萨斯州休斯顿,所以才去面试了那么多石油和天然气公司。当时我还在犹豫是继续远程办公还是在休斯顿找份工作。
申请职位:
软件工程师、高级软件工程师、软件开发人员、前端开发人员、UI开发人员、产品经理、项目经理、开发者布道师、实施工程师、Web开发人员
部分现场编程挑战:
- Fizz Buzz(我不知道为什么现在还有公司会用这个名字,哈哈)
- 编写一个 for 循环,按相反顺序遍历数组,并创建一个数组的数组,将相同的数字分组,例如 [[1,1], [5,5,5], [2,2], [21, 21]]
- 判断输入内容是否为回文(数字和字符串)
- 创建一个函数来判断一个数是否是 2 的幂。
- 将此 CSV 字符串转换为具有相同键和关联值的对象数组
一些白板讨论题:
- 从两个数组中,找出不属于任何一个数组的数字。
- 这个算法的效率如何?请解释如何改进或优化它(使用大O符号)。
- 如果采用这种方法,你会如何改进它?
- 构建购物车的抽象模型
- 请展示一下您将如何运用面向对象设计来设计一辆汽车。
- 请描述一下你最近参与的一个项目
- 为兽医诊所构建一个关系型数据库,用于显示预约信息以及其他任何您认为适用的内容。
需要带回家完成的项目:
- 用NodeJS构建一个简单的CRUD API
- 构建使用外部 API 处理数据并以图表形式显示的 UI 组件。
- 在此代码库中,修改一个方法,使其满足他们的需求。
好了,现在我们已经把这些都说清楚了,以下是我学到的一些东西,希望这些建议对你有所帮助,或者可以分享给正在面试的朋友:
使用 Glassdoor
这是了解某个职位薪资水平的好方法,如果有人之前经历过面试流程,你甚至可以大致了解他们可能会问哪些技术问题。我面试那家大型银行时就这么做了。结果他们问了我一个我事先准备好的问题。一方面我觉得这样做不对,你知道,有点道德优越感。但另一方面我又想,既然网上信息这么多,做好准备又有什么错呢?
当你真正需要它的时候,LinkedIn 真的非常棒
有些人对LinkedIn评价不高。我以前工作的时候也从没怎么用过LinkedIn。但这次找工作期间,我大量使用了LinkedIn,发现它确实有几个优点。首先,它的职位搜索功能非常棒,可以按地点和职位搜索。其次,快速申请功能让申请多个职位变得非常容易。大多数职位不需要求职信,可能只需要回答一两个问题——所以如果你真的想的话,一个小时申请30个职位也很容易。最后,你的个人资料能获得的浏览量非常惊人。我每周至少会收到三四个招聘人员的联系,询问他们觉得我适合的职位。虽然不是所有职位都适合我,但这仍然是一件令人欣喜的事情。
招聘人员太棒了!
在此之前,我从未与猎头打过交道,因为我以前从未有过这样的经历。过去,我曾被成百上千(真的不是开玩笑)的猎头骚扰,他们问我是否在寻找新的工作机会,或者说我是某个职位的完美人选。我总是简单地回答“不用了,谢谢”。
但我认为,对我求职帮助最大的还是猎头。他们能让你跳过公司面试的环节,因为你已经通过了“筛选”。而且他们的职责就是帮助你。最终,如果你被录用,他们就能赚钱,所以尽一切努力帮助你成功符合他们的利益。由于这是他们的全职工作,他们对市场非常了解,知道你适合哪些职位,并且会帮助你准备面试。话虽如此,我其实并没有通过猎头找到CoderPad的工作,但我之前收到的其他offer都是通过猎头获得的。
你需要练习 LeetCode 题库和技术面试。
无论你做什么,技术面试总是令人紧张的。所以一定要做好准备!多做些 LeetCode 题——据我所知,大多数公司问的都是简单到中等难度的问题。而且,如果你练习得足够多,很可能会被问到你以前解决过的问题。我认为,如果你申请的是 FANG 公司和高级工程职位(比如工程总监),那么“难题”才会开始出现,因为他们要处理规模极其庞大的问题。
还要熟悉一些技术面试用的IDE。你会遇到很多现场编程面试。不妨试试CoderPad ;) https://www.coderpad.io
我经常发现 LeetCode 上的题目和实际工作中遇到的问题完全没有相似之处。我解决 LeetCode 题目的思路和处理软件工程师日常任务的思路截然不同。准备和练习这些题目能帮助我更快地适应这种思路转换。
想出一些有创意的脱颖而出的方法。
你要和数百人竞争一份工作。想想怎样才能在求职申请中脱颖而出。一种方法是像我之前提到的那样,利用招聘人员来跳过排队环节,但我发现真正有效的方法是在我的网站上专门为某个公司和招聘经理创建一个页面。
我可以给你看看我为 CoderPad 做的一个页面:https://www.lukeduncan.me/coderpad — 我还没问过这是否有帮助,但我想肯定不会有坏处。这表明你在申请上投入了时间和精力,而且是获得面试机会的好方法。我过去也用这种方法取得了很大的成功。在我看来,这让你看起来像一个人,而不仅仅是一份申请。
把那些流行词汇写进你的简历,并说明你在之前的求职工作中是如何运用这些流行词汇的。
招聘人员和公司不仅关注你掌握的特定语言,也关注你过往的工作经历。务必具体说明你使用过哪些语言以及你用它们取得了哪些成就。以下是我简历中的一个例子:
“为 Ticketbud 的企业级客户构建定制解决方案和功能,利用 Ruby on Rails 和 Javascript 等技术,开辟了新的收入渠道并提高了客户留存率。”
招聘人员到处都在寻找这些热门词汇,将它们添加到你的简历中会为你带来更多机会。
从最终面试中获取反馈。
在这个过程中,我进入了几轮最终面试,但最终都没拿到offer。这确实让人很沮丧,尤其是在离成功只差一轮的时候。但为了继续前进并吸取经验,我开始主动询问落选的原因,以及他们喜欢我什么、不喜欢我什么。最终,我把这些最终面试的反馈运用到了其他机会中。这真的能帮助你成长为一名更优秀的开发者、思考者和求职者!
我曾经/现在都遇到过一个很大的问题:我脑海中会浮现出一个问题的解决方案,这本身没问题。但是当我开始描述这个方案时,一些我可能遗漏的细节就会涌现出来,然后我就会把它们也加进去。于是,我的答案开始变得杂乱无章,最终变得难以理解。我在一次面试中被拒后得到了这样的反馈,并以此来提醒自己,在之后的面试中,不要再犯同样的错误。
联系我!
就是这样。如果您对我的面试有任何疑问,或者有其他技巧想要分享(我会将它们添加到这篇文章中),或者有兴趣在面试流程中使用 CoderPad(在当今环境下,它非常适合远程招聘)——我很乐意与您交流!请发送电子邮件至luke@coderpad.io
现在大家都不容易,所以如果有什么我能帮上忙的,我洗耳恭听!
注意安全。
卢克