前陣子剛結束求職之旅,有一些心得想要記錄下來,原本想寫兩篇,一篇是履歷相關的心得、另外一篇是面試問答準備(就是這一篇),仔細想想之後發現履歷相關心得可以分享的比較少,於是就作罷了。

如果對履歷相關心得有興趣的,可以參考下面這篇,我的做法也十分類似(只是沒有那麼認真),就是從 JD 上面畫重點,整理出這個職缺注重的能力,再回推到自己有哪些相關的經驗。

從 0 到 1 的求職指南:那些年我做過的「白工」

以工程師來說,會被問到的問題幾乎都是技術問題。而這類問題的相關準備網路上資源已經很多了,反正不外乎就是跟你應徵的領域有關,以及共同科目資料結構、演算法、作業系統、網路 TCP/IP 等等。

我這次準備最多的反倒不是技術問題,而是 behavior question,這類的問題不外乎是問你在某種狀況之下會怎麼做,或是問你之前有沒有類似的經驗。

除了被問問題以外,求職的另外一個重要環節是問面試官問題,我覺得這個步驟真的超級重要,多問一點可以讓你更了解這間公司或者是工作上的細節。以前求職時不懂事,完全不知道要問什麼,就傻傻地進了公司,進去之後才發現不是自己想像中的那回事。

有了以前的經驗,就知道下一次面試時該問什麼問題了。

除了技術問題跟 behavior question 以外,還有常見問題以及跟自身背景有關的問題,常見問題像是:做個簡單的自我介紹、為什麼想加入我們、為什麼離開上一間公司等等。跟自身相關的問題對每個人來說就差異很大了,因為每個人的背景都不太一樣。

下面會分幾個段落來講各種問題的準備。

主要原則

雖然已經脫離校園好一段時間了,但大家應該還記得以前是怎麼準備考試的。基本上面試就跟考試沒兩樣,就是考前猜題然後練習,準備得越充足,表現就越好。

但如果只是死背題目的話,碰到一點變化就完蛋了,因為只是死背而沒有去理解。我認為比較好的方式還是去仔細理解題目要問的到底是什麼。通常面試題目都可以簡單的分類幾個類別,每個類別內的題目都類似,這個等等會再提到。

之前看過一篇文章寫說面試在回答問題時,其實就跟說故事一樣,你要說得完整、說人引人入勝,說得越好,表現得就越好。仔細想一想發現滿有道理的。

大家應該有聽過 STAR 法則,是由下面四個單字開頭組合而成的:

  1. 情境(Situation)
  2. 任務(Task)
  3. 行動(Action)
  4. 結果(Result)

如果不知道怎麼回答,就可以先從這四個方向去想,就能夠構成一個具有完整架構的故事。

接著談一談準備的方式好了,一般來說我都是先擬好題目,然後再稍微寫一下答案。我有認識的人是會把寫下來的答案直接背起來的那種,但我這個人一旦背了,就會表現得一副:「我在唸稿」的樣子,極度不自然。

因此我自己稍微寫過怎麼回答以後,會簡略的記下來以便下次複習。準備的過程也滿簡單,就是自己回答一兩次。因為這次面試都是英文的,所以在回答的途中如果有些地方卡住,就可以去查那些卡住的地方應該怎麼講會比較順,也可以發覺有哪些單字自己不熟悉而記下來。

總而言之,就是自己幫自己模擬面試的意思。

面試必問問題

以我這次跟以往的經歷來說,有幾題出現的機率超級高,我把它歸類在必問問題。

  1. 可以做個簡單的自我介紹嗎?
  2. 可以講一下你現在在做什麼嗎?(針對在職找工作的人)
  3. 可以講一下你上一份工作在做些什麼嗎?(針對離職後找工作的人)
  4. 上一份為什麼想要離職?
  5. 為什麼想加入我們公司?(或者是:為什麼對這個職位有興趣?)

這類問題其實不用花太多時間準備,因為跟自身相關的問題,一定是最熟悉的。總不可能叫你自我介紹,然後你想個三十分鐘還想不出來吧?

這類問題相對親切,而且一定會一直一直一直被問到,但只要花點時間準備一下就好。

以我來說,叫我自我介紹的話,我的回答大概是這樣:

Hi, I am huli from Taiwan. I have been worked in Singapore for about 1 year. I work at Garena, I was responsible for built a live streaming website like twitch and youtube gaming. The player can streaming while they are playing the game, and the viewer can chat, donate or send gift. I focus on the frontend part, and there is only 1 people in frontend, which is me. The team is quite small, just me and 3 backend developer and PM.

