申請職缺

R0006775:【新鮮人募集!】 Software Engineer

Codility

最早是透過 104 投履歷,印象中隔一週後收到回覆,並提供 Codility 的測試連結。

因為之前沒有用過 Codility, 所以先到平台上寫測試題。印象中比較特別的是,可以寫自己的測資,也支援一些常用的文字編輯器功能(像是 Find/Replace)。

實際考題有三題,共2小時。我選用的測試語言是 Python, 題目大致如下

  1. 針對既有的程式碼除錯,改成符合描述的功能。
  2. 忘記了 😭 不過印象中不難,比第三題還簡單。
  3. 二維地圖的問題,基本上就是用 DFS 掃過一遍,根據要求更改提供的 Array.

面試流程

  1. 預定面試時間:1.5小時
  2. 流程:
    1. 自我介紹:5 min
    2. 專案經驗提問:40min
    3. 白板題:30min
    4. 職缺說明 + QA: 20 分鐘
    5. 人資說明後續流程
  3. 備註:有提早約10分鐘抵達,先在櫃檯旁的座位區休息。到面試前10分鐘時,被請到會議室。

專案經驗提問

面試官有兩位,一位經理、一位 Senior。專案經驗提問前,有先給自我介紹。因為先前有說明可以 demo,所以就有做投影片自我介紹。不過我去到的會議室沒有網路,要自己開熱點。直接打開筆電裡的簡報分享。

詢問面試官要中文還是英文,面試官說還是中文好了。

(以下問題盡可能按照主題分類,但沒有依據問題順序)

API

  1. 請解釋什麼是 RESTful
  2. 請挑選一個你自己的 Backend Project 中,有用到 RESTful API 的專案,說明怎麼切你的 endpoints
  3. 你有提到會有 token, 請問你的 token 是用 JWT 嗎?請解釋 JWT
  4. JWT 有分成三個部分,可以分別解是一下嗎?以及如何拿到你的資料?

Database

  1. 請選一個專案,說明一下你的 Database Schema 設計
  2. 說明 Primary Key 的選擇,以及如何使用 Index

Architecture

  1. 請選一個比較複雜的 Backend Architecture, 並說明
  2. 整個 Backend 都是單體?還是有一些 Services?
  3. 有用 multi-threads 嗎?
  4. 有學過物件導向嗎?

Cloud & DevOps

  1. 我看你有用過 AWS, 用過什麼,以及為什麼用?
  2. 我看你有用過 terraform, 可以跟我說 terraform plan 和 terraform apply 的差別嗎?
  3. terraform 的 state file 主要是做什麼?
  4. terraform state file 你存地端還是放雲端?
  5. 我看你有用過 Docker, container, 有用過 k8s 嗎?
  6. 你用 Ansible 做什麼?幫助了你什麼?
  7. 你架自己的 Homelab, 花了一個月嗎?
  8. 測試的部分,我看你用 pytest. 是用 Unittest 嗎?還是有用其他 features?

Collaboration

  1. 有跟其他人合作專案的經驗嗎?
  2. 合作專案經驗過程中,主要遇到什麼挑戰?不一定要是軟體專案。
  3. 剛剛提到有遇到壓死線問題,請問為何會卡在 demo 前才在趕呢?

Others

  1. 碩論做什麼?
  2. 剛剛所說的 Techstack, 若你是非本科,且碩論非相關,則哪些是課堂所學,哪些為自學?
  3. 如何自學?
  4. 為何去印度交換?
  5. 剛剛在印度做課堂作業,會遇到文化差異的適應挑戰,請展開說明。
  6. 除了前述挑戰,還有遇到哪些挑戰嗎?
  7. 為何從化工轉來做軟體?

白板題

Q1: Python Function

  • 題目描述:給一個 Python function, 問可能出現問題為何?
    • 該 function 是透過給一個 list, 以及一個 index_list, 並將所有有出現在 index_list 裡頭的 index 指向的元素,都從 list 移除
    • 指出問題後,詢問如何修改?
    • 因為第一次沒有答出來,所以後續又多說明一些內容(ex. 若保證 index_list 裡的 index 不重複且從大到小排列,會如何),來得出期待的答案

Q2: OOP 系統設計

對方先詢問我要我用物件導向設計架構,畫在白板上,行嗎?我回應物件導向的圖我都沒記熟,不過可以試著畫畫看,所以對方就提問了。

  • 題目描述:設計一個停車場繳費系統
  • 後續提問補充:
    • 類別分兩種:汽車、機車
    • 繳費方式一種:現金
    • 目前只管理一個停車場

職缺說明 + QA

職缺說明

  1. 公司正在開發 Trend Vision One 資安平台,主要與職缺相關的有
    1. 透過 Python, Go 等語言撰寫微服務
    2. 透過 Terraform, kubernetes 等工具部署 container 到 AWS, Azure, GCP 等雲端
  2. 團隊裡通常會有:QA, OPS, Backend, Frontend
  3. Cloud Engineer 主要想找
    1. 有 Python, Go 等相關經驗
    2. 有 Terraform, kubernetes, AWS, Azure 等相關經驗者

QA

Q1: 請說明公司團隊協作方式,是以部門 or 專案團隊為主

要看各專案不同,通常是 PM 開需求,由各單位評估分派工作出人後,再一起完成。不過 OPS 通常不會參與到團隊內。

Q2: 請說明對新人工程師期待

  1. 剛開始會先磨合,看能力到哪。
  2. 主要會希望和 Mentor 有良好合作溝通,以及能和同事間合作順暢。有問題可以丟出來討論。
  3. 職能比較廣,後續不一定只碰 Backend, 前端等等也可能會碰到。

Q3: 根據我剛剛的回答,提供建議

Senior:

  • 會建議自己用過的 stack 可以多熟悉。有一半的面試者,自己列的東西,自己也答不太出來。
  • 另外,基本功要扎穩,Python 的白板題基礎,以及物件導向設計,這應該類似職缺其他公司也會問,建議多掌握。

Manager: 會建議可以多看 Terraform 啦!

Q4: 想問 Terraform, Cloudformation, 或是其他 IaC tools, 主要公司用哪些比較多?

主要是 Terraform, 很少 Cloudformation(只限定 AWS 用,比較不適合;用過的同事覺得寫起來麻煩)

如果是擔心 license 的問題,公司法務會處理。由公司法務評估是否要繼續使用 terraform (以及支付可能的衍生授權費用),或是切換到其他的 IaC

Q5: 想問在寫微服務部分,各語言分配比多少?

主要是 Python 和 Go, Node.js 也有,但比較少。

Q6: 為何會開「新鮮人限定」的職缺

其實就看成 junior 吧。也有工作經驗 1 - 3 年的來投,也有在學就來投。

遇到好人才,就會想趕快把對方留下來。

整體觀察

  • 面試安排蠻嚴謹的,許多說明也都是使用英文。當天進入公司大樓,發現幾乎整棟都是趨勢的辦公室,也需要換證才能進去,算是把關比較嚴謹的公司。
  • 人資和兩位面試官都算蠻親切的,回答問題感覺也都很實在,問什麼答什麼,給人誠懇的感覺。

面試結果

進到下一關