blog.

jchiroto.dev

cover

/dev﹥SDE BQ 之我的見解

by jc-hiroto

on Thu Dec 28 2023

簡單分享我對於 BQ - 行為面試題的經驗及觀察。


本文章也有提供

英文版本。

Please talk about a time that you have to deal with conflicts.

跟我說說 你遇到過的衝突經驗吧。

我做專案時跟組員吵架的事,要不要老實跟面試官說呢? 該怎麼樣說比較好呢?


相信在軟體工程師圈中,大家對於這類問題出現在面試中應該不陌生,甚至有人會準備一長串的故事就為了應付這類問題(這我)。 如果你還沒有被問過這類型的問題,或是正在準備面試,我會在這邊文章中分享一些我自己的經驗,包含回答的技巧、準備的方法、以及一些我自己的故事。

BQ? BBQ?

俗話說的好,一家烤肉萬家香。 BQ 其實是 Behavioral Questions 的縮寫,中文叫做行為面試題。這類問題主要是在面試的聊天階段出現,有些公司會在一場面試中包含技術型問題 (Technical Questions) 與行為型問題 (Behavioral Questions),有些公司則是分開多場面試、分開處理。 我覺得面試中除了經典的程式考題跟系統設計 (System Design) 之外,BQ 也是一個很重要的考量因素,我之前在面試 Amazon SDE Intern 時是在一關中綜合了 BQ 與 Technical Questions, BQ 的環節大約佔了快 1/3 的時間 (一小時中的約 15-20 分鐘);前幾個月面試 Databricks 的 New Grad 職缺時,更是遇到了 45 分鐘的獨立 BQ 關!所以千萬不能認為程式寫得 bug-free 又順暢就是穩了、就等於躺著選 躺著等錄取了,如果忽略掉 BQ 的重要性,甚至疏於準備被問倒了,我認為還是會影響到面試後錄取的機率的。

之前就有在某論壇聽說:在某間重視 BQ 的電商 OA (Online Assessment) BQ 題亂寫,雖然前半部的 Coding 部分滿分,但最後也沒有拿到面試的故事。當然這純屬猜測,沒被邀請到下一關面試也有可能是其他因素造成的,大家聽聽就好 XD

為什麼、問什麼

公司想從 BQ 得到什麼?

你可能很好奇公司為什麼要問、甚至重視 BQ 環節?我認為公司想得到的資訊有下列幾個:

  1. 你的能力與經驗
  2. 對此公司和崗位的了解程度與熱情,與公司的文化相符程度
  3. 團隊合作、領導力、與他人調解的能力
  4. 遇到困難的應變能力,解決問題的能力
  5. 分配時間與取捨事情重要性的能力

我認為上述這些能力不只受限於軟體工程師,對於各種職業來說都是很重要的軟實力。公司除了在錄取你之前會透過各種問題試圖得到這些資訊,在錄取後也可能會有試用期來評估這些表現。

常見的題目

在回答題目之前,先想想為什麼面試官問了這題?

唯有了解題目的動機,才能針對公司想得到的資訊去精準回答問題。我們可以根據這些公司想得到的資訊,來歸類幾個常見的問題。以下是幾個我聽過、經歷過的 應屆畢業生 New Grad BQ 常見題型。大家看到題目時不妨自己想想看,如果自己被問了這些題目會如何回答呢?


經驗相關

  • Tell me a interesting project. 跟我說說你的有趣的專案。
  • I am interested to <something on resume> 我對你的某某經歷有興趣。
  • Tell us what makes you unique. 跟我們說說你獨特的地方。

這類型的題目其實相對來說是最簡單的,因為跟自身經驗最切身相關。只要自己的履歷不是造假的,對自己簡歷上的內容一定得要是滾瓜爛熟的了。可以試著跟著簡歷上的 bullet point ,跟面試官敘述專案的內容跟細節。大部分面試官最有興趣、會抓出來問的經歷會是:

  1. 跟此份工作內容有相關的經歷
  2. 名聲較大公司的經歷
  3. 你最近的經歷

這些經歷很有可能就是公司挑你起來面試的一大原因,所以當然就要仔細問問細節,確保你熟知專案的內容,而且沒有嚴重的誇大專案內容或是自己的工作範圍。


對公司、職位的了解

  • Why <company> ? 為什麼想選我們公司?

