前陣子剛結束求職之旅,有一些心得想要記錄下來,原本想寫兩篇,一篇是履歷相關的心得、另外一篇是面試問答準備(就是這一篇),仔細想想之後發現履歷相關心得可以分享的比較少,於是就作罷了。
如果對履歷相關心得有興趣的,可以參考下面這篇,我的做法也十分類似(只是沒有那麼認真),就是從 JD 上面畫重點,整理出這個職缺注重的能力,再回推到自己有哪些相關的經驗。
以工程師來說,會被問到的問題幾乎都是技術問題。而這類問題的相關準備網路上資源已經很多了,反正不外乎就是跟你應徵的領域有關,以及共同科目資料結構、演算法、作業系統、網路 TCP/IP 等等。
我這次準備最多的反倒不是技術問題,而是 behavior question,這類的問題不外乎是問你在某種狀況之下會怎麼做,或是問你之前有沒有類似的經驗。
除了被問問題以外,求職的另外一個重要環節是問面試官問題,我覺得這個步驟真的超級重要,多問一點可以讓你更了解這間公司或者是工作上的細節。以前求職時不懂事,完全不知道要問什麼,就傻傻地進了公司,進去之後才發現不是自己想像中的那回事。
有了以前的經驗,就知道下一次面試時該問什麼問題了。
除了技術問題跟 behavior question 以外,還有常見問題以及跟自身背景有關的問題,常見問題像是:做個簡單的自我介紹、為什麼想加入我們、為什麼離開上一間公司等等。跟自身相關的問題對每個人來說就差異很大了,因為每個人的背景都不太一樣。
下面會分幾個段落來講各種問題的準備。
主要原則
雖然已經脫離校園好一段時間了,但大家應該還記得以前是怎麼準備考試的。基本上面試就跟考試沒兩樣,就是考前猜題然後練習,準備得越充足,表現就越好。
但如果只是死背題目的話,碰到一點變化就完蛋了,因為只是死背而沒有去理解。我認為比較好的方式還是去仔細理解題目要問的到底是什麼。通常面試題目都可以簡單的分類幾個類別,每個類別內的題目都類似,這個等等會再提到。
之前看過一篇文章寫說面試在回答問題時,其實就跟說故事一樣,你要說得完整、說人引人入勝,說得越好,表現得就越好。仔細想一想發現滿有道理的。
大家應該有聽過 STAR 法則,是由下面四個單字開頭組合而成的:
- 情境(Situation)
- 任務(Task)
- 行動(Action)
- 結果(Result)
如果不知道怎麼回答,就可以先從這四個方向去想,就能夠構成一個具有完整架構的故事。
接著談一談準備的方式好了,一般來說我都是先擬好題目,然後再稍微寫一下答案。我有認識的人是會把寫下來的答案直接背起來的那種,但我這個人一旦背了,就會表現得一副:「我在唸稿」的樣子,極度不自然。
因此我自己稍微寫過怎麼回答以後,會簡略的記下來以便下次複習。準備的過程也滿簡單,就是自己回答一兩次。因為這次面試都是英文的,所以在回答的途中如果有些地方卡住,就可以去查那些卡住的地方應該怎麼講會比較順,也可以發覺有哪些單字自己不熟悉而記下來。
總而言之,就是自己幫自己模擬面試的意思。
面試必問問題
以我這次跟以往的經歷來說,有幾題出現的機率超級高,我把它歸類在必問問題。
- 可以做個簡單的自我介紹嗎?
- 可以講一下你現在在做什麼嗎?(針對在職找工作的人)
- 可以講一下你上一份工作在做些什麼嗎?(針對離職後找工作的人)
- 上一份為什麼想要離職?
- 為什麼想加入我們公司?(或者是:為什麼對這個職位有興趣?)
這類問題其實不用花太多時間準備,因為跟自身相關的問題,一定是最熟悉的。總不可能叫你自我介紹,然後你想個三十分鐘還想不出來吧?
這類問題相對親切,而且一定會一直一直一直被問到,但只要花點時間準備一下就好。
以我來說,叫我自我介紹的話,我的回答大概是這樣:
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 的時候就會碰到了,我的參考資料有以下幾篇文章:
- HOW TO ANSWER: Describe your current position.
- 面試準備與技巧
- 【商用英語】電話英語面試 5 步驟,前進外商不是問題!
- Phone Interview Questions and the Best Answers
自身相關問題
這一類的問題都跟你自己有關,所以你要自己從你的背景裡面去想說可能會被問一些什麼問題。
以我自己來說,我那時候準備了下面這些問題:
- 為什麼休學
- 為什麼不念資工系
- 為什麼念哲學
- 在哲學系你學到什麼
- 你最驕傲的成就是什麼
- 你的優點是什麼
- 你的缺點是什麼
- 你怎麼持續讓自己獲得科技相關的新知
跟自己相關的問題其實也滿好答的,準備方式就跟之前說的一樣,自己擬一個答案之後試圖回答,邊回答邊記錄自己卡住的地方,查查看有什麼單字可以用。回答個幾次之後就會熟悉這個答案了,講得會順很多。
Behavior question
我在這一類的問題上面花了最長的時間。
原因很簡單,因為工程師比較少碰到這類的問題。我以往的經歷都只會被問技術問題而已,其他問題超級少。但因為我這次投的職缺有一個是 support engineer,跟一般工程師的工作內容比較不一樣,所以有一關就是一直在考這類型的問題。
準備方式同上,先找好題目之後自己準備。但這邊的題目超級多,所以不太可能每一題都準備。我認為比較好的做法是稍微分類一下,把類似的題目分在一起,可以用同一個故事來回答。
我最後準備好的題庫長這樣:
目標相關:如何設定、如何完成、達成與沒達成的經驗
- Give an example of how you set goals.
- Give an example of a goal you reached and tell me how you achieved it.
壓力相關:如何跟壓力共處?在壓力之下如何有效率工作?
- Tell me about how you worked effectively under pressure.
- How did you handle meeting a tight deadline?
- Tell me about a time you were under a lot of pressure. What was going on, and how did you get through it?
失敗、犯錯類
- Tell me about a time you failed. How did you deal with the situation?
- Have you ever made a mistake? How did you handle it?
挑戰類
- Describe a complex situation you encountered and how you solved it
- Have you handled a difficult situation? How?
- How do you handle a challenge? Give an example.
- Tell me the most difficult issue you encountered
做決定類:你如何做決定?怎麼搜集資訊?
- Did you ever make a risky decision? Why? How did you handle it?
- Did you ever postpone making a decision? Why?
- Describe a decision you made that wasn’t popular and how you handled implementing it.
- Tell me about a difficult decision you’ve madein the last year.
- Do you always make decisions on your own without the help of others?
團隊合作類:如何團隊合作
- Give an example of how you worked on a team.
- Share an example of how you were able to motivate employees or co-workers.
溝通類
- What do you do if you disagree with someone at work?
- What do you do if you disagree with your boss?
- Do you listen? Give an example of when you did or when you didn’t listen.
- If there is a disagreement at work, how do you solve the conflict?
- Describe a situation in which you were able to use persuasion to successfully convince someone to see things your way.
- Can you give me an example when you handled some conflict in work environment? What is your typical way of dealing with conflicts?
工作排程類:如何處理工作上的優先程度?
- When you worked on multiple projects how did you prioritize?
- How do you prioritise projects & tasks when scheduling your time? Give me two examples.
主動類:你有多積極?
- Give me an example of when you showed initiative and took the lead.
- Describe a time when you anticipated potential problems and developed preventive measures
- Can you tell me a time when took the initiative at improving processes at your work?
- 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 的過程中,我參考了下面這些資源:
- Top 10 Behavioral Interview Questions and Answers
- 28 Behavior Based Job Interview Questions
- 30 Behavioral Interview Questions You Should Be Ready to Answer
- Behavioral Interview Questions
- Behavioral Interview Questions And Answers 101
- Effective Interviewing Skills
- How to Answer “Behavior Based Interview Questions” — Interview Tip
- Interview Question: Tell me about a time you handled a difficult situation
- 英文面試系列: Behavioral 行為問題答題技巧及破解口試陷阱
- Behavior Interview--我的一点经验(节选) by Xumin Hu
最後一關:有什麼想問我的嗎?
這通常都是面試的最後一題了。攻守交換,由你來問面試官問題,對方負責回答。
我上面有說過了,這是很重要的一個階段,可以讓你更了解公司在做些什麼,以及他們的工作型態等等。這個階段事先準備好問題很重要,我通常還會存在 Evernote 避免忘記。
先給大家看一下我這次面試中有問的,然後我覺得還不錯的問題:
- Could you describe the day of the support engineer?
- How do you measure the performance for the support engineer?(問主管的)
- What’s your favorite part about working here?
第一個問題可以讓我更了解這個職位在做什麼,第二個問題讓我知道哪些項目會列入考核標準,最後一個則是對每一個人都可以問的一個滿有趣的問題。
不過我問的問題其實滿普通的,如果你願意的話也可以問一些特別的,例如說:在這邊工作你最討厭什麼?之類的。
其實這裡的問題根據應徵的職位差距很大,我只能列出我這次準備的跟工程師相關的題目:
工作流程相關
- 你如何知道你每天要做什麼?(How do you know what to work on each day)
- 可以試著描述你的一天在做什麼嗎?
- 假設上線後發現一個 bug,處理流程會是什麼
- 用什麼版本控制工具?如果是 git,那對於 branch 的處理流程為何?例如說:bug/feature 各開一個 branch? What version control system do you use?
團隊相關
- 用什麼樣的協作工具?(What collaboration tools do you use?)
- 工程師總人數
- 一個專案大概有多少人,有哪些人?怎樣分佈的?工程師可以參與產品開發的討論嗎?
- 前端團隊幾個人,怎麼分工?
- 進去之後會跟哪些人一起工作
- 前端跟設計師透過什麼工具配合
程式細節相關
- 會寫單元測試嗎?用了哪些工具?(Do you write unit tests? what tools do you use?)
- 有寫 end-to-end 測試嗎?
- 有做 code review 嗎?(Do you do code review? Does all code get reviewed?)
- 有用 Jenkins 或 Travis 做 CI 嗎?(Do you have continuous integration? like Jenkins or travis?)
- Server 放在雲端還是自己建
- 可以談談公司裡面使用到的技術棧嗎?
- 平均的 qps
產品相關
- 這個產品的 DAU 是多少?
- 這個產品的下一個主要目標是什麼?
福利相關
- 醫療保險
- 一般看病的補助
- 年假幾天?How many annual leaves do you have?
- 參加技術活動有沒有補助
制度相關
- 怎麼做績效考核?(How do you measure individual performance)
- 會固定調薪嗎?(Do you do annual salary increases?)
- What time do people normally leave work?
- Would I need to be on call? How often?
假如是國外公司
- 租房補助
- 簽證
- 機票補助
總之這邊的準備就是好好思考一下有哪些想要問的。通常最有靈感的時候會是什麼?會是你加入一間新公司的時候。因為有可能新公司跟你的期望不符,例如說你原本預期是加入一個 team,結果進去之後卻是一人戰隊。
這時候你一定會想在下一次面試時問說:「可以談談我之後會加入的 team 嗎?有幾個人?還是其實只有我一個?」。
不過,公司當然也有可能會騙人,給你錯誤的資訊。但這邊就不考慮這種的可能性了,因為這種很難防。如果大家有什麼防止公司騙人的小技巧,也麻煩留言在底下,感激不盡。
我覺得我問的問題算是很普通的了,有一些題目更刁鑽更難回答一點,不過要問什麼就是見仁見智啦,我覺得我問上面那些就滿夠的了。建議大家偶爾維護一下自己的題庫,就不用每次求職時再想一遍了。
有關於這些問公司的問題,底下這些都是很好的參考資料:
- Questions I’m asking in interviews
- 開發人員的面試指南 — A developer’s guide to interviewing
- 「Any questions?」英文面試的最後一題,你該這樣答!
- 【職場英文】沒問題就是有問題! 面試時你應該問的 9 個好問題!
總結
面試就像考試一樣,考前猜題、寫擬答、反覆練習。當你的面試經歷豐富之後,就會發現有些題目一再出現,這些就是所謂的萬年考古題了。
其實我的面試經驗也不多啦,尤其是最近兩次求職,都是只面了一兩間就拿到 offer,就決定不去面其他的了。寫這篇文章一來是為自己留個紀錄,二來是覺得這篇文章應該可以幫助到一些人。
以前我對於準備面試其實滿沒有頭緒的,而且我認為不用刻意準備也可以,因為你有多少實力,面試就能表現出多少。但後來我發現面試其實就跟考試一樣,是可以刻意準備、刻意練習的。既然有這個練習的機會,why not?
大概就是這樣了,祝大家面試順利!