2020第二次工程師求職紀錄

前言

新工作的事情總算在幾周前告一段落,過程還是挺有意思的,在此紀錄求職的一些細節以及Alpha camp A+計畫的一些心得,希望能對於同樣是轉職者的廣大學習者有些幫助。一直以來從網路社群獲得很多協助,能有任何形式的回饋方式都會讓我樂此不疲,若有什麼疑問我能回答的也請不要客氣,放馬過來唄! 🤣

什麼是A+計畫-簡介

A+計畫是Alpha camp近期推出的一個計劃,主要目的是透過前六周的密集訓練提升作為工程師的能力以及輔助後續六周的求職活動,其中包含著資料結構與演算法的課程、個人專案打造以及模擬面試等細項。過程中會與參與課程的同學、講師有著密集的交流,mentor也會針對你打造的專案提出一些實務上的建議。以六周的時間來說進度相當的緊湊,演算法的部分可以參考下方的說明,講師的邏輯相當清晰,這部分我真的收穫良多。 在後續的求職輔助則可以了解彼此面試的進度、碰到的情況,必要時也可以尋求一些協助,與志同道合的朋友一起努力確實會讓人更有動力一些!

求職準備

求職準備我分成以下幾個部份來說明

  1. 演算法練習

這部分配合A+的課程計畫,在六周的時間內複習了資料結構與演算法的概念,其中包括基本的String、Array一直到tree & graph,同時也探討了一些演算法的核心概念,像是遞迴、動態規劃等。 驗證的方式就是透過leetcode本身的題目,每周處理約6~12題,我過程中利用HackMD做紀錄整理,個人認為蠻有效的。

leetcode筆記整理
Leetcode題目刷好刷滿

每篇筆記我盡量按照以下的形式,我隨便選一篇作為範例,有興趣可以點擊參考。

  • 問題描述
  • 初步想法
  • 虛擬碼
  • 最終程式碼

透過這樣的方式印象較為深刻,即便有時候沒辦法解出來也能釐清自己的觀念卡在哪邊,之後在看其他人的解法時也比較容易理解。

  1. 作品集整理 & 履歷修訂

這部分我延續第一次求職的思路,只是在作品集上做了一些調整,由於主要求職的目標是前端工程師,我在作品上選擇的就是一個協作專案、一個全端專案以及一個純前端專案。其中後兩者是在這段求職準備期間打造的,主要目的是新技術的接觸以及一些切板方面的練習。

放上履歷的作品基本上我都會強調專案的目的以及使用到的技術,方便其他人更快的了解。

履歷上的作品介紹
履歷上的作品介紹截圖
  1. 職缺投遞 & 搜尋

我主要的求職平台是104、linkedIn、Cakeresume,更新履歷後主要在Cakeresume投遞,104 & linkedIn則是做比較被動的訊息回覆,有了前一份短暫的工作經驗,其實收到的邀約不算少,這其中我會選擇我個人有興趣、能力符合的職缺進行回覆,很幸運的獲得了幾個面試的機會,將在下個部分做詳細的說明。

  1. 面試題目練習

這部分我自己是透過幾個面向去做準備

  • 自我介紹
  • 技術問題整理(包含js/css/html、vue以及常見的前端問題等)
  • 作品集問題整理(針對作品集中使用的技術做一些整理)

過程中我有辦一個小小的讀書會讓幾個沒有面試經驗的同學做簡單的模擬面試,主要是根據我自己的面試經驗整理出來的一些針對JS的題目,大概用了6次的讀書會跑完共30道題目。準備讀書會也讓我對那些概念做了較為全面的複習。網路上其實已經有著相當大量的資源,我個人蠻推薦準備面試的期間至少針對常見的問題做基本的練習,懂概念跟能清楚的表達是完全兩回事,如果你目標是跨境外商的話建議你同時也針對英文版本的回答做一些準備。

面試紀錄

前端工程師,全曜財經股份有限公司(Cmoney,做投資理財app & 記帳軟體的公司)

首先是一份前測作業,給你兩張圖片,要求你僅用HTML/CSS/JS完成指定的切版與功能。資料需要自行從政府公開資料取得,這部分我另外架了一個遠端的json-server來處理,專案的遠端連結在婉拒該公司後我就自行撤掉了,沒辦法提供demo歹勢:D