這邊順便講一下,如果你跟我一樣是一個英文普通或是稍差的人,英文面試的唯一訣竅就是:

說就對了。

管他什麼文法錯誤、時態錯誤或是單字用錯,你說就對了。文法錯誤也比什麼不說來的好,至少你盡力去表達了。而且面試就那麼一次,你這次不說,以後也沒機會說了,所以到那個時候,只要什麼都不管,儘管說就是了。

因為面試官的英文通常都滿好的,儘管你有些小錯誤,他一定聽得懂你想表達的意思大概是什麼,舉例來說,你看看下面這一段好了:

你好,我叫阿明,三個月在台灣居住,現在當老師在補習班,教小朋友英文。我學中文已經三個多月,以前在美國當業務拍賣東西,很興奮認識你。

上面這段是模擬中文一些奇怪的文法,但儘管如此,你一定看得懂上面那段在說些什麼,因為你中文很好嘛!我自己覺得對那些英文很好的面試官來說,我在回答時他們應該也是這樣的。可能有些地方用錯,但他們一定聽得懂,反正如果聽不懂他們應該也會問才對。

總之,真的就是說就對了,這次不說下次也沒機會說了,就豁出去吧!

這些必問問題通常在第一關 phone interview 的時候就會碰到了,我的參考資料有以下幾篇文章:

  1. HOW TO ANSWER: Describe your current position.
  2. 面試準備與技巧
  3. 【商用英語】電話英語面試 5 步驟,前進外商不是問題!
  4. Phone Interview Questions and the Best Answers

自身相關問題

這一類的問題都跟你自己有關,所以你要自己從你的背景裡面去想說可能會被問一些什麼問題。

以我自己來說,我那時候準備了下面這些問題:

  1. 為什麼休學
  2. 為什麼不念資工系
  3. 為什麼念哲學
  4. 在哲學系你學到什麼
  5. 你最驕傲的成就是什麼
  6. 你的優點是什麼
  7. 你的缺點是什麼
  8. 你怎麼持續讓自己獲得科技相關的新知

跟自己相關的問題其實也滿好答的,準備方式就跟之前說的一樣,自己擬一個答案之後試圖回答,邊回答邊記錄自己卡住的地方,查查看有什麼單字可以用。回答個幾次之後就會熟悉這個答案了,講得會順很多。

Behavior question

我在這一類的問題上面花了最長的時間。

原因很簡單,因為工程師比較少碰到這類的問題。我以往的經歷都只會被問技術問題而已,其他問題超級少。但因為我這次投的職缺有一個是 support engineer,跟一般工程師的工作內容比較不一樣,所以有一關就是一直在考這類型的問題。

準備方式同上,先找好題目之後自己準備。但這邊的題目超級多,所以不太可能每一題都準備。我認為比較好的做法是稍微分類一下,把類似的題目分在一起,可以用同一個故事來回答。

我最後準備好的題庫長這樣:

目標相關:如何設定、如何完成、達成與沒達成的經驗

  1. Give an example of how you set goals.
  2. Give an example of a goal you reached and tell me how you achieved it.

壓力相關:如何跟壓力共處?在壓力之下如何有效率工作?

  1. Tell me about how you worked effectively under pressure.
  2. How did you handle meeting a tight deadline?
  3. Tell me about a time you were under a lot of pressure. What was going on, and how did you get through it?

失敗、犯錯類

  1. Tell me about a time you failed. How did you deal with the situation?
  2. Have you ever made a mistake? How did you handle it?

挑戰類

  1. Describe a complex situation you encountered and how you solved it
  2. Have you handled a difficult situation? How?
  3. How do you handle a challenge? Give an example.
  4. Tell me the most difficult issue you encountered

做決定類:你如何做決定?怎麼搜集資訊?

  1. Did you ever make a risky decision? Why? How did you handle it?
  2. Did you ever postpone making a decision? Why?
  3. Describe a decision you made that wasn’t popular and how you handled implementing it.
  4. Tell me about a difficult decision you’ve madein the last year.
  5. Do you always make decisions on your own without the help of others?

團隊合作類:如何團隊合作

  1. Give an example of how you worked on a team.
  2. Share an example of how you were able to motivate employees or co-workers.

