面試交作業

為什麼要寫作業?

GivemepasS
May 12, 2022

近幾年推起幾種不同的面試風格,不外乎就是考刷題、系統設計、文化媒合或者交作業等等…,很多人就很覺得面試搞得這麼麻煩,「交作業真的很浪費時間」、「只要遇到面試要交作業的公司,我一律建議略過」、「這些公司根本只是想透過面試者來找到一些解決方案,萬一我的作業被公司拿去當參考或者變成產品的一部分,公司是不是還要付我錢啊?」等等說法。

我們先來探討一下面試為什麼要考試這件事情,所謂面試就是公司希望透過一些測驗,來了解一下面試者的實力,但是了解面試者的實力不是那麼容易透過短短的幾小時就可以了解的,就像你認識一個人要花一段時間,才能知道他的偏愛與習好以及這個人跟你合不合?

而且作業剛好就是系統設計與刷題的綜合體,因為透過小案例的實作,可以了解到你對於基礎資料結構、基礎元件與語法的熟捻度、架構彈性設計以及透過一來一往的需求確認,就剛好是可以看出各種面向的一種測試方式,我個人偏好寫作業不擅長白板題,因為寫作業可以多了許多思考的時間,以及你平時的壓箱寶工具都可以拿出來展示,不擅長在白板面前思考的程式設計師,反而此時可以發揮自身的實力最大化。

寫作用除了面試還有其他作用嗎?

測驗或多或少會出現模式,很容易變成考古題,近幾年出現刷題、系統設計等也是從測驗中變化出來,而寫作業這幾年更是盛行,那為什麼要寫作業呢?其實寫作業也有多個好處,不只對公司,對於面試者也是有不錯的收穫,一般來說,作業通常都可能展示出公司內部的實作案例或者內部工程師的共識,也就是說,大家都認為應該要到達的程度,不外乎就是想了解 Coding Style、程式架構、是否重視彈性、可讀性…等等,從作業可以看出是否寫程式的習慣良好,未來是否適應內部團隊的協作方式,對於該職位的認知是否到達一定程度,評估標準可能會比只看刷題、口頭上測試來得有效許多,另外一部分,面試的工程師就可以透過這樣的流程,如果平常你就有具備基礎能力,剛好可以做一份簡單的練習,如果你不具備,剛好也可以順勢去理解各領域的應用,進而透過這份作業來自我評估能力,我個人覺得作業本質上是一種良性的機制。

如果你是負責出題目的工程師,可以參考看看。

從公司角度來看待寫作業,這是一項非常划算的投資,因為決大部分時間成本都是花在面試者身上,你只需要透過時間到的時候,回傳的地方檢查作業是否通過即可,可是對於面試者來說,這一份作業所花的不只是面試成本,還期待有後續的回饋,對於一個認真寫作業的面試者,所需要的即是面試公司的認真看待,即便不符合預期,也應該對於面試者有所回饋,表示這份作業有哪部分是需要調整或改進,或者把一些較知名 Open Source 連結提供參考,例如架構面可以參照這個 Project,或者應該要多寫一些測試案例,公司比較重視 SOLID,因此,透過什麼方式哪部分應該怎麼調整…等等,如此不旦會讓面試者知道他可能不是公司要找的人,也從中獲得不少回饋,對這間公司的評價後續也會口耳相傳,讓更多有能力想要加入這樣的團隊。

遇到需求不明確的作業怎麼辦?

其實這也是考驗你懂不懂問問題的功力,如果遇到需求不明確的作業,千萬一定要再次的去詢問詳細,譬如說範圍準備畫到多大?需求有哪些是必須要實作的?如果時間內完成不了,可否在面試時,進行口頭上的說明?透過這樣一來一往的方式,可以讓面試方了解到你對於作業除了很重視以外,也可以透過這樣的方法認知到對方是否對面試者重視,以及對於別人的時間尊重程度,這些都可以列入考量範圍的。

結論

每一種測驗方式都有自己的優缺點,一間公司的出題方式也體現出這間公司對於工程師的重視程度,每個人可以根據這些判斷來了解初步了解到這間公司的優劣程度,如果面試真的很不對盤,其實就要認真考慮了,面試彼此都不舒服了,怎麼還想要進去這間公司服務呢?是吧?

--

--