2024 第二季面試 第一站 : 專案 ? 產品 ?
Table of Cotents
引言#
回顧我五年的工程師生涯,每段經歷都有其獨特的任務和挑戰,讓我在不斷成長和學習中積累了豐富的經驗。接下來又是下一段經歷的準備期,希望藉由撰寫此篇章能夠從準備其中更認識自己,找到下個目標。
實體面試#
很榮幸獲得了一間位於大安區人數約為10人公司的面試邀約。公司正在發展自有產品,找新職員的目的是擴編。產品內容是專門為土木工程營造石設計的管理系統,相當有趣。我本是土木系出身,同學大多在營造廠擔任主任等職位。因此理解工地要做系統化管理的困難度。困難點在於營造業雖有一定的流程,但會因應工地的條件去做變化,執行方向就會不同,沒有一定流程,對系統化而言是種挑戰。
實體面試流程#
-
自我/作品介紹 (技術主管)
面試者準備相關資料,面試時與技術主管介紹,途中會問一些問題,多是每個經歷的技術提問。
-
技術考試
此部分會寫在技術考試
-
人資面談
上份工作離職理由、為什麼選擇面試此份工作、期待薪資。
技術考試#
-
提出需求,立即設計出符合需求的資料庫結構
-
C# LINQ
-
JavaScript Event Loop
技術概念回顧#
此部分僅針對筆者當下技術上不夠清楚部分,進行釐清。
Bit flag#
Q : 如果今天要設計一個權限系統,你會如何設計 ?
筆者 :
Q : 如果這個 Permission 只能儲存一筆 user 的權限資料要如何改 ?
筆者 : 可以開 4個 prop, 例如 canReadstatus (bit)Q : 如果只用一個 prop 能不能做到 ?
筆者 : 用數字代表大於 等於 ?Ans : 你有聽過 C# Flag enums ?
什麼是 Flag enums ?#
假設現在我們有四個權限,分別是讀、寫、執行、分享。
如果用 Boolean 概念看,如下所示
讀 | 寫 | 執行 | 分享 | 二進位值 |
---|---|---|---|---|
1 | 0 | 0 | 0 | 8 |
0 | 1 | 0 | 0 | 4 |
這些數值可以轉為二進位,再用 C# 比較概念去撰寫以下程式碼,進而判斷權限,是不是很簡潔呢 ?
1 | Permissions readWrite = Permissions.Read | Permissions.Write; // 1100 = 12 |
參考資料 : C#: 位元旗標 (Bit flag) 與列舉
MSSQL DateTime 資料型別#
C# LINQ 延遲載入#
JavaScript Event Loop, Promise, microtask & macrotask#
個人回饋#
待補