文章

後端工程師面試考什麼 — Load Balancer vs. Reverse Proxy vs. API Gateway vs. HAProxy

後端工程師在日常工作或面試中,常常會遇到以下幾種技術與工具:

  • Load Balancer
  • Reverse Proxy
  • API Gateway
  • HAProxy

這些技術的共通點是它們都處於承載流量的第一線,但在用途上卻各有不同,因此容易產生混淆。

本文將釐清這些技術與工具的差異,以理解它們各自的功能與應用場景,避免常見的誤解。

Posted on  Sep 11, 2024  in  後端面試準備  by  Amo Chen  ‐ 5 min read

用 Python 學蒙地卡羅方法/模擬

如果說有一種方法能像奇異博士那樣看到 14,000,605 種未來,那大概就是蒙地卡羅方法了。

在接觸蒙地卡羅方法之前,我曾以為它是一種神奇的演算法。但深入了解後才發現,蒙地卡羅方法其實是一種簡單、直觀且實用的工具!

本文將介紹蒙地卡羅方法,並使用 Python 進行實際演練,從計算 π 值到模擬台股的長期投資,幫助大家從理論到實務全面掌握!

Posted on  Sep 9, 2024  in  Python 程式設計 - 初階  by  Amo Chen  ‐ 5 min read

DBSCAN 分群演算法介紹與實際應用範例

以前在開發 Chrome 擴充 NimoTab 時,有 1 個功能需要將相似/相同的網頁標題分群在一起,例如下圖:

nimotab-clustering.png

當時用的是土炮的方法(但其實類似 DBSCAN),不過後來跟從事機器學習的同事討教有沒有更好的做法時,才知道有 1 個稱為 DBSCAN 的演算法可以使用。

本文將介紹 DBSCAN 這個實用的分群演算法,並以實際範例展示如何做到將相似的資料分群在一起,藉此讓大家對 DBSCAN 有更深入的理解。

Posted on  Sep 2, 2024  in  演算法  by  Amo Chen  ‐ 7 min read

用 Python 實作 Floyd-Warshall 演算法:從最短路徑到尋找最便宜機票

Floyd-Warshall 演算法,又稱佛洛伊德演算法,主要用於找出圖(graph)中所有頂點之間的最短路徑,它也能用來偵測圖中是否存在閉環(cycle)。

本文將使用 Python 學習 Floyd-Warshall 演算法,並且以找出城市與城市之間最便宜機票組合作為應用範例,讓讀者對 Floyd-Warshall 演算法有深入的了解。

Posted on  Aug 16, 2024  in  Python 程式設計 - 初階 , 演算法  by  Amo Chen  ‐ 4 min read

Python aiomultiprocess 套件是如何運作的?

aiomultiprocess 是 1 個既實用又有趣的套件。

它實用的地方在於能將多個 coroutines 分散到多個 processes 執行(底層使用 multiprocessing 模組),藉此提升 asyncio 的效能。

而有趣的地方在於 multiprocessing 並不是 1 個 asynchronous 模組,而 aiomultiprocess 卻能將 multiprocessing 與 asyncio 整合在一起 ,著實相當有趣!

如果沒有相當的程式設計功力,其實也難以想像 aiomultiprocess 底層是如何實作的。因此本文將研究 aiomultiprocess 套件如何運作,以及如何整合 asyncio 與 multiprocessing 兩個模組的方法,揭開它的神秘面紗!

Posted on  Jul 31, 2024  in  Python 程式設計 - 高階  by  Amo Chen  ‐ 5 min read

後端工程師面試考什麼 — 從 Hashing 到 Consistent Hashing

分散式快取環境中,十分有可能會碰到需要找到對的 cache server 取得 cache 的情況,畢竟問錯 cache server 不僅拿不到 cache,還十分可能對後端資料庫造成壓力。

所以面試時如果有涉及快取系統架構的問題時,基本的 hashing 或者進階的 consistent hashing 也是必須了解的概念!

本文將介紹 Hashing 與 Consistent hashing 2 種技術,並以實際的 Python 程式碼揭開它們的神秘面紗!

Posted on  Jul 29, 2024  in  後端面試準備  by  Amo Chen  ‐ 7 min read

如何用 Python 組合指令工具(Command Line Tools)?

由於現代有著各式各樣方便的程式、指令工具可以使用,我們不見得需要從頭到尾自行開發,有時候藉由 Python 膠水語言的特性,我們可以輕鬆地整合各種程式、指令工具打造適合我們或者滿足我們需求的工具,不僅省時還省力!而且實務上,我們也很常利用 Python 撰寫整合各種指令工具的程式,以高效執行自動化或者系統管理等工作。

本文將介紹使用 Python 整合各種程式、指令工具的作法。

Posted on  Jul 26, 2024  in  Python 程式設計 - 中階  by  Amo Chen  ‐ 5 min read

後端工程師面試考什麼 — 限流機制 Rate Limiter

Rate limiter 是後端領域中常見的一項技術,用於限制特定時間內的請求數量,或者限制使用者特定時間內的請求數量。對於提供 API 服務的公司或服務來說,後端伺服器通常都會加上 rate limiter,以防止系統被過於頻繁地使用,從而提升系統的穩定性。

也因此,如果在面試有對外提供 API 服務的公司的後端工程師職缺時,有不小的機率會被問到如何保護 API 被過於頻繁的呼叫。

本文將介紹 4 種常見的 rate limiter 方法,並且實際以 Python 實作一遍,藉此加深我們對 rate limiter 的理解。

Posted on  Jul 22, 2024  in  後端面試準備  by  Amo Chen  ‐ 8 min read