folder_open

面試雜記

arrow_right
article

面試心得–Lablaco

面試心得–Lablaco

2021/08/10~2021/08/30【Full stack engineer – Partner】錄取

公司概況

#

目前 Lablaco 有兩個線上產品,,成員來自全球四處,Partner 之一的 Lor 是個擅長交際的人,在時尚界掌握許多人脈,與目前負責處理產品事宜的 Ryan 在台北的創業聚會中認識後開始合作至今。

職缺介紹

#

產品現況是全部外包處理,未來打算成立 in-house 工程團隊,因此在台北招募技術導向的 Partner。目前公司規模約 20 人,預計在未來半年招募 5 至 6 位工程師。

第一輪線上面談(英文面談)

#

此關卡主要是由 Lor 分享公司現況及交流問題。

第二輪線上面試(英文面試)

#

此關主要是由 Ryan 主導,與面試者互相了解過去的工作經歷,也提到了公司的產品開發會涉及硬體設備。由於此關卡 Lor 也在場,因此全程仍然使用英文交流。

技術部分被問到「 是什麼?」,當下回答時有些歪掉,後來翻到了聊聊 Python Closureopen_in_new這份教學補強一下,覺得十分受用,順便在此推薦給各位讀者。

第三輪線上技術面試(中文面試)

#

本關一樣由 Ryan 負責,面試範圍收斂到純技術討論,因此相對前幾關乾淨俐落,總共交流以下兩個題目。

矩陣轉置

#

1A = [[1,2,3],[4,5,6],[7,8,9]]
2
3def transpose(matrix):
4 pass
5
6assert transpose(A) == [[1,4,7],[2,5,8],[3,6,9]]

原命題限制輸入矩陣為 n×nn \times n 的方陣,因此最佳解時間複雜度為 O(n)O(n),空間複雜度為 O(1)O(1)

相似題目可參考 LeetCode 867. Transpose Matrixopen_in_new

排序數列中尋找遺漏的數字

#

1A1 = [1,2,3,4,5,6,8,9,10]
2A2 = [1,2,3,4,5,6,7,8,9,11,12,13,14]
3A3 = [1,2,4,5]
4
5def search(nums):
6 pass
7
8assert search(A1) == 7
9assert search(A2) == 10
10assert search(A3) == 3

此關應是最後關卡,因此也在結束前提及了期望薪資、股票選擇權等。

錄取結果

#

筆者此時年資約為一年前端及一年後端,考量必須承擔新創潛在的風險,且資方不太接受支付更多的薪資,我最終並未接受 Offer,因此揭露 Package 細節希望能夠幫助到有緣人:

Option A: 60,000 € / Year — no stock
Option B: 40,000 € / Year — 20K€ stock at priced 100M€ valuation to receive end of 2022 (price adjusted for next round)
This could be paid either with NTD or Euro dollars per your preference.

面試結果及時程

#

  • 2021/08/10 投履歷
  • 2021/08/16 第一輪線上面談(參與人:Lorenzo Albrighi)
  • 2021/08/18 第二輪線上面試(參與人:Ryan Yang、Lorenzo Albrighi)
  • 2021/08/25 第三輪線上技術面試(參與人:Ryan Yang)
  • 2021/08/30 收到錄取通知
  • 2021/09/02 薪資協議

附錄:第三輪線上技術面試題目參考解答

#

矩陣轉置

#

1def transpose(matrix):
2 n = len(matrix)
3 for i in range(n - 1):
4 for j in range(i + 1, n - 1):
5 matrix[i, j], matrix[j, i] = matrix[j, i], matrix[i, j]
6 return matrix

排序數列中尋找遺漏的數字

#

1def search(nums):
2 low = 0
3 high = len(nums) - 1
4
5 while low < high:
6 mid = (low + high) // 2
7
8 if nums[mid - 1] + 1 != nums[mid]:
9 return nums[mid] - 1
10 if nums[mid] + 1 != nums[mid + 1]:
11 return nums[mid] + 1
12
13 mean = (nums[low] + nums[high]) / 2
14 if nums[mid] < mean:
15 low = mid
16 elif nums[mid] > mean:
17 high = mid