幾天後收到前測通過並前往二面,內容包括

邏輯與性向測驗(共1小時)

說是邏輯測驗但卻有奇怪的題目藏在裡面,像是列舉牛頓三大定律、log1000為? 裡面還是有一些邏輯推論題,對我來說這些問題真的有些奇怪。

兩個技術主管面試

  • 三分鐘自我介紹
  • 上一份工作的主要職責、為什麼會離開
  • 過去有提供他人技術教學的經驗嗎? 你是怎麼協助的?
  • 為什麼會想申請Cmoney的職缺?
  • 過去的工作情境有與其他人衝突的情況嗎?
  • 簡述一下JWT的驗證,它有什麼樣的優點?
  • 簡述一下你對graphQL的了解、為什麼會去接觸這樣的技術?
  • 你目前使用過那些資料庫?
  • 簡單說明一下vue組件間的溝通方式,又多層間的組件該如何溝通?
  • 說明vue的雙向綁定
  • 說明vuex
  • vue的指令有很多很方便的地方,但由於它一次替你處理很多東西,有時候會碰到一些意外的情況,之前有碰到類似的情況嗎?
  • 在管理CSS時,class name你有什麼管理方式嗎?
  • 你有用任何的css預處理器嗎?
  • 請看以下的畫面,簡述一下你會怎麼切版這樣的畫面,同時你會用什麼樣的class name管理
  • 請簡述你對nuxt的了解
  • 若你今天要打造一個nuxt的專案,前端與後端的溝通會怎麼實現、伺服器會怎麼配置
  • 前測內容的討論(SEO、lang tag以及遠端資料fetch的處理方式),特別問了為什麼會特別去打造一個json-server

面試結果: 由於已接受Garena的offer,婉拒最後的面試流程。


全端工程師,和碩科技股份有限公司

  1. 性向測驗 10分鐘
  2. 圖形邏輯測驗 20分鐘
  3. 全端js試題測驗 40分鐘

試題內容包括

  1. 物件的存取方式
  2. this的概念
  3. closure的概念
  4. IIFE與this的概念
  5. event loop
  6. scope的概念
  7. HTTP stateless
  8. POST & GET
  9. cookie vs local storage
  10. docker container、image & regristy
  11. jquery vs native API
  12. Nginx server configuration

接著是與技術主管的約兩小時面談

三分鐘的自我介紹後, 主管先針對團隊做介紹、表明招募目的與未來的工作內容並針對個人進行提問 問題包括

  1. 目前的求職方向為何? 為什麼會想來面試和碩
  2. 你說你未來目標是全端工程師,那你在學習上有什麼規劃,過去的學習路程是怎麼樣的,又為什麼會選擇先切入前端
  3. 在我看來你是個很靈活的人,會不會覺得加入和碩這樣的公司與你的個人特質衝突? 如果覺得不會,理由是?

從這幾個問題中延伸出了很多個面向,也帶出了他們團隊的工作環境與模式,一來一往的問答花了很多時間。

面試結果: 無聲卡。


  1. 前端工程師,翰林出版股份有限公司

與單位技術主管奇妙的面試,幾乎沒有談到技術的問題,比較像是針對人格特質、目前擅長的技術以及過往經歷做討論,在他自我介紹完並說明部門情況後,之後基本上就是我單方面的提問,其中包括

  1. 團隊目前的構成
  2. 加入團隊後的工作情境
  3. 為何會在這個時間點招募
  4. 團隊目前使用的技術
  5. 開發流程
  6. code review的過程

面試結果: offer get,於隔周收到核薪結果。


  1. 前端工程師,Garena台灣

四個面試中最為繁瑣的一家,疫情關係整個面試過程皆為遠端面試,大致上分為

1. HR電話聯繫,確認culture fit,履歷轉交技術主管

2. 40分鐘演算法前測,兩題(二分搜尋與轉七進位的程式碼實踐)

3. HR面試 + 技術一面(英文)

HR的部分就不詳述,大致上是根據一些過往的經歷以及為什麼會想加入garena之類的問題,以下是技術一面的大致內容。

