编程面试的五个技巧
技术面试令人恐惧;想到必须在白板上写代码就会让人焦虑。
通过多年的研究和行业经验,我们总结了一些帮助您应对编码挑战的技巧。
无论您是前端还是后端,了解这些技巧并在面试前练习它们,将确保您尽最大努力并有望获得工作机会!
你还有其他建议吗?请在下方评论区留言!
沟通是任何面试的关键,但在技术面试中,解释你的思维过程至关重要。
面试官希望你成功,但为了帮助你,并可能给你提示,他们需要了解你的思维过程。
如果你需要一点时间思考,就直接告诉面试官!说“我只需要一点时间思考”没什么不好意思的。
但如果您正在内心思考两种解决方案,那就说出来吧。
例如,如果您尝试确定从最低到最高对整数数组进行排序的最佳方法。
我脑子里有两个想法。第一个方案需要强制执行,我们将索引中的每个元素与其相邻元素进行比较,如果右边的整数值小于左边的整数值,则交换它们。
但这并不是最优方案,因为它需要 O(n^2) 次检查来确保所有内容都已排序。我知道合并排序是一种更优化的排序算法,最坏情况下的运行时间为 O(n log n),但我不太确定该如何编写代码。
大声说出你的想法可以让面试官指导你,而且这通常是一个展示你对数据结构和算法的了解的机会。
几乎在所有情况下,你收到的编程挑战题目都会有一些漏洞。面试官不会一开始就告诉你所有信息,因为他们想看看你的推理能力和解决问题的能力。
因此,仔细考虑解决问题所需的所有关键信息并询问是否有不清楚的地方非常重要。
如果您收到问题但不知道从哪里开始,请不要惊慌;我们都经历过这种情况!
首先,想想你掌握的信息。你需要哪些信息来解决这个问题?
其次,你漏掉了什么?上一条建议里我们提到过,要问一些澄清问题。如果你遇到困难或者需要时间,这是一个很好的练习。
接下来,回到问题的核心,你会如何强行推导出答案?在技巧一中,我们有一个示例问题,即对一个整数数组从小到大进行排序。
暴力破解方法可能是冒泡排序,即我们将每个整数与其他整数进行比较,并在必要时进行交换。虽然这不是一个优化的解决方案,但将暴力破解方案写在白板上,可以让你重构出更优化的解决方案。
是否可以删除排序算法中的一个嵌套 for 循环?也许我们可以重构,使用像归并排序这样的分治算法!
强力解决方案总比没有解决方案要好。
例如,如果有人问你“== 和 === 之间有什么区别?”而你根本不知道,那就直接告诉面试官吧!
您可能会说:“我不确定,但如果我必须做出有根据的猜测,我会说......”
这表明你有自我意识并且诚实,但你仍然愿意猜测。
如果您只是胡乱回答并假装知道自己在说什么,这表明您不是一个诚实的人,并且您很可能不会收到工作机会。
此外,如果您收到一个您已经看到过解决方案或在之前的面试中已经遇到过的编码挑战问题,请诚实地回答。
面试官能看出你是否在重复记忆中的答案,所以最好坦诚相告。而且,面试官应该会欣赏你的诚实。
一旦你有了解决方案,就花十分钟测试一下。有哪些明显的用例?有哪些极端情况?你可能会发现解决方案中的漏洞,然后回过头来改进它们。
如果你不经过测试就说出答案,你很可能不会收到工作机会。
例如,如果要求您编写一个算法来确定二叉树中是否存在循环(或断边),请考虑可能的用例。
- 如果树中没有节点,你的算法是否有效?
- 如果只有一个根节点怎么办
- 如果没有断边/环会怎样?
- 如果断边位于树的最后一个节点(右下角)会怎么样?
- 如果它在第一级怎么办?
这些问题可以帮助你完善你的解决方案。它或许能帮助你确定是否要使用深度优先搜索而不是广度优先搜索。
测试很重要!所以别忘了它!
记住这五个技巧,能帮你缓解编程面试的焦虑。专注于解决手头的问题,同时清晰地沟通。你很快就会收到工作邀请!
您可以查看我们的完整剧集以获取更多提示!