技術人員的職場面試指南

每當人們問我應對技術面試最重要的一點是什麼,我都會告訴他們:做好準備。

技術人員的職場面試指南

面試會帶來很大壓力,這種壓力會影響你的交流能力,令你無法進行全面思考、做完整的表述。在來回的話題轉換中你會跑題,甚至都不記得一開始的主題是什麼了。有的時候你在慌亂中把底牌全都亮出來了。

做好準備不代表你要填滿所有的面試時間,而是要按重要性把他們想知道的訊息排序。瀏覽下列問題,想象你在招人,你希望知道些什麼?

你曾有哪些建樹?

你遇到的最棘手的專業問題是什麼?

你是怎麼解決的?

就是這些類型的問題。需要注意的是所有這些問題都是關於被面試者的,特別是關於做了什麼以及如何做到的。如果你在某些不熟悉面試的公司進行面試,你可能還會遇到這樣一些問題:

你認爲你5年之後會處在一個什麼樣的位置?

你爲什麼想在這工作?

你怎麼解決與合作者的意見分歧?

這些問題從公司的角度來看都是沒什麼意義的,因爲預測事情是很難的,特別是未來的事。面試官很可能並不知道他們想要什麼答案,這些問題只是用來填補時間的。不過這裏需要說明,我所在公司的人力資源部門就會問一些類似“如果我們發offer你真的會來工作麼?”的問題(例如“你滿意我們提供的待遇麼?”)。如果你正在申請一個很小的公司,你可能就會在面試中遇到這一類問題。

如何準備

準備一疊卡片,每一張卡片上寫一項你完成的任務或者你管理過的項目,用一句話描述你的主要工作和你解決問題的主要方法,就像你在Stack Overflow上提問附帶的標籤那樣。寫了這些之後,再寫下你所能想起的嘗試和失敗,你可以限制在5個以內,但是除非你真的嘗試得不多(這也沒事),不要一寫到5個就結束了。最後,寫下你還在做的事。

現在把卡片反過來。在最上頭,用一個詞描述你從這個項目中學到的最有價值的東西。你只能列出一個最關鍵的點。如果你還沒有解決這個問題,那就寫下你最新從中得到的領悟,然後用一行話描述這個想法從何而來。按這個步驟把卡片寫完。

我經常聽到有人說不知道面試官想知道哪些任務和項目。他們想知道你所提供的材料中的內容。如果你給他們一份簡歷,他們會問你關於之前工作的問題;如果你給他們你的Github鏈接,他們就會問關於你項目的問題;如果你給他們你的Stack Overflow鏈接,他們就會問關於你的回答的問題。你需要確保你所列出的每個工作經驗都至少有一張卡片,最好每個工作經驗中最重要的一點都有一張。確保你在過去一年中在Github的每個項目都有一張卡片。至於Stack Overflow上的問題,只要確保你最熱門的提問和回答就行了(不需要爲此寫滿整張卡片)。這些基本上就是你會被問到的全部內容。以我發在Developer Story上的一個項目爲例。

如何講一個好故事

現在,你已經有了重點卡片,該開始練習面試中要說的話了。即使你的卡片上已經有全部的重點,把這些重點變成一個吸引人的故事纔是關鍵。

具體化

好的故事是基於對話的'。面試的過程是我將我的信息傳遞給你,你從中找到對你的工作有用的內容。當無話可說的時候,對話往往就進行不下去了,所以一定要避免這一點。雖然廣博的見識很吸引人,還會顯得非常聰明,但要記住,我們的目標是在這個過程中讓面試官針對每一個環節向我們提出更多問題。要做到這一點,最好的方法就是具體化。

《反斗智多星》(Wayne’s World)裏的這個場景充分說明了爲什麼不能泛泛而談,這樣別人就不知道該怎麼迴應,因爲你讓人無話可接。在電影裏,Wayne說的是“我喜歡你的襯衫,哥們”而不是“我愛你,哥們”,這樣Garth就可以很輕鬆地繼續對話,因爲他知道下面要說什麼。“哦,是的,這是我在裏諾的音樂會上買的,那天鼓手特別嗨……”就是這樣。要說具體的,而不是泛泛而談,特別要注意結合當時的環境

從亮點開始

好的故事會從一個亮點開始,第一句話就會讓人產生興趣,想知道後面發生了什麼。

“我建立了一個用於運行開發者報告的Web界面。”這是一個不好的開頭。面試官此時的問題基本上會是這兩個方向:“什麼是開發者報告?”“你用什麼技術來構建界面?”這些問題都不會引向有趣的事。開發者是一羣人,那現在談論的就不是你了,而且許多人都使用了你所使用的Web前端框架,而這個項目有趣的地方可能不在於你使用的框架。

“我在Google Maps界面上設置了7個數據集,讓銷售組的人員可以獲得全球開發人員的實時報告。”現在你可能會想知道我在這個項目中做了哪些工作,我們會展開對話,因爲我使用了具體的信息來突出了這個項目中3、4個有趣的方面。這就是利用亮點和使用傳統方式來表現自己的區別。

按時間倒序講

