avatarukyen

总结

这篇文章是一位半路出家的軟體工程師分享在英国求职的经验,包括面试流程、面试技巧、遇到的挑战以及面试中的一些技术问题和行为面试问题。

摘要

文章作者是一位在英国求职的軟體工程師,分享了自己的求职经历,包括面试的各个阶段。作者在面试中遇到了多家公司,包括金融、金融科技、博弈业、零售业和金融科技业的公司,分别为Company A、Company B、Company C、Company D和Company E。

  • Company A 虽然技术要求与作者的技能不符,但作者被邀请参加最终面试,最终发现公司实际上是在寻找会说中文的项目经理。
  • Company B 的面试流程包括电话面试、在线编程测试和现场面试。在现场面试中,作者回答了行为面试问题和系统设计问题。
  • Company C 的面试流程包括电话面试、在线编程测试和现场面试。现场面试包括编程测试和技术主管面谈,考察了作者的编程能力和技术知识。
  • Company D 的面试流程包括电话面试、技术电话面试、家庭作业和现场配对编程面试。作者在家庭作业中完成了与工作内容相关的小项目,并在现场面试中使用非Python语言进行编程。
  • Company E 的面试流程包括电话面试、在线配对编程和现场面试。现场面试转为在线面试,考察了作者对数据库的了解和行为面试问题。

最后,由于疫情的影响,作者接受了一份工作,并分享了自己在新公司的学习和成长经历,以及最近获得公司帮助申请Skilled Worker Visa的好消息。

观点

  • 面试过程中,作者强调了实际工作经验的重要性,认为用真实的工作场景来回答情境面试题比标准答案更有说服力。
  • 作者提到,即使面对不熟悉的技术问题或者不熟悉的编程语言,也应该尽力完成作答,因为这会展现出 candidate的学习能力和解决问题的态度。
  • 面试中的行为面试问题,如处理未知挑战、应对高压环境、压力管理、团队合作等,对于评估candidate的适应性和团队合作能力也非常关键。
  • 作者认为,即使在新的工作环境中遇到挑战和挫折,也是学习和成长的机会。他提到了自己在新公司的学习过程,以及对于代码质量的高标准感到震惊,但也认识到了这样的环境对于个人能力提升的价值。
  • 文章最后提到了签证问题,作者分享了自己获得公司帮助申请Skilled Worker Visa的经历,这对于其他希望在英国工作的外国人来说,是一个实用的建议。

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

接續上篇,軟體工程師英國求職分享(上)

面試經歷

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

  1. Phone interview
  2. 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,所以可以暫時不用擔心被遣返了 😆,之後如果有機會再寫一篇分享轉簽證的心得文。

如果有任何問題也歡迎留言討論。

Careers
Job Interview
Workingholiday
Taiwan
Work Abroad
Recommended from ReadMedium