半路出家的軟體工程師英國求職分享(下)

接續上篇,軟體工程師英國求職分享(上)
面試經歷
Company A (金融業) — Software Developer
這間其實不應該寫進來的,我幾乎忘了有考過那些技術相關的問題,但由於結果很奇耙,還是把他列入分享。第一關與 Hunter 順利面談完後,接著與技術主管Russel會談,簡單的自我介紹,並針對履歷的內容問了幾個問題,然後跟我說明這個職缺不一定會用到 Python,但以後有機會,主要是要找一個會講中文的 developer 協助 UK Team 與 China Team 的合作,因為語言的問題,他們協作上遇到了許多困難。而他所要的技能我幾乎都不會,但他們還是覺得我 Qualified,並邀請我參加 Final on-site interview。
雖然心中已經知道不會去這間公司了,但秉持著練習的精神,並想趁機會逛逛這美麗的城市,還是赴約了.面試官是三個中國人,而 Russel 有事沒來(os:WTF?),自我介紹完,問了幾個問題後,他們很慎重的跟我說,從你的履歷跟剛剛的對談,你應該是想找 developer 的職缺,但我們要找個其實是 PM,我想獵人頭公司應該誤會我們的需求了(os:WTF again)。後面就切成中文模式閒聊了,跟我聊聊這邊的生活,visa 的建議,還問我台語怎麼講。
Company B (FinTech) — Software Engineer
1. Phone interview
與PM會談,內容就跟我前面提到的差不多。
2. Online coding test
印象是考撲克牌的排列組合,雖然有寫出答案,但Time complexity沒有過,不過還是被邀請至Final on-site interview。後來面試官說,這題寫不出來正常,你因為寫得不錯才被邀請來面試,所就算遇到寫不出來的題目也要盡量寫!
3. On-site interview 與 PM 及技術主管面談,總共分兩個部分,Behavioural interview 及 System design。
Behavioral interview:
- 如何處理未知的挑戰
- 如何在很有壓力的情況下處理問題
- 當工作壓力很大時,如何釋放自己的壓力
- 最喜歡及最討厭那個手機 app
- 如果跟一個很難配合的人共識,你會怎麼跟他 co-work
- 在你過去的經驗中,你有沒有經歷過哪些很好的主管? 為什麼以他為例呢?
在回答情境面試題的時候,我會盡量舉自己工作上發生過的實際狀況為例來說明,這比網路上找到的標準答案來的有說服力的多。
System design:
前半段問一些觀念問題, 像是 TDD 的優缺點、NoSQL/SQL 的優缺點以及分別在什麼情境下使用,後半段則著重在 system design,總共有兩題:
- 如果要做一個登入系統,註冊後要發歡迎信給使用者你會怎麼做
- 請你設計一個類似 Google Docs 系統,你的 data model 會怎麼設計
Company C (博弈業) — Software Developer
- Phone interview
- Online coding test
順利完成作答,並獲得 On-site 面試的機會。在 On-site 面試前,Hunter 還打來洩題,他說這間公司選人非常嚴格,考試的題目很困難,建議可以先準備哪些東西。
3. On-site interview
分成兩階段,第一階段是 Coding test,題目是用蒙地卡羅演算法計算哪個玩家的勝率最高,要是前一天晚上沒有先了解一下蒙地卡羅演算法,應該不太可能在一個小時內完成作答。完成作答後需要與兩位資深工程師討論及說明自己的解題思路。
第二階段與另外兩位技術主管面談,其中一位長得很像哈利波特的瘋眼穆迪:)。這階段問了幾個技術問題,像是 Python 跟 C++ 有什麼不同之處,為什麼當初要學 Python 而不是 C++?TDD 的好壞處?接著是白板題,給我各種字串,並寫出 regex pattern 來 match;寫出費氏數列的遞迴解及迭代解,以及其時間及空間複雜度各為何?
Company D (Retail) — Software Engineer
1. Phone interview
這一間是用人主管直接聯繫,簡單介紹公司及職務內容後,如果我對該職缺感興趣的話,會再另約時間進行 technical interview。
2. Technical phone interview
- 說明 server/client 架構
- OOP 是什麼並舉例說明
- Design pattern是什麼並舉例說明
- multithread concept(mutex lock, data accessing problem, disadvantage of multithread)
- functional programming is what, what‘s the difference between OOP and functional programming?
- regular expression,舉例如何 parsing email address
- 有無 TDD、code review、deployment等經驗
3. Home work
給了一個與工作內容有相關的小專案,並在兩週內交付。內容大概是寫出兩個 API endpoints,一個使用 PUT 建立客戶資料,另一個使用GET讀取客戶資料,並將服務架在指定的雲端平台。
4. On-site pair programming interview
前一個 Homework 是寫 server 端的服務,on-site 的題目是用一個不熟悉的語言(非 Python )寫 client 端程式,我是選擇使用 C#。由於事前並不知情要使用別的語言撰寫,所以花了一整個下午才終於寫出來,整個腦細胞大概也死去一半。
5. Behavior interview
- 如何判斷一間公司是你想要加入的
- 為什麼想出國工作
- 對於PM這個角色的想法,未來會考慮轉換這樣的角色嗎?
Company E (FinTech) — Data Engineer
1. Phone interview
2. Online pair programming
是與一位資深工程師進行視訊會議.會議開始時寄出題目,先給我幾分鐘閱讀,當下可能有點緊張,題目看不是很懂,所以請他再說明一次題目,由於他的英國腔蠻重的,所以來來回回問了好幾次才終於搞懂題目。接著他請我分享螢幕並開始 coding,限時三十分鐘。順利寫出來後,他問我你會如何確認你寫的程式是沒問題的,然後我就寫了幾個 unit test 來測試我的程式。接著再請我解釋解題的思路。結束後過了一週收到 on-site interview 邀請。
3. On-site interview
在這關面試之前,疫情已經逐漸爆發,最後這關就改為 Online interview😐
白板題:
主要是考對於 Database 的了解程度.請我分享過去資料庫設計的經驗,但這方面並沒有真正的實務經驗,所以並沒有回答得很好。
Behavioural interview:
- 最有成就感的專案是什麼,可以請你說明一下嗎?
其他的題目因時間太久已經忘了😅
後記
由於疫情關係,當下有太多不確定性,收到 offer 就直接答應了,並沒有再繼續面試,所以無法分享如何談判薪水。不過有認識的朋友,他收到 offer 後對於薪水不算太滿意,就寫了一封信給人資,說明自己的經歷值得更高的薪水,結果公司就幫他加薪三千英鎊,所以有問有機會喔!
至今已加入現任的公司一陣子,發現自己就像達克效應內描述的一樣,自學階段每天都在進步,開發了幾個自己覺還不錯的專案,對自己的程式能力越來越有自信。結果進去後,發現公司內的每位工程師實力都超乎自己的想像。以及對 Code 品質要求極高,信心嚴重受到打擊,每天就是不斷的學習->挫折->學習->挫折的循環,雖然很辛苦,但確是紮實的學到不少新的東西。不過呢還是希望快點渡過低谷,慢慢往專家之路前進。
最近剛收到一個好消息,公司願意幫忙我辦 Skilled worker visa,所以可以暫時不用擔心被遣返了 😆,之後如果有機會再寫一篇分享轉簽證的心得文。
如果有任何問題也歡迎留言討論。