除了對自己的經歷一定要好好準備之外,關於公司的功課也要好好做!如果是在應徵自己的夢想公司,想必回答這些題目的時候眼睛肯定都閃著光 👀✨,就算只是大海投不小心被邀請面試,也記得要好好準備,就算要演也要演的像在面試夢想公司,把熱情展現出來!


講到這個,我就想到一個在海投時常常遇到的惡夢問題,現在想到還會半夜驚醒:

Why us?

我在投履歷的時候看到這種一律就是先 queue 著 不管他 以後有心情再投,雖然現在有 ChatGPT 的輔助,生這種填空題都變得十分快速。
但如果你投的是 ChatGPT 對手 Claude 的老爸 Anthorpic ,那可能就沒那麼好命了:

Anthorpic 的 SDE 投遞表單明確指示:「請不要使用 AI 協助撰寫申請內容... 我們也想知道你在無 AI 協助下的寫作溝通能力。」

Anthorpic 的 SDE 投遞表單明確指示:「請不要使用 AI 協助撰寫申請內容... 我們也想知道你在無 AI 協助下的寫作溝通能力。」

我海投到最後真的太絕望,想起來我看到了 Replo 的申請表單 寫:

「有什麼原因讓你對 Replo 很感興趣嗎? 如果你是大海投,那也很酷!」我就喜歡你這種懂 Candidate 的公司。 ╰(⊙Д⊙)╮佛心公司╭(⊙Д⊙)╯佛心公司

「有什麼原因讓你對 Replo 很感興趣嗎? 如果你是大海投,那也很酷!」我就喜歡你這種懂 Candidate 的公司。 ╰(⊙Д⊙)╮佛心公司╭(⊙Д⊙)╯佛心公司

以致於我後來很多公司遇到了 Why 類型的問題,就直接寫了 "I need a job." (我需要工作。)。這是最爛的示範啦,無奈 2023-2024 的工作太難找,請大家不要學我拜託。

  • Why <position> ? 為什麼想應徵這個職位?

這個問題請針對這個職位的敘述 (JD - Job Description) 來回答,可以試圖把職位的需求跟自身的能力做連結會更好。如果沒有 JD 的話,那就回答你對這個職位的期待,以及你認為自己能為這個職位帶來什麼樣的價值。

  • What do you know about <company>? 你知道什麼關於我們公司的事情嗎?
  • Explain <thing> to me. 解釋某個東西,大多情況是跟公司的主要業務有關。

這兩題在新創公司特別容易出現,我在幫朋友準備一間加密貨幣新創的面試時就有看到類似的問題,他們會請面試者解釋什麼是加密貨幣與區塊鏈。所以如上所寫,通常這種問題都會圍繞著公司的主要業務打轉,請大家一定要好好先去瞭解一下面試的公司在做什麼。


應變、解決問題的能力

  • Tell me about a challenge you faced. What was your role & the outcome? 請分享你遇過的困難,你擔任什麼職位且結果如何?
  • How do you deal with vague/unclear instructions? 你怎麼應對模糊、不清楚的指示?
  • Tell me about a time you failed at work. 跟我說說你失敗的經驗。

失敗的經驗這題比較特別,我自己覺得是最難準備的題目。因為我們都不太喜歡談論自己的失敗,但這題其實是很重要的,因為公司想知道你遇到困難時的應變能力,以及你如何從失敗中學習。針對這類的缺點、失敗等等的問題,千萬不要轉了個大彎 說自己的缺點是「太認真」、「太努力」、「太有責任感」,這些並不是面試官跟公司想得到的資訊,這題的重點要放在:你從失敗中學到了什麼,以及你如何解決這個問題。


分配時間、任務優先度的判斷

  • Tell me about a time you had to work quickly. 請分享當你需要很快的完成工作的經驗。

團隊合作

  • Tell me the most challenging experience to work in a team? 請分享關於團隊合作中最挑戰的事情。
  • Tell me about a time you disagreed with a coworker/manager/decision 請分享你不同意你的同事/主管/決策的時候

這份柏克萊 HR 提供的 Behavioral Interview Tips & Examples 也有把常見的問題分類,裡面有更多的例子可以參考。

準備建議

大家都知道回答 BQ 題目必須要準備一堆故事,但要怎麼取材、怎麼有效率的敘述你的故事呢?


取材: 把經歷上標籤

