恆生電子校招編程面試技巧

學識都 人氣:1.81W

最初開始參加編程面試的時候,我所有最心儀的公司都忽視了我。現在回頭看那個時候,我發現自己當時去參加面試都完全沒做任何準備。雖然已經有許多博客文章和書籍在講編程面試,但現在的我作爲面試官,坐在桌子的另一邊,還是能看到許多來參加編程面試的人沒做任何準備,或者準備得很糟糕。這也就是爲什麼我開始寫這篇指南的原因,剛畢業時的我、第一次參加面試的我一定非常想有這麼一份指南來指引自己。而從現在開始,我自己也會照着這份指南去做。

恆生電子校招編程面試技巧

多年以來,我在好幾家公司工作過,所以我的面試技巧得到了很好的磨鍊,而且我參與面試的過程也教會了我該說什麼、該做哪些準備,以及如何面試。在這篇指南里,你會了解到面試的概況、面試取得成功的六大步驟,以及我在考察數據結構和算法時所考慮的方面。這篇指南無法確保你找到工作,但它能幫助你盡最大可能給面試官留下一個好印象。

聲明:本文中的觀點完全出自個人視角,與我目前或者以前的僱主沒有關係。

面試過程

本節概述了硅谷公司的面試過程,僅僅是個情況介紹,大家可以跳過去往後看。

除了直接申請面試以外,一般說來,還有兩種途徑來獲得面試的機會:由現在的僱主推薦,或者通過LinkedIn。雖然前者會快一些、更尊敬一些,但後者很可能是大部分應聘者所走的路徑。事實上,每天都有無數的招聘人員趴在LinkedIn上,他們唯一的工作就是尋找和接觸有可能換工作的員工,所以一定要保證自己的信息是最新的,而且要多交人脈、多請別人來認可自己的技能,並且要把你所具備的技能、做過的個人項目或者對開源軟件所做的貢獻加到個人頁面裏去。

最初的接觸一般是通過電子郵件進行的,然後招聘人員會給你打電話,大概瞭解一下你的`技術背景。如果你的技能和他們正在尋找的技能一致,他們就會安排一次電話面試,在電話面試時,你可能就會被要求在一份共享的在線文檔裏編程。那麼你就會知道,這份文檔很可能沒有任何代碼補全和句法高亮的功能。電話面試會持續半小時到45分鐘,如果你表現不錯,就會被邀請去參加現場面試。現在如果沒有電話面試、或者在電話面試之外,你可能還得去參加一個小的編程項目。

現場面試由幾次面試組成,總體會持續45分鐘到一個小時。這些面試會和電話面試非常像,只是問題會更難——不過能親眼見到面試官多少算是有所補償。現場面試數週之後,所有反饋應該都被看過、招聘決定就會做出,招誰不招誰也就定了。如果你沒拿到offer,也要明白麪試是一個隨機的過程,包含運氣的成分,不妨把它看作是一次學習的經歷。可能你還會想起布萊恩·阿克頓(BrianActon)面試Facebook和Twitter不成、後來成爲WhatsApp聯合創始人的故事。

理論上講,用哪種編程語言並不重要,但你面試需要用某種特定語言來完成的工作時除外,比如iPhone開發者或者前端開發者。我強烈建議你用正在面試的公司所使用的一種編程語言來編程(以及練習面試問題)。

面試獲得成功的六個步驟

編程面試的目的,是爲了確定你的編程水平有多高。一般來說,你將被要求用編程來完成一個功能或者方法,但有時候,你會需要編輯一個類的定義,或者設計一系列相關的代碼模塊。在任何一種情況下,你都要有條不紊地解決問題,並遵循以下六個步驟:

1.首先,要確保你理解了面試官的問題。許多問題都是故意措辭模糊或者模棱兩可,這個時候你可以請面試官把問題說清楚,從而確保你真正回答面試官的問題。你的提問同時還有一個好處,就是它能給你自己一些時間,讓你的腦子轉起來。

2.用一到兩個例子來確定問題的限制條件和要求(在現場面試時在白板上完成這個過程,在電話面試時在筆記本上完成)。嘗試用中等規模的例子,以便覆蓋到一些特殊情況。如果你能想到可能相關的表格,就把它畫出來。事實上,把你想到的任何東西都寫下來是會有幫助的,因爲它能爲你提供一個視覺錨點,從而讓你在走不通時或者思考過程中隨時返回某一個點。

3.把話說清楚,這可能是最重要的一步。要試着讓面試儘可能有更多的互動,面試官不知道你在想什麼,而讓他們參與到你的思考過程裏,會讓她給你一些有用的提示,防止你偏向錯誤的方向。你的目標就是要先和麪試官確證你的答案,然後再去寫代碼,而且你考慮答案越清晰、越高效,你得到的即時反饋也就越好。

4.通過應用以下技巧來找到答案:回想一下你遇到的類似問題,再想想它們是如何被解決的,嘗試各種不同的算法(分治算法、貪心算法、遞歸、排序,等等),把問題分解成更小的、可處理的小問題(這樣你就能得到相應部分的分數),最後再通覽一遍你列出的數據結構,因爲有時候,只要想到了正確的數據結構,就能給出正確的答案。

5.當你向面試官問清楚了問題、並向她解釋了你的答案之後,就可以開始寫代碼了。要記住,在共享文檔裏寫代碼的時候,你可以複製粘貼、寫評論,而且能回過頭來完成骨架算法和功能。但在白板上寫代碼就不一樣了,它需要你的頭腦很清醒,而且需要你具備管理白板空間的技能。如果足夠幸運的話,現在當你開始在白板左上角動筆的時候,應該非常明白你要寫些什麼東西,而且你要確保在你寫答案的時候,沒有擋住面試官的視線。花點兒時間把代碼寫得緊湊而美觀一點兒,因爲你的代碼也會是面試反饋的一部分。在你寫代碼的時候,要大聲解釋你在寫什麼,這會讓你的面試官更容易地跟上你的思路。

6.最後,用不同的例子和特殊案例驗證一下你的代碼,並且要一行一行地過。這會展示你的思考過程,讓你檢查出小錯誤,並告訴面試官你的辦法是可行的。如果你想得到額外加分的話,甚至可以把單元測試的代碼寫下來!最後再和麪試官聊一下你的答案在空間和時間利用方面的複雜性,然後結束整場面試。