溝通類

  1. What do you do if you disagree with someone at work?
  2. What do you do if you disagree with your boss?
  3. Do you listen? Give an example of when you did or when you didn’t listen.
  4. If there is a disagreement at work, how do you solve the conflict?
  5. Describe a situation in which you were able to use persuasion to successfully convince someone to see things your way.
  6. Can you give me an example when you handled some conflict in work environment? What is your typical way of dealing with conflicts?

工作排程類:如何處理工作上的優先程度?

  1. When you worked on multiple projects how did you prioritize?
  2. How do you prioritise projects & tasks when scheduling your time? Give me two examples.

主動類:你有多積極?

  1. Give me an example of when you showed initiative and took the lead.
  2. Describe a time when you anticipated potential problems and developed preventive measures
  3. Can you tell me a time when took the initiative at improving processes at your work?
  4. Have you gone above and beyond the call of duty? If so, how?

每一類的題目我都準備了一到兩個小故事,以我自身的例子來回答那些問題。舉例來說,在回答溝通類的問題時,我會舉一個我跟設計師溝通的例子。

S: 跟設計師討論 UI 怎麼改,例如說這個 button 會不會太暗
A: 對我來說,好的 UX 就是不會讓你覺得怪,但彼此各有各的角度
R: 當兩個人都很合理的時候,我會尊重專業

我到後面越準備越發現 T 好像不是那麼明確,或者說其實在很多故事中也不用特別提到,之後就索性不寫了。但只要不妨礙故事的完整性即可。

回答有關挑戰類的題目時,我準備了這個故事:

S: 發現 cookie 沒辦法寫進去,狀況很詭異
T: debug
A: 找 chrome 原始碼,找到 cookie 那部分,看到解釋
R: 成功解決 bug 並且寫 blog 文章分享

我記錄下來的就是一些重點而已,詳細的故事因為是自身的經歷,所以不用特別去記也不致於忘記。跟我上面所說的一樣,我會把這個故事自己講一遍試試看,把一些卡的地方給修正掉。

最後再舉一個例子,我回答犯錯、失敗類的題目或者是「如何跟壓力共處」會舉下面這個故事:

S: 發現網站出問題,player 不能播
T: 修好 player
A: 不能心急,stay calm more than usual,越心急越會出錯
R: 修好之後趕快上線,隔天上班補足相關測試

我的完整回答大概會是下面這樣:

One day, maybe at 9 or 10 pm, my PM told me that some channels can not watch. The users report that the player is a black screen. It make me feel pressure because I have to run against the time. I have to fix it asap. But I know that at that situation, I have to stay calm more than usual. Because if you are nervous, the more possibility you could make mistake.

So, what I do is stay calm and try to recall that what I have changed on that day. And I quickly found there is a bug in the code, a small change cause this issue. So I just rollback to the previous version and deploy again. bug fixed.

There is one thing I learned: never deploy a new feature or a new version on Friday. or maybe you have to work on the weekend. Also, for me, the most important thing is not about “you made a mistake”. It’s about what you learned from this? and how to prevent it happening again.

我就想到什麼打什麼,但跟我當初的回答應該差不多。上面一定有一大堆文法錯誤,但我相信應該還是能理解我想表達的意思。

在準備 behavior question 的過程中,我參考了下面這些資源:

  1. Top 10 Behavioral Interview Questions and Answers
  2. 28 Behavior Based Job Interview Questions
  3. 30 Behavioral Interview Questions You Should Be Ready to Answer
  4. Behavioral Interview Questions
  5. Behavioral Interview Questions And Answers 101
  6. Effective Interviewing Skills
  7. How to Answer “Behavior Based Interview Questions” — Interview Tip
  8. Interview Question: Tell me about a time you handled a difficult situation
  9. 英文面試系列: Behavioral 行為問題答題技巧及破解口試陷阱
  10. Behavior Interview--我的一点经验(节选) by Xumin Hu

最後一關:有什麼想問我的嗎?

這通常都是面試的最後一題了。攻守交換,由你來問面試官問題,對方負責回答。

我上面有說過了,這是很重要的一個階段,可以讓你更了解公司在做些什麼,以及他們的工作型態等等。這個階段事先準備好問題很重要,我通常還會存在 Evernote 避免忘記。

先給大家看一下我這次面試中有問的,然後我覺得還不錯的問題:

  1. Could you describe the day of the support engineer?
  2. How do you measure the performance for the support engineer?(問主管的)
  3. What’s your favorite part about working here?

