前情提要 一直有在作程式相關的助教、導師相關的工作,有些學生的問題很棒,也是我的盲點。 沒有心思好好整理,至少記錄下來,給未來的自已一絲反芻機會。
問題 Express.js在業界的實用性如何? 優點和缺點是什麼? 有需要再學習第二種語言/框架嗎?,建議的選擇是? 算常見的 Nodejs 的 Web 框架,優點就是夠主流,資源好找。 缺點就太簡單。
語言/框架可以多學,自已判斷。不知道就先跟著公司或社群走。
參考文章10 Best Nodejs Frameworks for App Development in 2023
Google 關鍵字: Nodejs Web Framework 2023
思路:不論什麼樣的程式語言,我的本質是 Web 開發,不同的語言與框架有不同的場景,總不缺乏新的挑戰者, 可以觀望、研究、測試、入坑,沒有一定的正確的答案,能夠快速作出判斷與取捨是重要的,但這需要經驗。
2. 如果想要在自有主機上部署Express.js,比較適合搭配的web伺服器軟體是? 這裡的”web伺服器軟體”是指什麼? Nginx 或 Apache 嗎? 選擇適合的場景就好。目前業界主流是 Nginx,思路參考第一題
3. 樣板引擎在業界的使用度高嗎? 有使用的話會是在什麼情況呢? 有比較主流的選擇嗎? 還是大部分被前端框架取代了? 註:學生這裡指的是 express + handlebars 的開發方式 大部份都前後分離端了,維護舊案可以能會碰到。 樣板引擎主要會發生在 Web Form 這類的舊專案,主流可能是 Php 或 Asp.Net 的某些專案。 或是在 2010 很主流的 MVC 開發方式,這段時間各家語言也有自已的解決方案。
思路:理解為什麼會有前後端分離的發生,某些情況的小專案,樣板引擎的開發方式會比前後端分離有效率。
4. AC一個練習教案的規模,大概有幾十個到百個檔案要維護。實際業界專案的檔案數量應該更多,檔案間的關係複雜,維護人員要如何弄得清楚呢? 有沒有什麼比較好的管理工具? 檔案是指程式碼的部份嗎? 學會架構分層,基本就三層式架構、MVC、MVVM、MVP、MV* 等, 使用 OOP 語言的話可能也要依 Pattern 分層,現在比較流行 DDD、六角架構等… 再大一點會是微服務的情況。
思路:想一下檔案間的關係複雜,那你會怎麼作?基本上就是分門別類, 好的分類可以讓錯誤發生時可以快速定位、實作功能時可以職責分離。 舉個生活化的例子,就是像是整理你的房間。
5. 在前後端的協作中,如何決定一項功能應由前端製作或後端製作? 舉例來說,要加上分頁的功能,本質上只是資料的整理重排,這樣的功能應該由前端或後端做呢? Case by Case, 以我來說跟畫面有關的歸前端、其它歸後端。 分頁通常會由後端處理、但是有些情況前端也要處理。 Ex: 避免太頻繁的 request 到 Server,一次性回傳大量資料,由前端自行製作分頁。
思路:還是以需求為依歸、預設一個簡單的原則。團隊合作的話,最理想是團隊共識,次之由 Leader 決定,不要發生由某端強勢主導的情況。 舉例說明,欄位檢查,前後端都要作,前端的目的是引導使用者正確操作,後端是真正的防護。
6. 求職網站中許多職缺要求會其他程式語言如: C# or PHP,會建議再去學其他語言嗎? 有推薦的學習平台或課程? 我會想學 TypeScript、Python。 程式在 web 開發上有類似的作法,更多領域其實也需要程式人才, 例如:手機 App 開發、IoT 開發、AI 工程師等… 建議找一個自已可以生存的領域,專研打磨裡面的技術會建議 社群活動可以用來搜集關鍵字, Udemy 的課程很便宜,YT 也有很多大神的頻道可以學習。
思路:唯一的問題是學不完,怎麼整合應用變現,這個時候就不只是求職了,公司只是某一些技術棧整合的結果, 當你學的更多時,或許可以有別的出路?
7. 建議如何練習LeetCode? 才不會好像只是背答案,而不是懂背後的邏輯。有聽說 NeetCode 平台不錯用?不知道助教是否推薦 就是多刷多累績經驗,看題目、看答案。 兩個重點,把題目看懂、把答案看懂,試著把自已的思路轉化成程式 平台很多:NeetCode 、Leetcode 、Hackerrank
思路:助教用 TDD 刷 LeetCode,實務上蠻常遇到面試造火箭、入職擰螺絲的狀態, 但是仍然不知道要學什麼或作什麼樣的 Side Project 時,刷題是一個好的選擇。
8. Junior工程師除了準備作品集,LeetCode 與程式語言的觀念外,通常面試還會考什麼嗎? 我主要會問架構與流程題,如果能把自已開發的架構與流程說明清楚,就可以同時觀察到技術能力與溝通能力。
思路:常常去面試就會知道現在業界常問什麼了。
10. 職場上在開發專案時,後端工程師的實作範圍會是全部一手包辦還是還會細分工作?或者工作架構會是怎麼分配的? 看公司,建議去有分工的公司,一手包辦很可能會很雷,學到的可能也是一堆大泥球的作法
12. 除了現有AC課程之外,助教建議Junior後端工程師還需要提升哪方面的技術 掌握好版控與協作流程/自動化與容器化技術/實用精實的開發實踐
Git、Docker、AWS/Azure/GCP、K8S
TDD (BDD、ATDD)/ Refactoring /Design Pattern
13. 目前軟體業有受到景氣影響而減少職缺數嗎或停止招聘 國外有一波大裁員,有影響到,但台灣本身還好 至少我還好
14. 請問助教平常寫程式會如何結合AI加速開發,有建議相關課程嗎 Github Copilot+TDD
15. 網站若有多國語言版本,技術上要怎麼實作呢? 關鍵字i18n
1 2 3 4 5 6 7 8 { "tw" :{ "login" :"登入" }, "en" :{ "login" :"Login" } }
16. 手機版和電腦版的網站要怎麼分割呢? 我知道的兩種作法
結語 部份題目涉及專案內容,所以排除掉。 但是有關從無到有開發一個專案,或是與人合作開發專案,是整個職涯中會很常發生的事。 現在不作,以後也會遇到,可以儘量去嚐試。
(fin)