2020年推甄交大資工碩丁戊組的一些紀錄
2020對我來說是很特別的一年,開始思考、對自己未來的走向覺得迷惘,找到了人生一份實習,走進了職場,在成績普普的情況下放棄了考碩。
偶然的機緣下,聽說交大資工居然有開推甄名額給寫Web、成績差的學生。雖然自己對學界的興趣已經被磨到幾乎沒有,但最後還是決定推推看,給自己多一點選擇。
稍微簡介一下,交大資工碩有丙丁戊3組給實作能力強的學生的組別,進去後丁組會在系上計中服務、戊組會在學校校務資訊中心服務,兩組學生都要協助對應的中心開發系統,丙組我不知道。另外交大主要使用的系統是PHP Laravel + Vue.js。

備審資料
高中資訊科學班、各大conference、IOI、黑客松..... 這些神人有的經歷
「我全部都沒有。」
在大一以前,我只有接觸過簡單的C/C++。大一的時候還是非本科系,為了轉系,除了自己修的一堂資訊系C++課以外,完全沒有再學其他程式、寫任何專案。
在被成績壓力折磨一年後,大二那年終於成功進到了116資工系。至此過著「能過就好」的學業生活,不過也是從這個時候為了實現一些自己想做的專案,開始去學軟體開發的相關技術,目前有在經營一個每月數百人使用的網站(最近幾個月我會這裡介紹一下XD)。平常70%做Web前端、30%做後端,今年開始在一家小有名氣規模的新創當前端實習生。
具體點的技能樹是下面這張圖,不過除了前端技術之外,有很多都只是有寫過專案,現在都忘的差不多了:

本來自己就不是很想寫那種膨風的自傳,加上在網路上查到這篇交大實作組備審資料:
看完之後,就決定自己也走簡潔路線。風格排版就跟上面那張圖差不多。一共四頁,2/3頁是經歷+條列開發技能+寫過的文章,4/3頁是條列作品集和對應的開發技術,這兩頁比較像是簡歷的感覺。剩下的兩頁就是把用故事的方式詳細補充前面的東西,有啥寫啥,都是平舖直述,沒有特別誇飾之類的。
其他要準備的資料有成績單、推薦信和讀書計畫。推薦信我都是找大學修過系統開發課的教授寫。讀書計畫我只有寫一頁而已,這裡就寫得滿隨便的,有點小唬爛,比較特別的是因為任職的公司當時規畫要讓我自己一個人建置主力產品的E2E自動測試專案架構,我就順便把這件事寫進去,沒想到這短短三行不到的隨筆後來成了面試的主軸。
接著就是等書審的結果了。如果有進複試的話,會需要走以下幾關
- 丁組: 筆試(性向測驗)+學長面試x2 +教授面試
- 戊組: 筆試(性向測驗)+教授面試
第一天 - 丁組筆試 + 學長面試
丁組筆試
交大資工碩實作組的筆試又稱為性向測驗,佔複試成績0分。根據監考學長的說明,因為資工領域很多,所以這份測驗主要是讓教授和學長知道你的專長是啥,也比較清楚接下來該問你甚麼東西。
實際發下來的考卷就跟往年一樣,一共13面,涵蓋Linux、BSD、Backend 、Web Frontend(JS & CSS)、Database、 Mail Server、Net、VM、Docker、DevOps(Git + CICD),每項都有5~10題的問答題,一看就知道3個小時的考試時間絕對寫不完。
題目跟網路上Google到的大約4成像。補充一些我之前沒在其他人的心得看到的題目:
# 後端
Q: 請說明何謂ORM系統?
Q: 如果今天有一間教室,同時間只能一個人用,當發生有兩個教授同時要借教室的時候,你會怎麼處理?(以Backend or DB角度回答)# 前端
Q: 請說明什麼是callback hell
Q: 有使用過任何UI(css) Framework嗎?# git
Q: 有使用過git flow嗎? 好壞處是什麼?
Q: 如何避免/處理merge conflict?# DB
Q: 什麼是transaction ?
Q: 使用過哪些DB? 為什麼要用他們?# DevOps
Q: 有CI/CD經驗嗎? 有的話請簡述
Q: 請設計一個CI/CD流程
我把上面這幾類寫完,檢查兩次之後,剩半小時就交卷去吃飯了,因為其他的就算當下讓我拿手機查我也寫不出來。
吃飯
中午吃第二學餐的Subway,還滿方便的。另外交大資工系館外面就是小木屋鬆餅,很適合讓寫code寫到爆氣的工程師發福。
狗
第二學餐裡面會有校狗睡覺,看起來滿舒服的,成大的狗都睡在宿舍外面的花園半夜跟其他狗打架。