一般來說,真實的故事都按時間倒序講,這就是爲什麼我們從亮點開始。相比之下,編排過的故事按時間正序講。在面試官看來,正序講故事更像是在背誦拼命記過的東西,那麼這個故事就顯得更不真實了。好的面試官會讓你按倒序講故事,因爲他們會不斷要求你詳細講他們感興趣的部分。如果你確實清楚發生了什麼,爲什麼會發生這樣的事,這對你來說應該不是個問題,因爲你非常熟悉你正在談論的問題。你所需要記住的就是你在敘述主線中離開的地方,這樣之後你可以回到這裏。

如果面試官要求你詳細講講剛纔說的內容,但你試圖繼續把故事講下去,那就充分表明你是個不誠實的騙子。你可能把別人做的決定以某種方式說得好像是你做的,或者你顯得好像熟悉你所使用工具的內部運作勝過熟悉你自己做的。這些不一定是謊話,但是溝通不暢也會顯得不誠實。在面試中不誠實很不好,畢竟如果這個公司擅長面試的話,你很有可能被揭穿。不過我也想指出,如果你在這種情況下被揭穿,並不意味着面試就一定失敗了。當你被揭穿時,要記得從這時起多講一些,確保只說你所做的事情。被揭穿兩次就差不多了。

亮點已經講完了,下一步說什麼?面試官會引導接下來的內容,他們會讓你詳細講講你在亮點裏說到的2到4個有趣的地方。他們會問到一些你只是嘗試過但沒有成功的東西。一般來說,沒人會關心實際的解決方案,作爲一項工作技能,探究方式比知道答案更重要。你能夠解決問題和你只是知道答案是有區別的。在你只是知道答案的情況下,最好的辦法就是講講解決方案的幾個部分以及它們是如何共同起效的。但是,在很大程度上,你被招來是解決問題的,所以你必須講講那些嘗試過但是沒成功的東西。

談論你嘗試過的東西還有另一個好處。一旦你拋出了這個亮點,面試官就會開始猜測你是如何解決這個問題的。這樣你就與面試官的思考方式有所不同,而且因爲講到了方法,現在你就可以把重點轉到那裏。你可以和麪試官討論他們的想法,特別是如果你這樣嘗試過。要確保你一直在關鍵點上,這樣才能推進到下一步。

作爲面試官和開發人員,我非常高興在面試中學到如下幾點:

不要猜面試官知道什麼

在大多數情況下,你不知道面試官知道什麼。你不知道他們熟悉哪種語言,他們擅長解決什麼樣的問題,他們的工具箱中有什麼工具。這裏有一點平衡的作用。聰明的方法是假定他們知道一些事情。假定他們知道開發人員日常做什麼,知道如何解決問題。在你的敘述過程中時不時地停下來,確保面試官還能跟得上。這些可以通過肢體語言來完成,留意他們是不是認同你說的(在你說話的時候,他們有沒有經常說“對”),或者直接停下來問他們你是否講清楚了,他們是否還想讓你再多說些內容。

如果你在一個故事中離題太遠又沒有確認面試官是不是還跟得上,他們就會覺得你無法闡述好一件事。要積極地確認面試官瞭解你正在講什麼,這樣不僅你會覺得更舒服,面試官也會覺得他們學到了一些東西。

還有一點是不要假設面試官認爲哪些事是有趣的。不要對你所做的任何事表達負面觀點,因爲這可能正是他們認爲有趣的。就算你覺得這很簡單幼稚或者別的什麼,你仍然可以就此展開對話。現在開發人員有數百種專業技能,如果你正在申請的是Web開發崗位,並不意味着面試官和你一樣知道CSS或某些javascript功能。如果面試官在與你交談時對某些事情感興趣,可以以吸引人的方式多談一談。

讓面試成爲對話

講得更清楚一點,就是讓面試成爲對話。事實是你並不知道面試官會在你給他們的材料或任何你可能說的話中找到什麼有趣的內容,我也無法知道。儘量讓他們對你所做的事情感興趣,如果他們沒什麼反應,反過來問問他們希望你談什麼。“你希望我說什麼?”這樣不好;“你覺得我的簡歷中有什麼有趣的地方?”這樣就好多了。這可以看出他們的準備工作。如果他們的回答是“我沒有找到任何有趣的內容”,那麼你的下一個問題應該是“那爲什麼我要參加這次面試?”一直試着去猜測面試官覺得有趣的內容是浪費時間,直接問更有效。如果他們不想和你談具體的內容,可能他們自己就沒有爲面試做準備。

練習

練習面試是我最喜歡的環節。直接和其他開發員講講你做過的事,從亮點開始,具體化,當他們問你問題時,按照時間倒序講講你嘗試過的東西。

記住:當你和別人交流時,要確保你說了5至10張不同卡片的內容,一張是不夠的。大部分公司會讓你見3至5個面試官,要確保你不是在和不同的人重複相同的內容,因爲他們是會互相對照的。在練習時注意人們問你的問題,你在真正面試中遇到的問題會跟這些差不多,你可以通過多回答幾遍來做到應對自如。當你說話的時候,你也應該注意對方的情緒。通過這樣的訓練,多說那些令人感興趣的、最希望聽到的內容。

你被錄取的可能性與面試官對你所說內容的興趣成正比。講故事是一個有吸引力的方式,可以與剛結識的人建立有趣的對話。希望你覺得這是個練習講故事的好方法,併成功應對面試。