📜  准备编码面试的最佳技巧和策略

📅  最后修改于: 2021-10-19 05:10:06             🧑  作者: Mango

编码面试的准备工作在面试前几个月就开始了。你必须获得正确的经验,在校外建立项目,寻找实习机会,做小项目来巩固你对关键概念的理解,练习解释代码等等。我们知道准备技术面试很困难,我们都需要一些指导才能开始朝着正确的方向准备。为了解决这个问题并消除您的疑虑——在本文中,我们将讨论一些有助于您有效应对编码面试准备过程的要点。以下是一个人在 IT 公司工作所需的一些基本知识

准备编码面试的最佳技巧和策略

1. 创建一份好的简历:创建一份好的简历意味着您的简历应该能够通过申请人跟踪系统 (ATS) 的初步筛选,该系统被编程为匹配职位描述中的关键字。您的简历应仅包含与职位描述相关的信息,并且也应突出显示,因为招聘人员会在几秒钟内浏览您的简历。例如——将职位描述的职位名称放在你名字的正上方,这样 ATS 将你的简历排名更高,招聘人员可以立即观察到。

您不能假设您过去的角色和职责正是您未来的员工正在寻找的。查看 6-7 份工作描述并标记所需的最常见的职责、技能和资格。只有这样,才能创建一份与该研究相关的简历。在你的工作经历描述中,尽量展示你做了什么,你是怎么做的,结果是什么(结果应该是可衡量的)。不要为了投入你的非技术爱好而切断技术路线。

在在线门户上上传您的简历时,请确保您的简历 PDF 包含您的姓名和经验年份。如果你有经验,简历中的经验部分应该高于所有部分,在教育部分,只提到你最近的资格。在技能部分,不要放明显的东西,这意味着如果你写过你知道Python那么只放工作特别需要的库,而不是一切。

项目部分对于大学生或应届毕业生来说真的很重要,在做之前要好好考虑。许多候选人错误地添加了许多小而不起眼的项目,不要这样做,并尝试包括您自己构建的少数(2-4 个)但好的项目。您必须了解有关项目的所有信息,例如“您在制作项目时遇到了哪些问题以及您是如何解决这些问题的?”、“您有多少时间能够提出解决方案以及提出这个问题的原因是什么?解决方案?”、“效率如何?”、“制作这个项目时使用了哪种技术?”只有当你自己解决这些问题并给它适当的时间时,你才能解决这些问题。不一定非得有一些非常好的项目,但无论你做了什么,你都应该了解它的一切,而且它应该在现实世界中有用。

学习并在简历中包含多种编程语言。确实,您只需要一种编程语言即可完成任何编码回合,但在面试时,您应该了解多种编程语言。很明显,你花在编码上的时间越多,你构建的东西就越多,你肯定用过多种语言——所以如果你过于专注于一种语言,可能会导致面试官看到一种语言的简历时出现问题,他们假设候选人没有遇到很多问题,他/她可能很难在要求的时间内学习新技术。

2. 创建一个好的 LinkedIn 个人资料并在您的在线工作申请中脱颖而出创建一个可以被招聘人员找到的好的 LinkedIn 个人资料。您的个人资料必须具有清晰可见的良好个人资料图片。许多人犯的错误是不包括个人资料图片或不清晰可见的图片。它会降低招聘人员阅读您的个人资料的机会,也会影响建立联系(这是信任问题)。

请务必更新默认标题。将相关技能和关键字放在标题中,以便 LinkedIn 的搜索软件在招聘人员搜索中将您的个人资料排名靠前。尝试使用您的 LinkedIn 个人资料来讲述故事,因为您无法在简历中写下所有内容,但是您可以清楚地提及您在制作任何项目时遇到的问题,您可以在您的简历中展示您的证书、考试成绩等等。您不能在简历中提供的 LinkedIn 个人资料,因为它应该包含重要的事实,最好只有一页。

在寻找任何工作时,人脉都起着重要作用,因此您应该确保在 LinkedIn 上扩展您的人脉。定位 10-15 家你想为之工作的公司,前往 LinkedIn 并找到在那里工作的高级经理/董事。向他们发送定制的 LinkedIn 邀请并设置日历提醒以每两周与他们保持联系(保持联系意味着为您的网络提供价值。这不是“嗨”、“你好吗”、“感谢您的联系”)。当您觉得自己准备好了时,请直接联系招聘经理。

创建一封求职信,讲述您所在行业的常见问题,以及您过去如何解决该问题。表达你的兴奋,告诉他们你为什么想和他们一起工作,并感谢他们阅读你的来信。

3. 通过工作面试:在大多数顶级科技公司,软件工程面试通常包括:(a) 编码(侧重于数据结构和算法,其中包括面试过程的最大部分),(b) 面向对象设计,(c) 系统设计和可扩展性,(d) 核心主题知识,(e) 行为面试。在编码回合中,面试官将根据您的分析技能(您的解决方案的最佳程度、得出解决方案所花费的时间、您在解决问题时是否需要很多帮助)、编码技能来评估您的表现(您的代码是否干净,您是否考虑过边界情况)和技术技能(您的计算机科学基础是否清晰等)。