丁組學長面試(Part. 1/2)
接下來是學長面試,一共兩關。第一關在一個小房間,面試官是三個目測可能是碩二的學長。自我介紹完之後學長拿著早上我寫的性向測驗考卷問問題。
我被問到的主要是兩個方向:
- 公司的自動E2E測試: 要我說明在專案扮演的角色、使用的技術、GitLab CI/CD的運用和相關知識。
- 後端 & DB: 因為平常都是寫前端,後端& DB都是我有需要的時候才會去做對應feature需要的東西。所以我性向測驗這部份的回答有些空白,學長比對考卷和經歷後覺得有些疑惑,提出了一些對應的技術問題。
後端的部分我沒有答的很好,可以從學長的反應感覺得出來自己對這方面掌握仍不足,看來我要學的還很多QQ。
丁組學長面試(Part. 2/2)
下一關在一間比較大的會議室,大概有十幾個目測是博班/業界的學長在你前面照著環形圓桌坐一大圈。一樣是自我介紹完後,學長照著我的備審資料問問題。
這關主要問三個方向:
- 公司的自動E2E測試: 要我說明在專案扮演的角色、使用的技術、GitLab CI/CD的運用。(對,我沒有打錯,真的問一樣的)
- 後端 & DB: 要我說明我在某專案使用MongoDB的原因。
- 你在讀書計畫寫要學Vue 3,你學了嗎?: 這個問題我覺得比較奇怪,因為既然是「計畫」就代表是我未來要做的事情。交備審跟面試也才隔1個月,這個月還是大學期中考月。而且在前一關我有問學長說學校系統有沒有改用Vue 3的打算,學長回覆說短期內沒有,所以這關當下被問完後我滿無言的。
這關我覺得自己的表現跟前一關的狀況一樣,都是在後端和DB上顯露了自己的不足。雖然不知道最後影響成績多少,但如果未來以前端背景為主的人想推丁組,建議還是補一下相關的知識。
第一天到這裡就結束了。
第二天 - 戊組筆試 + 教授面試 & 丁組教授面試
戊組筆試
戊組筆試和丁組筆試一樣是佔比0分的性向測驗。跟網路Google到的也是大約4成一樣,大約10題選擇+10題問答題。選擇題都是問net,問答題就很廣泛,前後端資安、DevOps、軟體開發、SQL、C/C++......。主要是在問軟體開發經驗跟對程式語言背後運作的原理(EX: ASCII CODE)。
我把問答題大概回答7成之後時間就到了,選擇題全部空白。
下午就是最後一關,丙丁戊組的教授面試。
穿著
想提一下自己觀察到的這個現象,每組複試30人中大約1/4的人穿的是正裝(西裝+皮鞋+領帶),1/2的人穿襯衫+長褲,1/4的人看的出來沒有特別打扮。我自己是選擇素色襯衫+素色長褲+一般布鞋,因為覺得這樣不失禮貌又不會太正式,去一般公司面試我也是這樣穿。
我覺得面試穿著這件事很有趣 XD 至於有沒有影響每個人的分數就不知道了。
戊組教授面試
大約10名教授以ㄈ字型坐在你前面,自我介紹完後教授就會接上問問題,內容主要都跟自己的專案有關。但其實我有很大一部份的時間都是在被問有關我經營的那個網站的非技術問題(ex: 幹嘛想做這網站、資料哪來的),其他一樣是問自動化E2E測試跟其他專案概要。
不過在滿滿的非技術問題中間還是有偷偷夾了幾個技術問題,例如:
- 請說明何謂MVC、MVVM,以及其對應的適用情境
- 你過去串金流的時候把金鑰放在程式的哪裡?
這部份我就覺得自己表現的滿不錯的,因為都是軟體開發思維,自己過去已經有一定的相關經驗,所以當場都能馬上順暢的回答。
丁組教授面試
三個教授跟你坐對面,一樣是自我介紹後對自己的專案問問題,大部分的時間也是在問有關我經營的那個網站的非技術問題(ex: 幹嘛想做這網站、網站使用人數、資料哪來的)。然後也是要我簡單提一下自動化E2E測試的那個專案。
這關有被問到兩個技術問題:
- 你在公司維護大型 React.js 專案時,如何Debug?
- 如果你進來丁組,你會希望維護舊專案還是做新專案?
第二個問題我當下回答到一半的時候話題就跑掉了,但我之前常在其他面試被問,也在目前的公司得到有很大的體悟,所以想順便在這裡講一下自己的想法。
做新專案的好處是架構都是自己設計,可以很快的從自己的埋下的雷理解到為什麼需要Design Pattern、為什麼需要MVC、MVVM......有很大的空間能夠去真正的做程式「設計」。壞處就是閉門造車,專案架構跟學到的東西會限縮在自己的「技術圈」。畢竟有些東西沒看過,自己真的很難想到原來可以這樣做。
而舊專案的好處就是可以從別人的程式碼裡面「感受到」什麼是好code,什麼是爛code。也能夠很快速的去接觸到自己沒用過的工具、方法。壞處是維護舊專案的時候需要更多時間理解別人的邏輯。有的時候就算架構很爛,但常常會因為時間問題、或是害怕影響專案本身的穩定而不敢重構,到最後就根本是在做程式「修改」,而不是程式「設計」。不過這件事如果測試有寫好、專案管理上有配合的話是可以解決的。
戊組教授面試和丁組教授面試的最後一個問題
在來交大面試前,跟幫自己寫推薦信的教授聊過一個話題:
面試只有 8分鐘,每個人會的技術教授不見得都會,要怎麼篩選學生 ?
例如說我主要學的是React.js,但交大主要是用Vue.js。幫我寫推薦信的教授也是用Vue.js,他就說要他來問React.js他也不知道要怎麼問,但問我Vue.js也怪怪的,因為我沒很熟Vue.js。可是會React.js的人學Vue.js基本上不會有太大困難。
很多人會說看作品集,但是戊組初試就有超過一半的人被刷掉,能進到複試的人,作品集一定都是豐富的。
最後幫我寫推薦信的教授是這樣跟我說的:
「 如果要我找做系統開發的學生的話,我會希望找有軟體設計思維的人。 」
所謂的軟體設計思維,就是MVC、MVVM、MVP、Design Pattern、clean code、SOLID這些跟架構有關的概念。
在這次丁戊組的教授面試最後,我都被問到了同樣的一個問題:
在過去做你經營的網站時,你覺得什麼是最困難的 ?
我的回答是這樣的:
「在過去我都是為了做出功能而寫程式。但因為這樣,你們看到這些一兩年前寫的專案雖然很穩定,但架構都寫得很爛。導致現在我想加功能的時候就覺得很痛苦,沒辦法、沒時間下手。然而這件事在最近會有一些改變,在這一兩年我學了軟體設計的知識、累積更多經驗後,現在我決定打算用XXX Pattern、XXX 架構、以及近年前端流行的XXX概念去重構這個專案程式碼,解決當初留下導致XXX的問題, 時辰會在XXX到XXX,你們可以在我專案Github Repo的XXX branch看到基礎的進度 ......」
天花亂墜講到一半的時候,時間就到了,我就直接結束我的回答,教授也不能多問。
會想提這個是因為我覺得這個回答方法還滿不錯的,表面上是在講遇到的困難,實質上一次告訴面試官我在這段時間學到了什麼事情、我會怎麼解決這個困難、我有軟體設計的思維、我真的有在做修正.....不過實際上有沒有加分我也不清楚就是了,搞不好人家只覺得我好吵。
所有的複試環節也在這裡結束了。
結語
以上是這次自己推甄交大資工碩丁戊組的一些紀錄,過程比想像中的快很多,剛面試完的時候還有點,「嗯? 結束了嗎?」 的那種空虛感。總之雖然不見得有用,還是希望上面的內容可以給未來的學弟妹一些幫助。感謝所有幫助鼓勵我的教授、學長、朋友。
最後的成績是這樣的,左邊是丁組,右邊是戊組,可以參考看看。


不過最近突然發生了一些事,所以我應該會選擇放棄 or 休學就是了。
Btw看完這篇你應該會想說,嗯? 我還是不知道你有啥經歷可以進戊組啊? 所以其實這篇是一個開場XD,我真正要說的是:
接下來的幾個月(或是一年內?),我想在這裡跟大家聊聊,一連串有關
「NCKU TRANS 成大轉系生心得平台」
的故事。雖然應該沒人看,我也不見得有空寫,但還是敬請期待囉~