上面提到的題目這麼多,相信大多數人沒有辦法經驗與題目一一對應。事實上,面試官不可能每個題目都問你,你的一個經歷也通常會有多個面向與事件可以對應到不同的問題。所以我建議大家可以把自己的經歷上標籤,針對一個相同經歷,找出可以符合題目要求的事件或是心得來回答。舉個例子,我的 NTUCourse Neo 專案,我就準備了快速完成工作、不同意組員想法還有遇到的困難這些點。這樣就可以有效率的利用一個經驗來回答多個題目。


架構: STAR 法則

針對故事的敘事架構,STAR 法則 是一種回答基於行為面試問題的結構化回答方式,很多公司的面試指南都會提到,我在此再度簡略的敘述一些重點,我也會提供以 NTUCourse Neo 為主題的範例:


💬 Situation: 當時的情境

針對故事當時的背景做介紹,可以包含一些故事的背景資訊,例如:專案的背景、公司的背景、團隊的背景等等。這邊可以試著把故事的背景資訊簡化成一兩句話,讓面試官能夠快速的了解故事的背景。這裡的背景可以是動機、目標、環境、限制等等。

台大的課程規劃與註冊網站近 20 年來幾乎未曾更新。過去有一些自行開發的替代方案,但並非所有的解決方案都有帶來顯著的影響,有些網站甚至無法長久營運。課程資訊分散在不同的網站上,且輸入課程排序的使用者介面難以使用。原先系統對於每門課程的志願序使用下拉式選單,當學生想更改志願序時都感到相當困擾。


🗒️ Task: 你的任務

講關於你的目標,你在這個故事的最後想要達成什麼樣的目標。這邊可以試著把目標簡化成一兩句話,讓面試官能夠快速的了解你的目標。

我們需要在兩個月內建立一個新的課程規劃服務。除了深度整合學校的系統,以提供更好的使用者體驗外,我們還需要開發更先進的課程規劃邏輯與使用者介面,這在過去從未有人做過。


🏃 Action: 你做了什麼

描述你採取的行動。想想這些問題吧:你做了哪些步驟?你的貢獻為何?讓面試官知道做了什麼,而不是你的團隊或團隊做了什麼。盡量避免使用「我們」,而是使用「我」。

我設計了 API 規格與雲端基礎架構。我也提出了一些前端的使用者流程與使用者介面的想法。基礎架構包含了一個靜態網站、一個後端容器服務,以及一個托管的 MongoDB。此外,我使用了 Azure Functions,這是一個類似 AWS Lambda 的無伺服器函式服務,以節省計算資源。我使用 API Gateway 整合了我們的端點,以支援微服務設計架構。


🎉 Result: 你的結果

試著想想:結果為何? 你完成了什麼? 你學到了什麼?數據會說話,如果可以的話,可以提供一些數據來證明你的結果。 例如速度的提升、成本的降低、使用者的增加等等。

Neo 的主要功能是... 自去年底以來,Neo 已經協助超過 10,000 名學生進行課程規劃,並且這個專案將在 2022 年第三季正式被學校收購。團隊與台大教務處資訊組合作,對某些功能進行了更改,並且目前正在遷移至自行架設的基礎架構,以符合學校的政策與標準。


敘述: 主題與細節

還記得在學英文作文時,老師都會教我們要有主題句 (Topic sentence) 跟支持句 (Supporting sentence) 嗎?這個技巧在回答 BQ 題目時也很有用,因為這樣可以讓面試官更容易理解你的故事。我們可以把故事的主題句放在故事的開頭,然後再把細節放在主題句之後。這樣的好處是,面試官可以在聽到主題句時就知道你的故事在講什麼,然後再聽你的細節來了解你的故事。這樣的架構也可以讓你的故事更有邏輯性,讓面試官更容易理解你的故事。 如果用流水帳的方式把故事講完,除了過於冗長之外,你想強調的重點會散落在你的故事各處。 這樣面試官聽久了不只注意力會發散,而且也更難收集到你想要的 signal(資訊、訊號)。


方向: 猜公司想要的

如上一章所寫,準備問題時先想想:「為什麼問這個?面試官想得到什麼資訊?」,除了這個再想想:「公司想找什麼樣的人?」,這樣可以讓你更有方向的準備問題。舉個例子,如果你想應徵一間新創公司,那麼他們可能會想要找一個能夠快速學習、適應變化的人,所以你可以在準備問題時多想想這些方向,這樣可以讓你更有針對性的準備問題。 另外,對於有些有準則 (Principles) 的公司,例如亞馬遜的 16 則天條 Leadership Principles 就是一個準備的大重點。 他們所提問的每個問題幾乎都會與其中的準則有關,所以我們在回答的時候也要盡量把這些準則融入我們的故事中。