您处理编码回合中提出的问题的方法应该是这样的:

1. 密切关注问题陈述:仔细聆听或阅读问题,并询问您是否对某事有把握。很多时候,您可以从问题陈述本身获得提示。假设面试官说给你一个排序的数组,那么你可以猜测是否需要搜索问题中的任何元素,那么对于这个问题,最佳方法是使用二分搜索而不是线性搜索。同样,只要仔细聆听问题描述,您就可以获得最佳解决问题的提示。

2. 在白板上画一个例子画一个例子可以提高你对问题的观察能力,帮助你快速解决问题。在绘制示例时,不要使用特殊情况,并确保您的图表足够大,以便您可以轻松找到算法中的错误(如果有)。

3. 状态蛮力解决方案:尽可能快地给出一个蛮力解决方案,不要试图首先给出一个最佳方法。一些候选人认为这是显而易见的,他们从一开始就开始尝试给出最佳方法,但是您应该明白,如果您不说明蛮力方法并开始挣扎,那么您的面试官可能会认为您不是合适的候选人你甚至无法找到简单的方法。

4. 优化您的解决方案:在获得蛮力解决方案后,开始优化您的解决方案。要优化,您可以查看是否有任何未使用的信息,进行时间和空间权衡,查看哈希表是否有用,使用不同的示例,如果您有一个复杂度为 O(N^2) 的解决方案,先不要试图减少它 O(N),想一想是否可以通过使用排序算法或其他方法找到复杂度为 O(N log N) 的解决方案,然后再考虑是否可以找到更优化的解决方案,例如具有复杂度,在)。有时甚至错误地解决问题也有助于找到优化的解决方案。

5. 检查是否有任何错误/运行:不要开始编码,首先检查您的算法是否适用于所有测试用例(特殊、边界情况和具有大输入/输出的情况)。

6. 实施和测试:现在您可以在代码编辑器中实施您的代码。如果你不想表明你是一个糟糕的开发人员,那么编写好的干净的代码,这意味着你的代码应该在所有预期和意外的输入上正确运行。它在渐近和实际效率方面都应该是有效的,应该考虑常数因素。它应该简单易读(可读代码并不意味着它应该包含大量注释,只在必要时才写注释,否则变量和函数名称应该是不言自明的。)代码需要能够适应变化。它应该很容易被其他开发人员维护。你不应该在面试中未经测试就“提交”代码。测试所有概念性的、特殊的、边缘情况,如果在测试代码时发现任何错误,请仔细修复它。

如果您想为这些类型的回合做准备,您应该了解以下主题:

  • 数据结构链表、树、图、堆栈、队列、堆、向量/数组列表、哈希表等。
  • 算法广度优先搜索、深度优先搜索、二分搜索、归并排序、快速排序等。
  • 概念:位操作、内存(堆栈 vs 堆)、递归、动态规划、大 O 时间和空间等。

编程面试准备策略的一些要点

1. 朋友模拟面试:可以和朋友(与你的知识相同或比你多)组成模拟面试组,互相进行面试。你们可以互相反馈,一起提高你们的技术技能和沟通技巧。总是让一群人激励你提高自己并给你正确的建议。

2. 创建一个列表来跟踪你的错误:创建一个列表来跟踪你在解决任何问题时所犯的错误,这样你就不会在面试中重复同样的错误。另外,记录你在做项目时犯过的错误以及你如何解决这些错误,这样如果面试官问到这些错误,你就可以轻松解释。许多公司都会进行行为调查,其中一个著名的问题是讲述您的错误/失败,因此您也可以写下这些问题的答案,因为当时很难想出正确的答案。

3. 自己开始计时:在实际面试中,您应该能够在给定的时间范围内解决问题。您可以通过解决尽可能多的问题来提高效率。

4. 解决有针对性的问题:解决你正在面试的公司的问题,使用诸如 Glassdoor、GeeksforGeeks 等网站。与可能曾在该公司面试过的朋友交谈。

5. 制作备忘单和复习卡片:为你以前做过的问题和你不太熟悉的概念制作简短的备忘单。稍后使用它们快速修改问题。

6. 不要从一个站点跳到另一个站点:只选择一两个好的资源并坚持下去。从一本书跳到另一本书或从一个网站跳到另一个网站需要很多不必要的时间,而且很多时候,候选人在从一个站点移动到另一个站点时跳过了难级的问题,只解决了没有多大帮助的简单级的问题。

最后,您需要记住,所有编程基础和基础知识(根据您的简历)都应该对您一清二楚,同时对其他重要领域(如数据结构和算法以及其他核心 CS 主题)有很好的了解,以便在编码面试!!