與新加坡兩個技術主管遠端白板題,以一個共同編輯環境進行測驗,自我介紹後直接進入主題,總共兩個題目,並不要求你要寫出可以動的程式碼,主要看解題思路。

  • 給定座標平面上五個點A、B、C、D、E,與一個固定距離L,請從中找出一點X,使得A->B->C…->X的距離為L。

> 解題思路

先計算每個點之間的距離,藉此找出X會落在哪一條線上,假設最終落在CD線上,最終只要透過L – A至C的距離差以及CD線的斜率即可找出點X。

  • 加密問題,所有的字母都能被轉為對應的數字(A->1,Z->26),今給定一個只包含數字的字串(例如’226′),回傳該字串有幾種加密可能

226-> 2,26 、22,6 、 2,2,6 共三種 301-> 沒有任何組合,因為0無法被轉為字母

> 解題思路

繞蠻久,最後以dp的方式切入,首先建立dp陣列,若第一項不為0則另dp[0] = 1 接著依序迭代index 1 -> 最後,若迭代到的數字與前一個數字能組合,表示我們發現了一種新的加密可能,dp[i] = dp[i-1] + 1,最終回傳dp的最後一項

測驗結束後於隔天收到通過通知,隔週進行遠端技術二面。

4. 技術二面(中文)

  1. 邏輯問題,若一個小島上有八人,其中一人略重於其他人,島上有個蹺蹺板,試著說明如何最快、最穩定的找出胖子。
  2. 假設現在有個圖書館系統,請說明前後端你分別會怎麼設計,後端的endpoint與資料庫為什麼會採用這樣的設計?
  3. 接續上題,假設今天我要做查詢功能,你能提出哪幾種方法? 這些方法的差異在哪邊?(在前端&後端做法會有什麼差別)
  4. 接續上題,若今天要加入分頁,你在前後端分別會怎麼實現,後端的endpoint有需要做變動嗎? 請說明你會如何利用ORM實現這樣的query。
  5. 接續上題,你目前提出的query方式有什麼缺點? 你能想出更好的做法嗎?
  6. 前端切板與屬性測驗,打開我放在專案上的作品,將其中幾個元素的樣式拔除,並要求恢復原狀(其中包括RWD變化、水平垂直置中、transition)
  7. 接續上題,你提出了三種利用不同屬性達成的水平垂直置中方式,他們分別有什麼優缺點? 在你們的專案中是如何統一水平垂直置中方式的?
  8. 在專案中你們會如何管理CSS?
  9. 一面時的兩個演算法追問。

中間另外有針對過往的經驗以及使用的框架提出一些追問,由於較為零碎這邊就沒有做紀錄。 隔天收到通知通過,於兩天後進行技術三面與PM面試。

5. 技術三面(英文) & PM面試(中文)

首先是與印度技術主管Omer的技術面談,主要針對資料結構與網站最佳化的部分提問

  1. 自我介紹
  2. 過去工作情境詢問
  3. 請說明為什麼會需要類似vue之類的前端框架
  4. vue有使用virtual DOM的概念嗎? 什麼是virtual DOM
  5. 請你設計一種資料結構,能儲存(+ 4 2) (* (+ 1 3) (* 2 5)) 這樣的資料格式,同時建立一個parse函數可以將輸入的字串轉為該資料格式。口頭說明概念後以code實踐,並說明為什麼你會採用這樣的設計,他有什麼edge case是你沒考慮到的? 出現這樣的情況要怎麼解決?
  6. 今天一個使用者跟你反應平台中影片載入過慢,假設沒有其他前題,你會怎麼優化使用者體驗?
  7. 接續上一題,若已經導入你說的CDN,但使用者仍抱怨載入過慢,從前端、後端或是其他方面切入,說明你會如何解決這樣的問題
  8. 接續上一題,你提到Cache的方式,如何利用js或是HTTP實現這樣的機制,你目前提出的方法有什麼缺點?
  9. 若今天要將一個行動端為主的網站進行最佳化,你首先切入的方向會有哪些? 為什麼這樣切入?
  10. 你個人現在的目標是什麼?
  11. 上一份工作中最大的挑戰為? 你是如何對面這樣的挑戰?
  12. 是否有其他問題詢問?

