這題為一個設計題,給了一個 Data Stream,希望設計一個 class 能夠支援連續的 operation,並找出該 Stream 目前的中位數。注意 Data Stream 中的 Data 是無序的且可以為負數,所以我們要做的第一件事是讓每一次 data 輸入進來,都要讓其有序。這裡介紹的解法十分巧妙,使用 maxHeap 和 minHeap 來解決問題,這樣中位數的計算便只要看 maxHeap 的最大值和 minHeap 的最小值來判斷。
Dockerfile 讓我們可以透過設定指令的方式,快速地更新和建構 Image 。由於 Dockerfile 中可以清楚的知道 Image 建構的過程和引用的 package 組成,因此在安全性上會有所提升;也因為是純文字檔,所以 size 很小、易於分享。Dockerfile 裡面有一些指令蠻容易混淆的,這次重點介紹:
- RUN
- CMD
- ENTRYPOINT
這三個指令都可以用來執行具體的命令,但其中又有些差異,以下做一些說明和整理。
這題給了我們一個無環有向圖 (directed acyclic graph)(DAG) 。有 N 個 node ,要找出所有可能的從
node 0
到node N-1
的路徑。像這種需要走到終點,且在每一次新的遞迴時,都要把當前路徑記錄下來,其本質都是深度遍歷 graph ,再加上 backtrack 回溯狀態。是經典的 dfs 的題目。
在 Cloud Firestore 中,存儲單位是 document 。document 是一個 lightweight record ,可包含 data 欄位 (稱: fields),也可以嵌套另一個 collection。 因為 terraform 的 google_firestore_document,要求 fields 的 format 要是 json string ,比想像中的難寫,在這邊簡單紀錄一下範例。
Linux 有多種流通版本,例如常見的 Ubuntu、Debian、CentOS、Fedora、Red Hat 等等,其中裡面預設的包管理系統也不太一樣。包管理系統可以安裝 package 、更新 package 、確保使用的 package 是經過審查的。 接下來淺淺的分析 apt 、 yum 、 apk 之間的差別。
Helm 是 kubernetes 的包管理工具。 Helm 有一個公共 Repository ,裏面主要都是配置文件,會把 Kubernetes 服務中各種元件 yaml ,統一打包成一個叫做 Chart 的模組,然後透過 value.yaml,可用來統一管理與設定 Kubernetes ,幫助 developer 和系統管理員,更輕鬆地部署、管理和升級 Kubernetes 中的應用程式。