前端工程师面试
面试真糟糕!这个过程既耗时又耗精力,而且很多时候还会给我们带来精神压力。但是,你得做该做的事!
为了让这个过程不那么紧张,更愉快,我想在这里提出一些对我有用的要点。
有目的的面试:
- 甚至在你开始申请工作之前,就想想:
- 您下一份工作想寻找什么样的工作?
- 您最喜欢做什么工作?
- 您最关心什么?例如:薪水、工程师文化、开源项目、免费食物🍕
很多时候我们只是想要一份工作。但从长远来看,明确自己想要什么样的工作至关重要。而且,这样更容易排除那些你不想去的公司。
简历:
简历是你的第一卖点。要简洁明了,但又要引人注目。一般来说,你应该准备一份一页纸的简历,其中包含以下部分:
- 联系方式
- 工作经历
- 成就
- 技术技能
- 教育
例如,请在此处查看我的简历。
零经验者/应届毕业生:
每个人都是从零开始的,他们都是靠自己努力奋斗的。不要因为没有经验而停滞不前。相反,要更积极地展示你的技能。做项目——任何项目都可以。只要你能从中汲取经验,哪个项目都行。写博客,发推特。让自己成为众人瞩目的焦点。如果你是应届毕业生或零经验人士,做些业余项目会对你最有帮助。了解不同的领域,不必太深奥。展现你的好奇心。
话虽如此,以下是在参加任何前端面试之前你必须了解的事情:
- JavaScript 基本概念——事件处理、冒泡、块级作用域 vs 函数式作用域、Promise 以及 CSS 基础知识。如果你不了解 CSS 网格或弹性框之类的 CSS 框架也没关系。反正也没人记得这些玩意儿。大家都会去 Google 一下。
- 对所选的前端框架有充分的理解。例如:React - 了解如何组合组件、传递 props、哪种生命周期方法适用于特定场景,以及性能优化。了解行业最佳实践。(查看 GitHub 上的代码库了解它们)。您可以访问所有内容。
对于有经验的人来说:
公司会对你抱有更高的期望。你不能搞砸基本的 JavaScript 和 CSS 部分。你必须擅长编写代码、构建组件,并且默认遵循最佳实践。前端开发和 Node.js 紧密相关。所以要准备好回答 Node.js 的概念性问题。以下是你应该了解的一些事项:
- 节点工作流程
- 服务器端渲染
- Redux / 复杂的状态管理
- GraphQL
- 性能优化
- 本机浏览器/ DOM 操作(如历史记录、浏览器事件、requestAnimationFrame 等)
面试流程:
大多数公司将遵循以下标准流程:
- 初次招聘人员致电
- 手机屏幕
- 更多电话面试/代码测试/黑客等级测试
- 现场面试
至少尝试几次之后,如果你还活着,恭喜你!你已经准备好迎接下一次面试了。
好了!让我们分解一下面试流程,看看每个步骤该如何进行。
初次招聘人员致电:
这一步是为了评估你的整体兴趣,看看你是否能胜任这个职位。快速完成这一轮,不要想太多。怎么做?准备好回答以下问题:
- 你目前在忙什么?
- 您对下一份工作有什么期望?
- 您为什么要转换(如果要转换的话)?
- 你目前在做什么?你参与过哪些项目?
- 您对我们公司的什么感兴趣?
- 您下一轮什么时候有空
准备好这些问题,你应该没问题。对于像“你为什么想在这家公司工作”这样的问题,你需要做一些调查。面试前花5分钟时间访问公司网站,了解他们的业务和项目。
你肯定不想花太多时间准备这一轮面试。所以,多练习,确保面试顺利。
手机屏幕:
在这里,你可能会与招聘经理或招聘团队的工程师交谈。这一轮面试可能会有在线编程练习,或者只是一对一的口头提问,面试时间可能从30分钟到1小时不等。提前询问面试的安排,以便做好准备。
面试时,多问问题。弄清楚问题所在。然后,想出一个解决方案并进行讲解。再次提问。问问他们是否认为这是正确的方法。如果答案是否定的,他们会引导你走向正确的方向,有时是巧妙的,有时是直接的。仔细倾听,寻找线索。这也是一个了解你未来同事的机会。你可以了解他们是随和的、严肃的、粗鲁的,还是其他任何性格特征。
在练习中,如果你的任务是前端工作,请展示你的编程技能,遵循最佳实践,进行一些优化,并处理一些边缘情况。如果你是应届毕业生或没有经验,你的业余项目会在这一轮中对你有很大帮助。如果是算法练习,那么希望你已经解决了足够多的 LeetCode 题目,足以通过这一轮。
如果你是应届毕业生或刚刚开始工作,请确保你知道如何处理字符串、数组操作和递归。查看Brian Holt 的GitHub 代码,了解排序和递归算法。它非常有价值!
最后,准备几个可以问面试官的问题。很多人被问到有什么问题时会感到尴尬。这是你了解面试过程的机会,也能表明你对这个职位、团队和公司很感兴趣。以下是一些你可以在面试结束时提出的问题:
- 接下来的步骤是什么?整个过程需要多长时间?(这个问题的答案可能会提示你是否进入下一轮)
- 公司文化怎么样?
- 团队有多大?
- 我将面试哪个团队?
- 目前正在进行哪些项目?
代码测试/黑客排名:
许多公司都会安排这一轮面试,面试官要么会进行家庭作业测试,要么会进行现场结对编程。测试内容可以是 FE 相关的练习,也可以是算法问题。在任何地方,遵循最佳实践总是好的,但在这里,如果是算法问题,请先尝试解决它。确保逻辑正确。你可以在电话面试中展示你的编程技能。如果是 FE 相关的任务,则要同时关注最佳实践和解决问题。
干得好!大多数人都达不到这里。但是,如果你通过了以上所有步骤,说明公司已经对你很满意了,你被录用的可能性很大。
现场:
为了准备现场面试,请练习不使用电脑编写代码,因为面试中会有很多白板练习。练习的内容可能很多。让自己能够轻松地在白板或纸上表达自己的想法。练习一些算法题。此外,在面试前几天询问面试结构。是HTML、CSS类型的问题,还是JavaScript或算法问题。如果你事先知道,就不会那么紧张。
做练习的时候,把想法大声说出来。记住最终目标,不要太纠结于细节。如果括号没填对也没关系。告诉他们你解决问题的方法。最重要的是,试着把大问题分解成小问题,最终解决它!
恭喜!希望你现在已经收到理想公司的 offer 了。干杯!!有任何疑问,可以给我发邮件或者在推特上联系我,或者直接打个招呼就好。
有用的资源:
- https://leetcode.com/
- 设计模式 - https://www.educative.io/courses/grokking-the-system-design-interview
- 简历样本 - https://github.com/akshar07/Resume/blob/master/AksharTakle-%20Resume%20%20copy.pdf
- CS 算法 - https://btholt.github.io/four-semesters-of-cs/