接著則是與新加坡的PM的30分鐘面談

  1. 自我介紹
  2. 為什麼會從顧問師轉為工程師? 中間的曲折是?
  3. 上一份工作具體來說做了什麼? 你是如何與他人協作的?
  4. 對於booyah這樣的平台你有什麼理解?
  5. 產品概念與團隊協作機制詢問
  6. 薪資期待
  7. 是否有其他問題詢問?

面試結果: offer get,隔天便收到通過通知並於三個工作天後收到核薪結果。

Offer選擇

我自己在選擇offer時主要考慮以下的層面

  1. 公司未來發展性與個人職涯規劃
  2. 團隊技術能力
  3. 個人興趣
  4. 薪資

其中團隊技術能力這點我是透過面試的題目以及過程與面試官的交流進行判斷,我現階段的目標是技術能力的成長,所以對我來說好的團隊會是我考量offer的重要指標之一,最終我選擇了garena的offer,除了以上幾點考量外,這樣的跨國團隊對我來說是很好的挑戰,整個面試的過程也相當愉快。

結語

離開上一份工作後其實也休息了挺長的一段時間,中間其實也零零碎碎的跑了幾個面試,但最終都沒有選擇接受。這次透過A+計畫重回軌道並順利的找到理想的工作。過程中認識了許多新夥伴以及幾個老朋友,很感謝AC籌辦這樣的計畫,過程中從講師、同學以及mentor的身上都學到了不少東西,尤其在資料結構與演算法的部分受益不少。作為一個工程師我真的還菜得很,有許多的東西需要學習、精進,過程中受到的幫助真的難以一一言謝,期許自己不斷的進步並在日後繼續透過各種管道回饋這個龐大的社群! 希望這篇文章有多少幫助到一些未來的求職者,我可以的你們一定也行:D 加油!

2020第二次工程師求職紀錄 有 “ 6 則迴響 ”

    1. AI 好久不見! 雖然我擔不起大神這個稱呼,不過還是很高興這些學習紀錄對你有幫助! 有任何我可以協助的問題也不用客氣,你知道我很雞婆的

      Liked by 1 person

      1. Danny哥,想問問你一個mongoose連線問題,在app.js當中,如果想要連結兩個以上的mongoDB資料庫,這時候該如何在app.js下指令。

        舉例:
        我在資料庫A有一筆資料是Alpha客戶的"ID"和"Name",資料庫B中有一筆資料是Alpha客戶的"ID"和"Password",如果我想要同時在app.js中取得該兩筆資料並且reder在畫面中,這樣指令該如何寫啊?

      2. AI 很有意思的問題,這樣的操作我自己沒嘗試過,有需要的話確實可以研究一下。我自己思考一下後,初步的邏輯應該會是你需要兩組models的結構分別對應兩個不同的資料庫,然後在同一份檔案中做兩次類似的query,最後將取出的資料render到頁面上。
        不過我比較好奇的是這樣操作的目的,就我的認知一般來說同一個用戶資料會存在同一個資料庫,也許會因為正規化之類的流程切分成不同的表格,但仍只有一個資料庫,這樣才方便後續的一些操作(跨表格query、eager loading等)。你現在是碰到什麼情況導致你一定得做這樣的操作呢?

      3. 我的邏輯跟你一樣,我以為這會是很常見的問題,想說你會知道怎麼寫code。如果連你目前都還沒遇到這個問題,那我大可放心先把這個問題放旁邊,先解決更迫切的問題XD。感謝你回覆。

        Liked by 1 person

      4. 阿~ 我漏看你的第二段,我會有這樣問題是在銀行工作的時候發生的,銀行為了資訊安全所以資料不太會做整合,舉例來說我之前待過的銀行是國泰世華,國泰和世華原本是不同的銀行,後來合併成一家,合併完成後因為怕出錯,所以沒有把資料整合在一起,所以我們在撈資料的時候其實會跑三個資料庫。
        舉例:
        我今天要找鴻海跟國泰世華的交易紀錄,會先跑國泰原本的資料庫,再跑世華原本的資料庫,最後跑合併後的資料庫,一共跑三次。

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com 標誌

您的留言將使用 WordPress.com 帳號。 登出 /  變更 )

Google photo

您的留言將使用 Google 帳號。 登出 /  變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 /  變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 /  變更 )

連結到 %s