面試筆記

--

扯段面試心態的探討。很多人想到面試,就會過度緊張,最終影響表現,真的相當可惜。面試聽起來,大家可能會覺得是種考試。何況負責面試的人,還是面試“官”。但探究英文名interview,才符合它的初衷 — — 這就只是個雙方平起平坐,相互(inter)考察(view)的過程。

所以降低緊張的第一步,在於先把自我定位分辨清楚 — — 這是自己在待價而沽的過程,公司選擇、考察我的同時,我也要選擇、考察這間公司。從公司文化、工作氛圍、到平常組員互動等狀況,是不是符合我的需求。保持這種心態,平常也多培養自己的專業技能,在面試上會先多不少底氣。

第二步,除了常規的Behavioral question (BQ)、coding question要準備好以外,其他準備上,我覺得比起讀Algorithm的書,讀”演員的自我修養“可能還更加重要。如果是很容易緊張的人,就多想像一下,“扮演”成一個好的面試者,需要是什麼樣子。面試官在挑面試者時,除了面試者本身的能力以外,一些軟實力上,這個人好不好相處,互動上舒不舒服,或多或少也會影響最終的意願。畢竟未來是有一定機會一起共事的人。(如果是組招的話,則是100%會一起共事。)

一個讓人舒服的面試者,我覺得最簡單的就是要“愛笑”。當然保持臭臉,但快速ace掉BQ及coding question,也是很好啦。但多笑一下何妨,怎樣都能讓自己更放鬆。

我自己在當面試者上,心態上會把對方當我日常互動的朋友或同事。就聊天過程中開開玩笑,正常打屁。問題有點想不出來時,就稍微討論一下(我比較不會直接要提示,會說:我現在的想法是xxx,但在ooo步驟因為***的原因而進行不下去。這樣面試官也比較知道從哪裡給提示。)

綜上,我自己在面試的過程,都沒什麼緊張的情緒過。

講一下BQ。

我覺得在BQ上,要明確意識到,BQ的核心目的,就是要看你這個人,是不是符合公司訂出來的文化。所以在準備BQ時,請先查一下這公司的公司文化 / 準則是什麼,並照準則準備問題。

當面試官問問題的時候,先花幾秒想一下,這題是對照這公司的什麼準則。again,每題在問你的時候,都有背後想聽到的答案。所以BQ最重要的事,是在於拆解面試官這題問題背後,真正想聽到什麼。

除了公司準則外,有時候也會有些比較general的問題,例如最經典的,為什麼要選我們公司?(Why our company? )

again and again,這題照題面直接回答,說我喜歡你們公司文化、喜歡你們免費三餐、喜歡你們多元的環境、喜歡Work Life Balance,這就不太對了。

這題實際上要問的是:你能給我們公司帶來什麼價值。(Why you?)

所以最好的回答方式,是照題面回答的同時,把自己能帶來的價值包進答案。

舉例:你們是新創公司,整體步調會比較快,而我是個做事比較快,做專案出成果比較快的人,很符合這樣的公司文化。或,我知道到你們現階段,在xxx business model上有些問題,我有過xxx的經驗、有xxx的技能,可以跟你們一起面對挑戰,等等。

核心的回答方式是,我能給你們公司帶來什麼,而不是你們公司能給我帶來什麼。所以因為什麼福利而想來、因為公司規模多大而想來、或小時候這公司就是你的夢司等等,這一點都不重要。

把自己能帶來的價值,與題面的回答包在一起,因為你們公司有xxx優點、你們公司需要xxx,剛好本人也能提供,所以很合。

(我覺得甚至很直白的說,我注意到你們公司現在在大量擴招,我xxx技能很擅長,能給你們公司帶來很多價值。這樣都比說因為xxx,所以我超愛你們公司還要好。總之先以公司的角度出發,而不是先從自己角度出發。當然最好的回答還是上面的先給題面答案,再補自身價值,相輔相成,雙方需求契合。)

再來是Coding Question。

首先,拿到題目不要直接開始寫。很多人可能面試經驗不足,會以平常寫leetcode的方式,直接開始寫。

這裡有個還不錯的示範影片:

https://www.youtube.com/watch?v=t2ZBn8oWThs

重中之重就是Clarification。

一開始先用comment寫下一些題目的邊界狀況。大致就類似:這數組能是空數組嗎? 如果是的話要return值嗎? 數組可以有重複的值嗎? 輸入的值如果是xxx怎麼辦,輸出會是什麼?

面試的題目一般都不會給非常詳細,有時候甚至就只給一行話。面試官就是期待我們像解決現實世界問題一樣,設定、討論問題的邊界。

再來還是不要急著寫code。

開始口述、或寫下來自己的想法,自己想怎麼解決問題。

接著,甚至可以先講解時空間複雜度。

再來才是寫code。

寫完code,一定要主動跑測試,主導一下流程。測試過程再度講解自己的code在寫什麼、每個步驟在幹嘛。

小結:

1. 寫Clarifications

2. 寫解題步驟

3. 時空間複雜度分析(也可以放在最後一步。)

4. 寫code,coding style麻煩注意。最基本如i=1,請寫成i = 1。

5. 中間寫了什麼比較難懂的部分,請別吝嗇加註釋。

6. “主動”跑test。

整個過程中,都儘量Think out loud,把自己的思路講出來,面試官才知道你在幹嘛。

如果需要一點時間想的時候,別突然就沈默不說話了,先說諸如let me gather my thoughts for 2 minutes. (讓我花兩分鐘整理一下思緒)。過程中還是可以想到什麼先打字在註釋區。

再來說一下當面試者的心得,

面試者有機會:

1. 口語不好

2. 語言組織能力不好

3. 直接答非所問了

Coding的話,容易出現:

1. 過度複雜化問題,寫一堆for迴圈把面試官繞暈

2. code真的不知道在寫什麼,表達不太好,難給提示

3. 用小眾編程語言,有些語法細節不確定是不是瞎編的

面試官要全程專注做筆記,面試者無論表述能力如何,都不能恍神,並適時給鼓勵、接話題;coding部分,寫的再難理解,都要想辦法理解在幹嘛,並在合適的時間給予提示。

真的要把這些步驟都做好,我覺得很難。

--

--

台北遇上西雅圖

純文組背景,現於西雅圖一線大廠擔任軟體工程師。 分享轉科系、自學程式、美國生活、生活日常隨筆。文章第一時間分享於粉專:https://www.facebook.com/seattao