第一個問題可以讓我更了解這個職位在做什麼,第二個問題讓我知道哪些項目會列入考核標準,最後一個則是對每一個人都可以問的一個滿有趣的問題。

不過我問的問題其實滿普通的,如果你願意的話也可以問一些特別的,例如說:在這邊工作你最討厭什麼?之類的。

其實這裡的問題根據應徵的職位差距很大,我只能列出我這次準備的跟工程師相關的題目:

工作流程相關

  1. 你如何知道你每天要做什麼?(How do you know what to work on each day)
  2. 可以試著描述你的一天在做什麼嗎?
  3. 假設上線後發現一個 bug,處理流程會是什麼
  4. 用什麼版本控制工具?如果是 git,那對於 branch 的處理流程為何?例如說:bug/feature 各開一個 branch? What version control system do you use?

團隊相關

  1. 用什麼樣的協作工具?(What collaboration tools do you use?)
  2. 工程師總人數
  3. 一個專案大概有多少人,有哪些人?怎樣分佈的?工程師可以參與產品開發的討論嗎?
  4. 前端團隊幾個人,怎麼分工?
  5. 進去之後會跟哪些人一起工作
  6. 前端跟設計師透過什麼工具配合

程式細節相關

  1. 會寫單元測試嗎?用了哪些工具?(Do you write unit tests? what tools do you use?)
  2. 有寫 end-to-end 測試嗎?
  3. 有做 code review 嗎?(Do you do code review? Does all code get reviewed?)
  4. 有用 Jenkins 或 Travis 做 CI 嗎?(Do you have continuous integration? like Jenkins or travis?)
  5. Server 放在雲端還是自己建
  6. 可以談談公司裡面使用到的技術棧嗎?
  7. 平均的 qps

產品相關

  1. 這個產品的 DAU 是多少?
  2. 這個產品的下一個主要目標是什麼?

福利相關

  1. 醫療保險
  2. 一般看病的補助
  3. 年假幾天?How many annual leaves do you have?
  4. 參加技術活動有沒有補助

制度相關

  1. 怎麼做績效考核?(How do you measure individual performance)
  2. 會固定調薪嗎?(Do you do annual salary increases?)
  3. What time do people normally leave work?
  4. Would I need to be on call? How often?

假如是國外公司

  1. 租房補助
  2. 簽證
  3. 機票補助

總之這邊的準備就是好好思考一下有哪些想要問的。通常最有靈感的時候會是什麼?會是你加入一間新公司的時候。因為有可能新公司跟你的期望不符,例如說你原本預期是加入一個 team,結果進去之後卻是一人戰隊。

這時候你一定會想在下一次面試時問說:「可以談談我之後會加入的 team 嗎?有幾個人?還是其實只有我一個?」。

不過,公司當然也有可能會騙人,給你錯誤的資訊。但這邊就不考慮這種的可能性了,因為這種很難防。如果大家有什麼防止公司騙人的小技巧,也麻煩留言在底下,感激不盡。

我覺得我問的問題算是很普通的了,有一些題目更刁鑽更難回答一點,不過要問什麼就是見仁見智啦,我覺得我問上面那些就滿夠的了。建議大家偶爾維護一下自己的題庫,就不用每次求職時再想一遍了。

有關於這些問公司的問題,底下這些都是很好的參考資料:

  1. Questions I’m asking in interviews
  2. 開發人員的面試指南  — A developer’s guide to interviewing
  3. 「Any questions?」英文面試的最後一題,你該這樣答!
  4. 【職場英文】沒問題就是有問題! 面試時你應該問的 9 個好問題!

總結

面試就像考試一樣,考前猜題、寫擬答、反覆練習。當你的面試經歷豐富之後,就會發現有些題目一再出現,這些就是所謂的萬年考古題了。

其實我的面試經驗也不多啦,尤其是最近兩次求職,都是只面了一兩間就拿到 offer,就決定不去面其他的了。寫這篇文章一來是為自己留個紀錄,二來是覺得這篇文章應該可以幫助到一些人。

以前我對於準備面試其實滿沒有頭緒的,而且我認為不用刻意準備也可以,因為你有多少實力,面試就能表現出多少。但後來我發現面試其實就跟考試一樣,是可以刻意準備、刻意練習的。既然有這個練習的機會,why not?

大概就是這樣了,祝大家面試順利!