恒生电子校招编程面试技巧

恒生电子校招编程面试技巧

刚开始编程面试的时候,我喜欢的公司都不理我。现在回想那个时候,我发现我对面试完全没有准备。虽然已经有很多关于编程面试的博客文章和书籍,但是作为一个面试者,坐在桌子的另一边,我还是能看到很多来参加编程面试的人都是毫无准备或者准备不足的。这就是我开始写这个指南的原因。刚毕业,第一次参加面试,我一定很想有这样一个向导来指导自己。从现在开始,我将自己遵循这个指南。

这些年来,我在几家公司工作过,所以我的面试技巧得到了很好的磨练,我参与面试的过程也教会了我该说什么,准备什么,如何面试。在本指南中,您将了解面试的概况、面试成功的六个步骤以及我在考察数据结构和算法时考虑的方面。这个指南不能保证你得到一份工作,但是可以帮助你尽可能的给面试官留下一个好印象。

声明:本文观点完全从我个人角度出发,与我现在或以前的雇主无关。

面试过程

本节概述了硅谷公司的面试流程。这只是一个介绍。可以跳过,回头看。

除了直接申请面试,一般来说,有两种方式可以获得面试机会:由你现在的雇主推荐或者通过LinkedIn。虽然前者会更快,更尊重人,但后者很可能是大部分申请人走的路。事实上,每天都有无数招聘人员在LinkedIn上撒谎。他们唯一的工作就是寻找和联系可能跳槽的员工,所以一定要保持你的信息最新,多接触,邀请别人认可你的技能,把你的技能,你做过的个人项目或者对开源软件的贡献添加到你的个人页面。

最初的联系通常是通过电子邮件,然后招聘人员会打电话给你,大致了解你的技术背景。如果你的技能符合他们的要求,他们会安排一次电话面试,期间你可能会被要求在一个在线文档中编程。然后你就知道这个文档很可能没有代码补全和语法高亮的功能。电话面试将持续半小时至45分钟。表现好的话会被邀请参加现场面试。现在,如果没有电话面试,或者除了电话面试之外,你可能还要参加一个小的编程项目。

现场面试由多次面试组成,面试时间为45分钟到一个小时。这些面试将非常类似于电话面试,但问题会更难-但这将在一定程度上补偿看到面试官本人。经过几周的现场面试,所有的反馈都要看完,才会做出招聘决定,决定谁不招谁。如果你没有拿到offer,你也要明白面试是一个随机的过程,包括运气,所以就当是一次学习的经历吧。也许你会记得布里亚纳顿的故事,他没能采访到脸书和Twitter,后来成为WhatsApp的联合创始人。

理论上来说,你用哪种编程语言并不重要,除非你面试的是需要用特定语言完成的工作,比如iPhone开发人员或者前端开发人员。我强烈建议你用你面试的公司使用的编程语言来编程(和练习面试问题)。

面试成功的六个步骤

编程面试的目的是确定你的编程水平有多高。一般来说,你需要编写一个函数或者方法,但是有时候,你需要编辑一个类的定义或者设计一系列相关的代码模块。无论如何,你都应该有条不紊地解决问题,并遵循以下六个步骤:

1.首先,确保你理解了面试官的问题。很多问题故意含糊不清或者模棱两可。这时候你可以要求面试官把问题说清楚,这样才能保证你真的回答了面试官的问题。你这个问题还有一个好处,就是可以给自己一些时间让脑子动起来。

2.使用一两个示例来确定问题的约束和要求(在现场面试时在白板上完成此过程,在电话面试时在笔记本上完成此过程)。尽量用一个中等大小的例子来涵盖一些特殊情况。如果你能想到一个可能相关的表格,画出来。其实把你想到的任何事情都写下来都是有帮助的,因为它可以给你提供一个视觉的锚,让你在卡壳或者思考的时候随时回到某一点。

说清楚,这可能是最重要的一步。尽可能让面试互动起来。面试官不知道你在想什么,但是让他们参与到你的思考过程中,会让她给你一些有用的提示,防止你走错方向。你的目标是在你写代码之前和面试官确认你的答案,你对答案的思考越清晰、越高效,你的即时反馈就越好。

4.运用以下技巧找到答案:回想你遇到的类似问题,然后思考它们是如何解决的,尝试不同的算法(分而治之算法、贪婪算法、递归、排序等。),把问题分解成更小的、可管理的问题(这样你就可以得到相应的分数),最后再浏览一遍你列出的数据结构,因为有时候,只要你想到正确的数据,

当你问清楚面试官的问题,并向她解释你的答案后,你就可以开始写代码了。记住,在* * *文档中写代码的时候,可以复制粘贴,写注释,回过头来完成骨架算法和函数。但是在白板上写代码就不一样了。它要求您在管理白板空间时有清晰的思路和技巧。如果你足够幸运的话,现在你在白板左上角开始写的时候,你应该非常清楚你要写什么,并且你要确保当你写答案的时候,不会挡住面试官的视线。花时间把代码写得简洁漂亮,因为你的代码也会成为面试反馈的一部分。当你写代码时,大声解释你写的是什么,这将使你的面试官更容易理解你的想法。

6.最后,用不同的例子和特殊情况来验证你的代码,一行一行的检查。这会展示你的思考过程,让你检查出小错误,告诉面试官你的方法是可行的。如果想加分,甚至可以把单元测试的代码写下来!最后和面试官谈谈你的回答在空间和时间利用上的复杂程度,然后结束整个面试。