最後叮嚀

知道上述的這些技巧後,就能把故事整理成條列式或是逐字稿,這樣在面試時就不會忘記重點,也能有效率的把故事講完。這對於英語不是母語的我來說尤其重要,說中文時大多可以隨機應變,但說英文的時候這個技能就會有點被削弱了 😅。有故事、有稿子之後就能試著找朋友練習,這樣可以讓別人給予你回饋,同時也是一個練習口說的機會。以下是我最後的 murmur 小叮嚀:


不要說謊、不要說謊、不要說謊

因為很重要,所以說三次。不能說謊,但可以避重就輕:可以嘗試著重在對你、對故事有利的細節上,但千萬不要唬爛! 編個完全假的故事會有很多漏洞,面試官很容易就會發現你在說謊。對於 BQ 問題,面試官一定會追問你很多細節,舉個例子,我曾經被一位面試官問到如何解決一個問題,在回答時我只提到了我最後使用 signal handler 來解決,最後面試官居然問到那麼細:「你使用了哪個 signal?」我當時還回想了一下,我是使用一個系統內部自訂的 signal handler,總之幸好我還記得這個 signal 的名字與定義。 這個經驗很好的說明了面試官對於故事細節的重視,所以千萬不要為了讓故事更完美而編造假的細節,這樣只會讓你的故事更不完美。


避免虛無縹緲的回答

在回答的時候,可以看看自己回答是否有提供夠具體的細節,這其實有點類似簡歷健檢。 不要使用過多的形容詞,而是使用具體的數字、細節來說明你的故事。舉個例子,如果你說你的專案有很多人使用,那麼你可以說:

我們的網站單個月就有高達 200,000 人次的使用。

而不是說:

我們的專案有很多在用,非常的熱門!

另一方面,在敘述故事的時候可以盡量描述出細節,而不是草率的帶過。過度簡化細節很多時候會讓你根本就是有講等於沒講,聽起來也會很像是在編故事。舉例來說,別說:

因為在整合舊系統的過程中遇到了一些問題,最後我看了一些文件後解決了。

你可以說:

因為在整合舊版本的系統時遇到了 Python 版本不相容的問題,最後透過查閱 Python doc 和詢問同事後發現版本必須為 3.9 以上才能正常運作。最後我在確保新版本的不會影響其他功能的情況下,將 Python 升級到 3.9.7,並且在測試後發現問題已經解決。

對於回答的細節掌握我也沒辦法給一個確定的答案,一切都取決於面試官。 面試就是一來一往的過程,如果覺得細節不足面試官也大多會繼續追問,所以針對這點是不需要太過擔心。


別忘了,你也得提問!

每場面試的最後一定都有提問環節,這個環節其實也是很重要的,因為這是你了解公司的機會,同時也是展現你對這間公司的重視。可以在這個環節中提出一些問題,例如:公司的文化、團隊的組成、工作內容等。這邊有一個小技巧,如果是人資 (HR) 的話可以問關於招聘流程、公司文化、移民政策等等,如果是工程師的話可以問關於團隊的組成、工作內容、使用的技術等等。曾經就有朋友問了他的工程師面試官關於綠卡政策的問題,無奈面試官是個美國人 - 沒有移民需求,自然的也不清楚公司對於國際生的綠卡政策。所以在提問的時候也要針對面試官的身份來提問,這樣才能得到更好的回答。


綜合以上就是我在面試時、幫朋友練習時的一些心得,希望這些資訊能夠讓大家更順利的準備 Behavioral Question,也能夠在面試時更有自信。最後祝大家找工作順利! 面試都能順利過關!

參考資料

Carnegie Mellon University - Interviewing Basics
Berkeley HR - Behavioral Interview Tips & Examples
Amazon - Leadership Principles
Amazon - Prepare for your interview
Interviewing at Google: best practices, advice, and tips

Unauthorized copying is prohibited.
版權所有,未經同意請勿轉載。


關於作者 | About Author


author avatar

James Chang

@jc-hiroto

Software Engineer + Photographer

在灣區奮鬥的臺灣菜鳥工程師,平時除了寫扣也愛到處走走拍底片。這邊主要會聊一些關於軟體工程師的主題,同時也是我分享相片作品的地方。

A Taiwanese software engineer in the Bay Area. I love writing random code and film photography. This blog is mainly about software engineering and my photography works.

Copyright © 2024 James Chang.